This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: uvcvideo: Refactor Power Line Frequency limit selection
Author:  Ricardo Ribalda <riba...@chromium.org>
Date:    Mon Jun 10 23:09:53 2024 +0000

Move the PLF mapping logic to its own mapping filter function. This
commit does not introduce any new functionality to the logic, it is just
a preparation patch.

Reviewed-by: Sergey Senozhatsky <senozhat...@chromium.org>
Signed-off-by: Ricardo Ribalda <riba...@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Reviewed-by: Ricardo Ribalda <riba...@chromium.org>

 drivers/media/usb/uvc/uvc_ctrl.c | 88 +++++++++++++++++++++++-----------------
 1 file changed, 50 insertions(+), 38 deletions(-)

---

diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index c619370f9afd..f5230cd14577 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -459,6 +459,51 @@ static void uvc_ctrl_set_rel_speed(struct 
uvc_control_mapping *mapping,
        data[first+1] = min_t(int, abs(value), 0xff);
 }
 
+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_mask      = GENMASK(V4L2_CID_POWER_LINE_FREQUENCY_60HZ,
+                                 V4L2_CID_POWER_LINE_FREQUENCY_50HZ),
+};
+
+const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11 = {
+       .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_mask      = GENMASK(V4L2_CID_POWER_LINE_FREQUENCY_60HZ,
+                                 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED),
+};
+
+static const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc15 = {
+       .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_mask      = GENMASK(V4L2_CID_POWER_LINE_FREQUENCY_AUTO,
+                                 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED),
+};
+
+static const struct uvc_control_mapping *uvc_ctrl_filter_plf_mapping(
+       struct uvc_video_chain *chain, struct uvc_control *ctrl)
+{
+       if (chain->dev->uvc_version < 0x150)
+               return &uvc_ctrl_power_line_mapping_uvc11;
+       else
+               return &uvc_ctrl_power_line_mapping_uvc15;
+}
+
 static const struct uvc_control_mapping uvc_ctrl_mappings[] = {
        {
                .id             = V4L2_CID_BRIGHTNESS,
@@ -748,51 +793,18 @@ static const struct uvc_control_mapping 
uvc_ctrl_mappings[] = {
                .v4l2_type      = V4L2_CTRL_TYPE_BOOLEAN,
                .data_type      = UVC_CTRL_DATA_TYPE_BOOLEAN,
        },
-};
-
-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_mask      = GENMASK(V4L2_CID_POWER_LINE_FREQUENCY_60HZ,
-                                 V4L2_CID_POWER_LINE_FREQUENCY_50HZ),
-};
-
-const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11 = {
-       .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_mask      = GENMASK(V4L2_CID_POWER_LINE_FREQUENCY_60HZ,
-                                 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED),
+       {
+               .entity         = UVC_GUID_UVC_PROCESSING,
+               .selector       = UVC_PU_POWER_LINE_FREQUENCY_CONTROL,
+               .filter_mapping = uvc_ctrl_filter_plf_mapping,
+       },
 };
 
 static const struct uvc_control_mapping *uvc_ctrl_mappings_uvc11[] = {
-       &uvc_ctrl_power_line_mapping_uvc11,
        NULL, /* Sentinel */
 };
 
-static const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc15 = {
-       .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_mask      = GENMASK(V4L2_CID_POWER_LINE_FREQUENCY_AUTO,
-                                 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED),
-};
-
 static const struct uvc_control_mapping *uvc_ctrl_mappings_uvc15[] = {
-       &uvc_ctrl_power_line_mapping_uvc15,
        NULL, /* Sentinel */
 };
 

Reply via email to