Hi Andy, Can you take a look at this git branch:
http://git.linuxtv.org/hverkuil/media_tree.git/shortlog/refs/heads/ivtvcx18 I've removed the exlusive open for radio devices for ivtv and cx18, and made some other improvements to ivtv as well. If you are OK with this, then I can post a pull request for this. Regards, Hans On Thursday, September 29, 2011 14:16:38 Andy Walls wrote: > All, > > I generally don't have a problem with this patch. However since ivtv and > cx18 are currently structured for exclusive open, this will impact folks who > use apps that open the radio nodes but change freq with a video node. > > The right fix for ivtv and cx18 is to fix the radio node to allow multiple > open. I won't have time to do that soon. > > Regards, > Andy > > Hans Verkuil <[email protected]> wrote: > > >As per feature-removal-schedule. > > > >If there are no comments, then I'll make a pull request in a few days. > > > >Regards, > > > > Hans > > > > > >For tuners the tuner type as passed by VIDIOC_S_FREQUENCY must match > >the > >type of the device node. So setting the radio frequency through a video > >node instead of the radio node is no longer allowed. > > > >This is now implemented as per the feature removal schedule. > > > >Signed-off-by: Hans Verkuil <[email protected]> > >--- > > .../DocBook/media/v4l/vidioc-g-frequency.xml | 5 ++++- > > Documentation/feature-removal-schedule.txt | 11 ----------- > > drivers/media/video/v4l2-ioctl.c | 9 ++++++++- > > 3 files changed, 12 insertions(+), 13 deletions(-) > > > >diff --git a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml > >b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml > >index 062d720..d18645c 100644 > >--- a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml > >+++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml > >@@ -99,7 +99,10 @@ the &v4l2-output; > ><structfield>modulator</structfield> field and the > > <entry><structfield>type</structfield></entry> > > <entry>The tuner type. This is the same value as in the > > &v4l2-tuner; <structfield>type</structfield> field. The field is not > >-applicable to modulators, &ie; ignored by drivers.</entry> > >+applicable to modulators, &ie; ignored by drivers. The tuner type must > >+match the type of the device node, &ie; you cannot specify > >V4L2_TUNER_RADIO > >+for a video/vbi device node or V4L2_TUNER_ANALOG_TV for a radio device > >node. > >+<errorcode>EINVAL</errorcode> will be returned in case of a > >mismatch.</entry> > > </row> > > <row> > > <entry>__u32</entry> > >diff --git a/Documentation/feature-removal-schedule.txt > >b/Documentation/feature-removal-schedule.txt > >index ead08f1..b0ed38c 100644 > >--- a/Documentation/feature-removal-schedule.txt > >+++ b/Documentation/feature-removal-schedule.txt > >@@ -530,17 +530,6 @@ Who: Hans de Goede <[email protected]> > > > > ---------------------------- > > > >-What: For VIDIOC_S_FREQUENCY the type field must match the device > >node's type. > >- If not, return -EINVAL. > >-When: 3.2 > >-Why: It makes no sense to switch the tuner to radio mode by calling > >- VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode > >by > >- calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of > >a > >- move to more consistent handling of tv and radio tuners. > >-Who: Hans Verkuil <[email protected]> > >- > >----------------------------- > >- > >What: Opening a radio device node will no longer automatically switch > >the > > tuner mode from tv to radio. > > When: 3.3 > >diff --git a/drivers/media/video/v4l2-ioctl.c > >b/drivers/media/video/v4l2-ioctl.c > >index 21c49dc..4004b77 100644 > >--- a/drivers/media/video/v4l2-ioctl.c > >+++ b/drivers/media/video/v4l2-ioctl.c > >@@ -1757,6 +1757,8 @@ static long __video_do_ioctl(struct file *file, > > case VIDIOC_S_FREQUENCY: > > { > > struct v4l2_frequency *p = arg; > >+ enum v4l2_tuner_type type = (vfd->vfl_type == VFL_TYPE_RADIO) ? > >+ V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV; > > > > if (!ops->vidioc_s_frequency) > > break; > >@@ -1766,7 +1768,12 @@ static long __video_do_ioctl(struct file *file, > > } > > dbgarg(cmd, "tuner=%d, type=%d, frequency=%d\n", > > p->tuner, p->type, p->frequency); > >- ret = ops->vidioc_s_frequency(file, fh, p); > >+ /* type is ignored for modulators, so only do this check > >+ if there is no modulator support. */ > >+ if (ops->vidioc_s_modulator == NULL && type != p->type) > >+ ret = -EINVAL; > >+ else > >+ ret = ops->vidioc_s_frequency(file, fh, p); > > break; > > } > > case VIDIOC_G_SLICED_VBI_CAP: > _______________________________________________ ivtv-devel mailing list [email protected] http://ivtvdriver.org/mailman/listinfo/ivtv-devel
