* [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency
@ 2022-06-15 15:12 Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 1/8] media: uvcvideo: Add missing value for power_line_frequency Ricardo Ribalda
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
Hello,
This series is a new version of "[PATCH v3 0/7] uvcvideo: Fix handling
of power_line_frequency", with an attempt to generalize the
UVC_QUIRK_LIMITED_POWERLINE quirk that it introduced and turn it into a
control mappings override mechanism.
The goal is still to support the UVC 1.5 power line frequency control
extra option (patch 1/7), and work around an issue with devices that do
not implement support for disabling the power line frequency (patches
2/7 to 7/7).
Changelog v8:
- Add support for per-device control mapping overrides
Fix invalid memory access
- Support minimum for V4L2_CTRL_TYPE_MENU
New patch
- Limit power line control for Quanta UVC Webcam
Fix id
Ricardo Ribalda (8):
media: uvcvideo: Add missing value for power_line_frequency
media: uvcvideo: Add support for per-device control mapping overrides
media: uvcvideo: Support minimum for V4L2_CTRL_TYPE_MENU
media: uvcvideo: Limit power line control for Quanta UVC Webcam
media: uvcvideo: Limit power line control for Chicony Easycamera
media: uvcvideo: Limit power line control for Chicony Easycamera
media: uvcvideo: Limit power line control for Quanta cameras
media: uvcvideo: Limit power line control for Acer EasyCamera
drivers/media/usb/uvc/uvc_ctrl.c | 87 ++++++++++++++++++++++++-----
drivers/media/usb/uvc/uvc_driver.c | 89 ++++++++++++++++++++++++++++++
drivers/media/usb/uvc/uvcvideo.h | 2 +
3 files changed, 163 insertions(+), 15 deletions(-)
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v6 1/8] media: uvcvideo: Add missing value for power_line_frequency
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 2/8] media: uvcvideo: Add support for per-device control mapping overrides Ricardo Ribalda
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
UVC 1.5 class defines 4 values for this control on:
4.2.2.3.6 Power Line Frequency Control
Add the missing value when the UVC version is 1.5.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_ctrl.c | 56 +++++++++++++++++++++++++-------
1 file changed, 45 insertions(+), 11 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index 0e78233fc8a0..a709ebbb4d69 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -366,6 +366,7 @@ static const struct uvc_menu_info power_line_frequency_controls[] = {
{ 0, "Disabled" },
{ 1, "50 Hz" },
{ 2, "60 Hz" },
+ { 3, "Auto" },
};
static const struct uvc_menu_info exposure_auto_controls[] = {
@@ -504,17 +505,6 @@ static const struct uvc_control_mapping uvc_ctrl_mappings[] = {
.v4l2_type = V4L2_CTRL_TYPE_INTEGER,
.data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
},
- {
- .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,
- .menu_count = ARRAY_SIZE(power_line_frequency_controls),
- },
{
.id = V4L2_CID_HUE_AUTO,
.entity = UVC_GUID_UVC_PROCESSING,
@@ -730,6 +720,34 @@ static const struct uvc_control_mapping uvc_ctrl_mappings[] = {
},
};
+static const struct uvc_control_mapping uvc_ctrl_mappings_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_info = power_line_frequency_controls,
+ .menu_count = ARRAY_SIZE(power_line_frequency_controls) - 1,
+ },
+};
+
+static const struct uvc_control_mapping uvc_ctrl_mappings_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_info = power_line_frequency_controls,
+ .menu_count = ARRAY_SIZE(power_line_frequency_controls),
+ },
+};
+
/* ------------------------------------------------------------------------
* Utility functions
*/
@@ -2415,6 +2433,22 @@ static void uvc_ctrl_init_ctrl(struct uvc_video_chain *chain,
if (!ctrl->initialized)
return;
+ /* Process common mappings first. */
+ for (; mapping < mend; ++mapping) {
+ if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
+ ctrl->info.selector == mapping->selector)
+ __uvc_ctrl_add_mapping(chain, ctrl, mapping);
+ }
+
+ /* And then version-specific mappings. */
+ if (chain->dev->uvc_version < 0x0150) {
+ mapping = uvc_ctrl_mappings_uvc11;
+ mend = mapping + ARRAY_SIZE(uvc_ctrl_mappings_uvc11);
+ } else {
+ mapping = uvc_ctrl_mappings_uvc15;
+ mend = mapping + ARRAY_SIZE(uvc_ctrl_mappings_uvc15);
+ }
+
for (; mapping < mend; ++mapping) {
if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
ctrl->info.selector == mapping->selector)
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 2/8] media: uvcvideo: Add support for per-device control mapping overrides
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 1/8] media: uvcvideo: Add missing value for power_line_frequency Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 3/8] media: uvcvideo: Support minimum for V4L2_CTRL_TYPE_MENU Ricardo Ribalda
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
Some devices do not implement all their controls in a way that complies
with the UVC specification. This is for instance the case for several
devices that do not support the disabled mode for the power line
frequency control. Add a mechanism to allow per-device control mapping
overrides to avoid errors when accessing non-compliant controls.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_ctrl.c | 35 ++++++++++++++++++++++++++------
drivers/media/usb/uvc/uvcvideo.h | 1 +
2 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index a709ebbb4d69..092decfdaa62 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -2403,9 +2403,8 @@ static void uvc_ctrl_init_ctrl(struct uvc_video_chain *chain,
{
const struct uvc_control_info *info = uvc_ctrls;
const struct uvc_control_info *iend = info + ARRAY_SIZE(uvc_ctrls);
- const struct uvc_control_mapping *mapping = uvc_ctrl_mappings;
- const struct uvc_control_mapping *mend =
- mapping + ARRAY_SIZE(uvc_ctrl_mappings);
+ const struct uvc_control_mapping *mapping;
+ const struct uvc_control_mapping *mend;
/* XU controls initialization requires querying the device for control
* information. As some buggy UVC devices will crash when queried
@@ -2433,14 +2432,38 @@ static void uvc_ctrl_init_ctrl(struct uvc_video_chain *chain,
if (!ctrl->initialized)
return;
- /* Process common mappings first. */
- for (; mapping < mend; ++mapping) {
+ /*
+ * First check if the device provides a custom mapping for this control,
+ * used to override standard mappings for non-conformant devices. Don't
+ * process standard mappings if a custom mapping is found. This
+ * mechanism doesn't support combining standard and custom mappings for
+ * a single control.
+ */
+ if (chain->dev->info->mappings) {
+ bool custom = false;
+ unsigned int i;
+
+ for (i = 0; (mapping = chain->dev->info->mappings[i]); ++i) {
+ if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
+ ctrl->info.selector == mapping->selector) {
+ __uvc_ctrl_add_mapping(chain, ctrl, mapping);
+ custom = true;
+ }
+ }
+
+ if (custom)
+ return;
+ }
+
+ /* Process common mappings next. */
+ mend = mapping + ARRAY_SIZE(uvc_ctrl_mappings);
+ for (mapping = uvc_ctrl_mappings; mapping < mend; ++mapping) {
if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
ctrl->info.selector == mapping->selector)
__uvc_ctrl_add_mapping(chain, ctrl, mapping);
}
- /* And then version-specific mappings. */
+ /* Finally process version-specific mappings. */
if (chain->dev->uvc_version < 0x0150) {
mapping = uvc_ctrl_mappings_uvc11;
mend = mapping + ARRAY_SIZE(uvc_ctrl_mappings_uvc11);
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index c5b4febd2d94..fff5c5c99a3d 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -667,6 +667,7 @@ struct uvc_device_info {
u32 quirks;
u32 meta_format;
u16 uvc_version;
+ const struct uvc_control_mapping **mappings;
};
struct uvc_device {
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 3/8] media: uvcvideo: Support minimum for V4L2_CTRL_TYPE_MENU
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 1/8] media: uvcvideo: Add missing value for power_line_frequency Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 2/8] media: uvcvideo: Add support for per-device control mapping overrides Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 4/8] media: uvcvideo: Limit power line control for Quanta UVC Webcam Ricardo Ribalda
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
Currently all mappings of type V4L2_CTRL_TYPE_MENU, have a minimum of 0,
but there are some controls (limited powerline), that start with a value
different than 0.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
drivers/media/usb/uvc/uvc_ctrl.c | 2 +-
drivers/media/usb/uvc/uvcvideo.h | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index 092decfdaa62..0d89d239e881 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -1144,7 +1144,7 @@ static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain,
switch (mapping->v4l2_type) {
case V4L2_CTRL_TYPE_MENU:
- v4l2_ctrl->minimum = 0;
+ v4l2_ctrl->minimum = mapping->menu_min;
v4l2_ctrl->maximum = mapping->menu_count - 1;
v4l2_ctrl->step = 1;
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index fff5c5c99a3d..6ceb7f7b964d 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -254,6 +254,7 @@ struct uvc_control_mapping {
u32 data_type;
const struct uvc_menu_info *menu_info;
+ u32 menu_min;
u32 menu_count;
u32 master_id;
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 4/8] media: uvcvideo: Limit power line control for Quanta UVC Webcam
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
` (2 preceding siblings ...)
2022-06-15 15:12 ` [PATCH v6 3/8] media: uvcvideo: Support minimum for V4L2_CTRL_TYPE_MENU Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 5/8] media: uvcvideo: Limit power line control for Chicony Easycamera Ricardo Ribalda
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
The device does not implement the power line control correctly. Add a
corresponding control mapping override.
Bus 001 Device 003: ID 0408:3090 Quanta Computer, Inc. USB2.0 HD UVC WebCam
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0408 Quanta Computer, Inc.
idProduct 0x3090
bcdDevice 0.04
iManufacturer 3 Quanta
iProduct 1 USB2.0 HD UVC WebCam
iSerial 2 0x0001
bNumConfigurations 1
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_driver.c | 35 ++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 6c86faecbea2..4fb07084f1c0 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2643,6 +2643,32 @@ MODULE_PARM_DESC(timeout, "Streaming control requests timeout");
* Driver initialization and cleanup
*/
+static const struct uvc_menu_info power_line_frequency_controls_limited[] = {
+ { 0, "Invalid" },
+ { 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_min = 1,
+ .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,
+ NULL, /* Sentinel */
+ },
+};
+
static const struct uvc_device_info uvc_quirk_probe_minmax = {
.quirks = UVC_QUIRK_PROBE_MINMAX,
};
@@ -2673,6 +2699,15 @@ static const struct uvc_device_info uvc_quirk_force_y8 = {
* though they are compliant.
*/
static const struct usb_device_id uvc_ids[] = {
+ /* Quanta USB2.0 HD UVC Webcam */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x0408,
+ .idProduct = 0x3090,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
/* LogiLink Wireless Webcam */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 5/8] media: uvcvideo: Limit power line control for Chicony Easycamera
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
` (3 preceding siblings ...)
2022-06-15 15:12 ` [PATCH v6 4/8] media: uvcvideo: Limit power line control for Quanta UVC Webcam Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 6/8] " Ricardo Ribalda
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
Two different Easycamera devices do not implement the power line control
correctly. Add a corresponding control mapping override.
Bus 001 Device 003: ID 04f2:b6ba Chicony Electronics Co., Ltd EasyCamera
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x04f2 Chicony Electronics Co., Ltd
idProduct 0xb6ba
bcdDevice 10.70
iManufacturer 3 Chicony Electronics Co.,Ltd.
iProduct 1 EasyCamera
iSerial 2 0001
bNumConfigurations 1
Bus 001 Device 003: ID 04f2:b746 Chicony Electronics Co., Ltd EasyCamera
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x04f2 Chicony Electronics Co., Ltd
idProduct 0xb746
bcdDevice 97.57
iManufacturer 3 Chicony Electronics Co.,Ltd.
iProduct 1 EasyCamera
iSerial 2 0001
bNumConfigurations 1
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_driver.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 4fb07084f1c0..5b8a71a9edfb 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2819,6 +2819,24 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE) },
+ /* Chicony EasyCamera */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x04f2,
+ .idProduct = 0xb6ba,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
+ /* Chicony EasyCamera */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x04f2,
+ .idProduct = 0xb746,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
/* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 6/8] media: uvcvideo: Limit power line control for Chicony Easycamera
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
` (4 preceding siblings ...)
2022-06-15 15:12 ` [PATCH v6 5/8] media: uvcvideo: Limit power line control for Chicony Easycamera Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 7/8] media: uvcvideo: Limit power line control for Quanta cameras Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 8/8] media: uvcvideo: Limit power line control for Acer EasyCamera Ricardo Ribalda
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
Another Chicony camera device does not implement the power line control
correctly. Add a corresponding control mapping override.
Bus 001 Device 003: ID 04f2:b5eb Chicony Electronics Co., Ltd EasyCamera
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x04f2 Chicony Electronics Co., Ltd
idProduct 0xb5eb
bcdDevice 90.45
iManufacturer 3 Chicony Electronics Co.,Ltd.
iProduct 1 EasyCamera
iSerial 2 0001
bNumConfigurations 1
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 5b8a71a9edfb..d21de83021f5 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2820,6 +2820,15 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE) },
/* Chicony EasyCamera */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x04f2,
+ .idProduct = 0xb5eb,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
+ /* Chicony EasyCamera */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
.idVendor = 0x04f2,
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 7/8] media: uvcvideo: Limit power line control for Quanta cameras
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
` (5 preceding siblings ...)
2022-06-15 15:12 ` [PATCH v6 6/8] " Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 8/8] media: uvcvideo: Limit power line control for Acer EasyCamera Ricardo Ribalda
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
Two more cameras do not implement the power line control correctly. Add
a corresponding control mapping override.
Bus 001 Device 003: ID 0408:4034 Quanta Computer, Inc. ACER HD User Facing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.01
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0408 Quanta Computer, Inc.
idProduct 0x4034
bcdDevice 0.01
iManufacturer 1 Quanta
iProduct 2 ACER HD User Facing
iSerial 3 01.00.00
bNumConfigurations 1
Bus 001 Device 003: ID 0408:4030 Quanta Computer, Inc. HD User Facing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.01
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0408 Quanta Computer, Inc.
idProduct 0x4030
bcdDevice 0.02
iManufacturer 1 Quanta
iProduct 2 HD User Facing
iSerial 3 01.00.00
bNumConfigurations 1
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_driver.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index d21de83021f5..a862a9d6a2fd 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2708,6 +2708,24 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
+ /* Quanta USB2.0 HD UVC Webcam */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x0408,
+ .idProduct = 0x4030,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 1,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
+ /* Quanta USB2.0 HD UVC Webcam */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x0408,
+ .idProduct = 0x4034,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
/* LogiLink Wireless Webcam */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 8/8] media: uvcvideo: Limit power line control for Acer EasyCamera
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
` (6 preceding siblings ...)
2022-06-15 15:12 ` [PATCH v6 7/8] media: uvcvideo: Limit power line control for Quanta cameras Ricardo Ribalda
@ 2022-06-15 15:12 ` Ricardo Ribalda
7 siblings, 0 replies; 9+ messages in thread
From: Ricardo Ribalda @ 2022-06-15 15:12 UTC (permalink / raw)
To: Laurent Pinchart, Mauro Carvalho Chehab, linux-media,
linux-kernel, tfiga, senozhatsky, yunkec
Cc: Ricardo Ribalda
The device does not implement the power line control correctly. Add a
corresponding control mapping override.
Bus 001 Device 003: ID 5986:1172 Acer, Inc EasyCamera
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x5986 Acer, Inc
idProduct 0x1172
bcdDevice 56.04
iManufacturer 3 Bison
iProduct 1 EasyCamera
iSerial 2
bNumConfigurations 1
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index a862a9d6a2fd..6d34992032e6 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -3248,6 +3248,15 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP) },
+ /* Acer EasyCamera */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x5986,
+ .idProduct = 0x1172,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
/* Intel RealSense D4M */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
--
2.36.1.476.g0c4daa206d-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-06-15 15:15 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-15 15:12 [PATCH v6 0/8] uvcvideo: Fix handling of power_line_frequency Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 1/8] media: uvcvideo: Add missing value for power_line_frequency Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 2/8] media: uvcvideo: Add support for per-device control mapping overrides Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 3/8] media: uvcvideo: Support minimum for V4L2_CTRL_TYPE_MENU Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 4/8] media: uvcvideo: Limit power line control for Quanta UVC Webcam Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 5/8] media: uvcvideo: Limit power line control for Chicony Easycamera Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 6/8] " Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 7/8] media: uvcvideo: Limit power line control for Quanta cameras Ricardo Ribalda
2022-06-15 15:12 ` [PATCH v6 8/8] media: uvcvideo: Limit power line control for Acer EasyCamera Ricardo Ribalda
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.