| From 2d12178d76ff5bd098048f4484f8829d0df16e9c Mon Sep 17 00:00:00 2001 |
| From: Ricardo Ribalda <ribalda@chromium.org> |
| Date: Fri, 25 Mar 2022 14:20:14 +0000 |
| Subject: [PATCH] CHROMIUM: Remove UVC_QUIRK_REINIT_ROI |
| |
| So far, all the devices seem to be erroneous initialized, so if we need |
| to make a quirk, it should be for properly implemented hardware. |
| |
| BUG=b:226903142 |
| TEST=v4l2-compliance on brya |
| |
| Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> |
| Change-Id: I9b678b350d7b4d16ac807047bf51552145e0be5d |
| Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3550473 |
| Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> |
| Commit-Queue: Sergey Senozhatsky <senozhatsky@chromium.org> |
| Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3562992 |
| --- |
| drivers/media/usb/uvc/uvc_ctrl.c | 11 ++++----- |
| drivers/media/usb/uvc/uvc_driver.c | 36 ------------------------------ |
| drivers/media/usb/uvc/uvcvideo.h | 1 - |
| 3 files changed, 4 insertions(+), 44 deletions(-) |
| |
| diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c |
| index ed823f8f32f341ecec96c05e6692a9b760700ff1..0b4e581efd9401882fa75bfd04ffb080b6712f13 100644 |
| --- a/drivers/media/usb/uvc/uvc_ctrl.c |
| +++ b/drivers/media/usb/uvc/uvc_ctrl.c |
| @@ -2599,15 +2599,9 @@ static void uvc_ctrl_prune_entity(struct uvc_device *dev, |
| |
| static int uvc_ctrl_init_roi(struct uvc_device *dev, struct uvc_control *ctrl) |
| { |
| - const u8 entity[16] = UVC_GUID_UVC_CAMERA; |
| struct uvc_roi *def; |
| int ret; |
| |
| - if (ctrl->info.selector != UVC_CT_REGION_OF_INTEREST_CONTROL || |
| - !uvc_entity_match_guid(ctrl->entity, entity) || |
| - !(dev->quirks & UVC_QUIRK_REINIT_ROI)) |
| - return 0; |
| - |
| if (WARN_ON(sizeof(struct uvc_roi) != ctrl->info.size)) |
| return -EINVAL; |
| |
| @@ -2681,6 +2675,7 @@ static void uvc_ctrl_init_ctrl(struct uvc_video_chain *chain, |
| { |
| const struct uvc_control_mapping **mappings; |
| unsigned int i; |
| + const u8 camera_entity[16] = UVC_GUID_UVC_CAMERA; |
| |
| /* |
| * XU controls initialization requires querying the device for control |
| @@ -2704,7 +2699,9 @@ static void uvc_ctrl_init_ctrl(struct uvc_video_chain *chain, |
| * GET_INFO on standard controls. |
| */ |
| uvc_ctrl_get_flags(chain->dev, ctrl, &ctrl->info); |
| - uvc_ctrl_init_roi(chain->dev, ctrl); |
| + if (ctrl->info.selector == UVC_CT_REGION_OF_INTEREST_CONTROL && |
| + uvc_entity_match_guid(ctrl->entity, camera_entity)) |
| + uvc_ctrl_init_roi(chain->dev, ctrl); |
| break; |
| } |
| } |
| diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c |
| index b5e21aa1ad3387024adcd7da44fa5e919562341f..f6c4b5bedb4f4b352276c55310832169943191e7 100644 |
| --- a/drivers/media/usb/uvc/uvc_driver.c |
| +++ b/drivers/media/usb/uvc/uvc_driver.c |
| @@ -2459,24 +2459,6 @@ static const struct uvc_device_info uvc_quirk_force_y8 = { |
| * though they are compliant. |
| */ |
| static const struct usb_device_id uvc_ids[] = { |
| - /* Quanta Computer, Inc. USB2.0 HD UVC WebCam */ |
| - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
| - | USB_DEVICE_ID_MATCH_INT_INFO, |
| - .idVendor = 0x0408, |
| - .idProduct = 0x30d2, |
| - .bInterfaceClass = USB_CLASS_VIDEO, |
| - .bInterfaceSubClass = 1, |
| - .bInterfaceProtocol = 0, |
| - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_REINIT_ROI) }, |
| - /* Quanta Computer, Inc. HD User Facing */ |
| - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
| - | USB_DEVICE_ID_MATCH_INT_INFO, |
| - .idVendor = 0x0408, |
| - .idProduct = 0xa092, |
| - .bInterfaceClass = USB_CLASS_VIDEO, |
| - .bInterfaceSubClass = 1, |
| - .bInterfaceProtocol = 0, |
| - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_REINIT_ROI) }, |
| /* Quanta USB2.0 HD UVC Webcam */ |
| { .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
| | USB_DEVICE_ID_MATCH_INT_INFO, |
| @@ -2824,24 +2806,6 @@ static const struct usb_device_id uvc_ids[] = { |
| .bInterfaceSubClass = 1, |
| .bInterfaceProtocol = 0, |
| .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid }, |
| - /* IMC Networks USB2.0 HD UVC WebCam */ |
| - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
| - | USB_DEVICE_ID_MATCH_INT_INFO, |
| - .idVendor = 0x13d3, |
| - .idProduct = 0x5463, |
| - .bInterfaceClass = USB_CLASS_VIDEO, |
| - .bInterfaceSubClass = 1, |
| - .bInterfaceProtocol = 0, |
| - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_REINIT_ROI) }, |
| - /* IMC Networks USB2.0 HD UVC WebCam */ |
| - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
| - | USB_DEVICE_ID_MATCH_INT_INFO, |
| - .idVendor = 0x13d3, |
| - .idProduct = 0x56ec, |
| - .bInterfaceClass = USB_CLASS_VIDEO, |
| - .bInterfaceSubClass = 1, |
| - .bInterfaceProtocol = 0, |
| - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_REINIT_ROI) }, |
| /* JMicron USB2.0 XGA WebCam */ |
| { .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
| | USB_DEVICE_ID_MATCH_INT_INFO, |
| diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h |
| index 0f6ce6969fc8eb92bb0f70c7c631c9ee27956bc9..db7ac236564cd28a6178ab96e88b8dc765062af6 100644 |
| --- a/drivers/media/usb/uvc/uvcvideo.h |
| +++ b/drivers/media/usb/uvc/uvcvideo.h |
| @@ -74,7 +74,6 @@ |
| #define UVC_QUIRK_FORCE_BPP 0x00001000 |
| #define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000 |
| #define UVC_QUIRK_PRIVACY_DURING_STREAM 0x00004000 |
| -#define UVC_QUIRK_REINIT_ROI 0x80000000 |
| |
| /* Format flags */ |
| #define UVC_FMT_FLAG_COMPRESSED 0x00000001 |
| -- |
| 2.34.1 |
| |