blob: 7285a900272438456febdca2f95d86b0da782b11 [file] [log] [blame]
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