Hello,

On Tue, Apr 02, 2019 at 01:13:16PM +0300, Sakari Ailus wrote:
> On Sun, Mar 17, 2019 at 01:01:25PM -0400, dorod...@gmail.com wrote:
> > From: Sergey Dorodnicov <sergey.dorodni...@intel.com>
> > 
> > Section 4.2.2.3.6 of the USB Device Class Definition for Video Devices,
> > specifies "Auto" as a valid value for the power line frequency control.
> > This makes uvcvideo module consistent with control definition inside
> > /drivers/media/v4l2-core/v4l2-ctrls.c:
> > camera_power_line_frequency[] = {
> >     "Disabled",
> >     "50 Hz",
> >     "60 Hz",
> >     "Auto",
> > 
> > Signed-off-by: Sergey Dorodnicov <sergey.dorodni...@intel.com>
> > Signed-off-by: Evgeni Raikhel <evgeni.raik...@intel.com>
> > ---
> >  drivers/media/usb/uvc/uvc_ctrl.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/media/usb/uvc/uvc_ctrl.c 
> > b/drivers/media/usb/uvc/uvc_ctrl.c
> > index 14cff91..a85910a 100644
> > --- a/drivers/media/usb/uvc/uvc_ctrl.c
> > +++ b/drivers/media/usb/uvc/uvc_ctrl.c
> > @@ -358,6 +358,7 @@ static const struct uvc_menu_info 
> > power_line_frequency_controls[] = {
> >     { 0, "Disabled" },
> >     { 1, "50 Hz" },
> >     { 2, "60 Hz" },
> > +   { 3, "Auto" },
> 
> The auto option appears to have been added by UVC 1.5, so the menu entry
> may only be available for such devices.

That's correct. The power_line_frequency_controls array can always
contain the auto entry, but its availability should be conditioned on
the UVC protocol version. The PU_POWER_LINE_FREQUENCY_CONTROL control
unfortunately doesn't support GET_MAX, so we can't get the information
in a generic way by querying the control.

One option to keep the code generic would be to add protocol version
information to the uvc_control_mapping structure, to condition control
information on the protocol version. It could take the form of a [min,
max] version range for instance. Entries that don't set the min and max
versions would be applicable to all versions.

> 
> >  };
> >  
> >  static const struct uvc_menu_info exposure_auto_controls[] = {

-- 
Regards,

Laurent Pinchart

Reply via email to