On Sunday, June 12, 2011 16:36:11 Mauro Carvalho Chehab wrote: > Em 12-06-2011 07:59, Hans Verkuil escreveu: > > From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > > > > The subdevs are supposed to receive a valid tuner type for the g_frequency > > and g/s_tuner subdev ops. Some drivers do this, others don't. So prefill > > this in v4l2-ioctl.c based on whether the device node from which this is > > called is a radio node or not. > > > > The spec does not require applications to fill in the type, and if they > > leave it at 0 then the 'supported_mode' call in tuner-core.c will return > > false and the ioctl does nothing. > > Interesting solution. Yes, this is the proper fix, but only after being sure > that no drivers allow switch to radio using the video device, and vice-versa. Why would that be a problem? What this patch does is that it fixes those drivers that do *not* set vf/vt->type (i.e. leave it at 0). For those that already set it nothing changes. > Unfortunately, this is not the case, currently. > > Most drivers allow this, following the previous V4L2 specs. Changing such > behavior will probably require to write something at > Documentation/feature-removal-schedule.txt, as we're changing the behavior. I think in the longer term we need to change the spec so that: 1) Opening a radio node no longer switches to radio mode. Instead, you need to call VIDIOC_S_FREQUENCY for that. 2) When VIDIOC_S_FREQUENCY the type field should match the video/radio node it is called on. So for /dev/radio type should be RADIO, for others it should be ANALOG_TV. Otherwise -EINVAL is called. So this might be a good feature removal for 3.2 or 3.3. Regards, Hans -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html