Hi Ricardo, Thank you for the patch. On Tue, Jan 03, 2023 at 12:01:23PM +0100, Ricardo Ribalda wrote: > Move the control mapping to uvc_ctrl.c. This way we do not have > references to uvc controls or v4l2 controls in uvc_driver.c s/uvc/UVC/ s/v4l2/V4L2/ > Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx> > --- > drivers/media/usb/uvc/uvc_ctrl.c | 17 +++++++++++++++++ > drivers/media/usb/uvc/uvc_driver.c | 17 ----------------- > drivers/media/usb/uvc/uvcvideo.h | 1 + This conflicts quite badly with 8/8 from your v4l2-compliance series. Could you rebase one of top of the other and resend the two patches as one series, on top of https://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux.git/log/?h=next/uvc ? > 3 files changed, 18 insertions(+), 17 deletions(-) > > diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c > index d8283d71bc96..4ff0415d8bf4 100644 > --- a/drivers/media/usb/uvc/uvc_ctrl.c > +++ b/drivers/media/usb/uvc/uvc_ctrl.c > @@ -370,6 +370,11 @@ static const struct uvc_menu_info power_line_frequency_controls[] = { > { 3, "Auto" }, > }; > > +static const struct uvc_menu_info power_line_frequency_controls_limited[] = { > + { 1, "50 Hz" }, > + { 2, "60 Hz" }, > +}; > + > static const struct uvc_menu_info exposure_auto_controls[] = { > { 2, "Auto Mode" }, > { 1, "Manual Mode" }, > @@ -751,6 +756,18 @@ static const struct uvc_control_mapping uvc_ctrl_mappings_uvc15[] = { > }, > }; > > +const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited = { > + .id = V4L2_CID_POWER_LINE_FREQUENCY, > + .entity = UVC_GUID_UVC_PROCESSING, > + .selector = UVC_PU_POWER_LINE_FREQUENCY_CONTROL, > + .size = 2, > + .offset = 0, > + .v4l2_type = V4L2_CTRL_TYPE_MENU, > + .data_type = UVC_CTRL_DATA_TYPE_ENUM, > + .menu_info = power_line_frequency_controls_limited, > + .menu_count = ARRAY_SIZE(power_line_frequency_controls_limited), > +}; > + > /* ------------------------------------------------------------------------ > * Utility functions > */ > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index 9c09bc988278..6531aed5d642 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -2377,23 +2377,6 @@ static const struct uvc_device_info uvc_ctrl_power_line_uvc11 = { > }, > }; > > -static const struct uvc_menu_info power_line_frequency_controls_limited[] = { > - { 1, "50 Hz" }, > - { 2, "60 Hz" }, > -}; > - > -static const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited = { > - .id = V4L2_CID_POWER_LINE_FREQUENCY, > - .entity = UVC_GUID_UVC_PROCESSING, > - .selector = UVC_PU_POWER_LINE_FREQUENCY_CONTROL, > - .size = 2, > - .offset = 0, > - .v4l2_type = V4L2_CTRL_TYPE_MENU, > - .data_type = UVC_CTRL_DATA_TYPE_ENUM, > - .menu_info = power_line_frequency_controls_limited, > - .menu_count = ARRAY_SIZE(power_line_frequency_controls_limited), > -}; > - > static const struct uvc_device_info uvc_ctrl_power_line_limited = { > .mappings = (const struct uvc_control_mapping *[]) { > &uvc_ctrl_power_line_mapping_limited, > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h > index bcb0b0c101c8..818ae7a6f9b9 100644 > --- a/drivers/media/usb/uvc/uvcvideo.h > +++ b/drivers/media/usb/uvc/uvcvideo.h > @@ -728,6 +728,7 @@ int uvc_status_start(struct uvc_device *dev, gfp_t flags); > void uvc_status_stop(struct uvc_device *dev); > > /* Controls */ > +extern const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited; > extern const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11; > extern const struct v4l2_subscribed_event_ops uvc_ctrl_sub_ev_ops; > -- Regards, Laurent Pinchart