* [PATCH 0/2] media: uvcvideo: Enable keep-sorted
@ 2025-04-29 13:47 Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted Ricardo Ribalda
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Ricardo Ribalda @ 2025-04-29 13:47 UTC (permalink / raw)
To: Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab
Cc: Hans Verkuil, linux-media, linux-kernel, Ricardo Ribalda
When committers contribute quirks to the uvc driver, they usually add
them out of order.
We can automatically validate that their follow our guidelines with the
use of keep-sorted.
This patchset adds support for keep-sorted in the uvc driver. The two
patches can be squashed if needed.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
Ricardo Ribalda (2):
media: uvcvideo: Rewrite uvc_ids for keep-sorted.
media: uvcvideo: Add keep-sorted statement and sort uvc_ids
drivers/media/usb/uvc/uvc_driver.c | 660 +++++++++++++++++++++++--------------
1 file changed, 409 insertions(+), 251 deletions(-)
---
base-commit: 398a1b33f1479af35ca915c5efc9b00d6204f8fa
change-id: 20250429-keep-sorted-2ac6f4796726
Best regards,
--
Ricardo Ribalda <ribalda@chromium.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted.
2025-04-29 13:47 [PATCH 0/2] media: uvcvideo: Enable keep-sorted Ricardo Ribalda
@ 2025-04-29 13:47 ` Ricardo Ribalda
2025-04-29 18:21 ` Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 2/2] media: uvcvideo: Add keep-sorted statement and sort uvc_ids Ricardo Ribalda
2025-06-16 13:05 ` [PATCH 0/2] media: uvcvideo: Enable keep-sorted Hans de Goede
2 siblings, 1 reply; 12+ messages in thread
From: Ricardo Ribalda @ 2025-04-29 13:47 UTC (permalink / raw)
To: Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab
Cc: Hans Verkuil, linux-media, linux-kernel, Ricardo Ribalda
keep-sorted is a tool to check if the code is sorted. If we enable it in
media-ci we will automate some of the boring comments.
This is a preparation patch to enable keep-sorted. No functional change
is expected. It has been tested with objdump:
ribalda@ribalda:~/work/linux$ diff drivers/media/usb/uvc/uvc_driver.o.S drivers/media/usb/uvc/uvc_driver.o.new.S
2c2
< drivers/media/usb/uvc/uvc_driver.o: file format elf64-x86-64
---
drivers/media/usb/uvc/uvc_driver.c | 618 +++++++++++++++++++++++--------------
1 file changed, 386 insertions(+), 232 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 107e0fafd80f54ec98c9657e5d58d17a6ed8c02f..7ced8980543af5a207938d12a5eb833ee8a34c38 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2501,8 +2501,7 @@ static const struct uvc_device_info uvc_quirk_force_y8 = {
*/
static const struct usb_device_id uvc_ids[] = {
/* Quanta ACER HD User Facing */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
- | USB_DEVICE_ID_MATCH_INT_INFO,
+ {
.idVendor = 0x0408,
.idProduct = 0x4033,
.bInterfaceClass = USB_CLASS_VIDEO,
@@ -2510,10 +2509,12 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceProtocol = UVC_PC_PROTOCOL_15,
.driver_info = (kernel_ulong_t)&(const struct uvc_device_info){
.uvc_version = 0x010a,
- } },
- /* Quanta ACER HD User Facing */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ },
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Quanta ACER HD User Facing */
+ {
.idVendor = 0x0408,
.idProduct = 0x4035,
.bInterfaceClass = USB_CLASS_VIDEO,
@@ -2521,530 +2522,648 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceProtocol = UVC_PC_PROTOCOL_15,
.driver_info = (kernel_ulong_t)&(const struct uvc_device_info){
.uvc_version = 0x010a,
- } },
- /* LogiLink Wireless Webcam */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ },
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* LogiLink Wireless Webcam */
+ {
.idVendor = 0x0416,
.idProduct = 0xa91a,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Genius eFace 2025 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Genius eFace 2025 */
+ {
.idVendor = 0x0458,
.idProduct = 0x706e,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Microsoft Lifecam NX-6000 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Microsoft Lifecam NX-6000 */
+ {
.idVendor = 0x045e,
.idProduct = 0x00f8,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Microsoft Lifecam NX-3000 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Microsoft Lifecam NX-3000 */
+ {
.idVendor = 0x045e,
.idProduct = 0x0721,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Microsoft Lifecam VX-7000 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Microsoft Lifecam VX-7000 */
+ {
.idVendor = 0x045e,
.idProduct = 0x0723,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Logitech, Webcam C910 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech, Webcam C910 */
+ {
.idVendor = 0x046d,
.idProduct = 0x0821,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND)},
- /* Logitech, Webcam B910 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech, Webcam B910 */
+ {
.idVendor = 0x046d,
.idProduct = 0x0823,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND)},
- /* Logitech Quickcam Fusion */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Quickcam Fusion */
+ {
.idVendor = 0x046d,
.idProduct = 0x08c1,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Logitech Quickcam Orbit MP */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Quickcam Orbit MP */
+ {
.idVendor = 0x046d,
.idProduct = 0x08c2,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Logitech Quickcam Pro for Notebook */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Quickcam Pro for Notebook */
+ {
.idVendor = 0x046d,
.idProduct = 0x08c3,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Logitech Quickcam Pro 5000 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Quickcam Pro 5000 */
+ {
.idVendor = 0x046d,
.idProduct = 0x08c5,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Logitech Quickcam OEM Dell Notebook */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Quickcam OEM Dell Notebook */
+ {
.idVendor = 0x046d,
.idProduct = 0x08c6,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Logitech Quickcam OEM Cisco VT Camera II */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Quickcam OEM Cisco VT Camera II */
+ {
.idVendor = 0x046d,
.idProduct = 0x08c7,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Logitech HD Pro Webcam C920 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech HD Pro Webcam C920 */
+ {
.idVendor = 0x046d,
.idProduct = 0x082d,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
- | UVC_QUIRK_INVALID_DEVICE_SOF) },
- /* Logitech HD Pro Webcam C922 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | UVC_QUIRK_INVALID_DEVICE_SOF),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech HD Pro Webcam C922 */
+ {
.idVendor = 0x046d,
.idProduct = 0x085c,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_INVALID_DEVICE_SOF) },
- /* Logitech Rally Bar Huddle */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_INVALID_DEVICE_SOF),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Rally Bar Huddle */
+ {
.idVendor = 0x046d,
.idProduct = 0x087c,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) },
- /* Logitech Rally Bar */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Rally Bar */
+ {
.idVendor = 0x046d,
.idProduct = 0x089b,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) },
- /* Logitech Rally Bar Mini */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Logitech Rally Bar Mini */
+ {
.idVendor = 0x046d,
.idProduct = 0x08d3,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) },
- /* Chicony CNF7129 (Asus EEE 100HE) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Chicony CNF7129 (Asus EEE 100HE) */
+ {
.idVendor = 0x04f2,
.idProduct = 0xb071,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE) },
- /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
+ {
.idVendor = 0x058f,
.idProduct = 0x3820,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Dell XPS m1530 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Dell XPS m1530 */
+ {
.idVendor = 0x05a9,
.idProduct = 0x2640,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Dell SP2008WFP Monitor */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Dell SP2008WFP Monitor */
+ {
.idVendor = 0x05a9,
.idProduct = 0x2641,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Dell Alienware X51 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Dell Alienware X51 */
+ {
.idVendor = 0x05a9,
.idProduct = 0x2643,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Dell Studio Hybrid 140g (OmniVision webcam) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Dell Studio Hybrid 140g (OmniVision webcam) */
+ {
.idVendor = 0x05a9,
.idProduct = 0x264a,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Dell XPS M1330 (OmniVision OV7670 webcam) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Dell XPS M1330 (OmniVision OV7670 webcam) */
+ {
.idVendor = 0x05a9,
.idProduct = 0x7670,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Apple Built-In iSight */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Apple Built-In iSight */
+ {
.idVendor = 0x05ac,
.idProduct = 0x8501,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
- | UVC_QUIRK_BUILTIN_ISIGHT) },
- /* Apple FaceTime HD Camera (Built-In) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | UVC_QUIRK_BUILTIN_ISIGHT),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Apple FaceTime HD Camera (Built-In) */
+ {
.idVendor = 0x05ac,
.idProduct = 0x8514,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Apple Built-In iSight via iBridge */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Apple Built-In iSight via iBridge */
+ {
.idVendor = 0x05ac,
.idProduct = 0x8600,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* Foxlink ("HP Webcam" on HP Mini 5103) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Foxlink ("HP Webcam" on HP Mini 5103) */
+ {
.idVendor = 0x05c8,
.idProduct = 0x0403,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
- /* Genesys Logic USB 2.0 PC Camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Genesys Logic USB 2.0 PC Camera */
+ {
.idVendor = 0x05e3,
.idProduct = 0x0505,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Hercules Classic Silver */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Hercules Classic Silver */
+ {
.idVendor = 0x06f8,
.idProduct = 0x300c,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
- /* ViMicro Vega */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* ViMicro Vega */
+ {
.idVendor = 0x0ac8,
.idProduct = 0x332d,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
- /* ViMicro - Minoru3D */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* ViMicro - Minoru3D */
+ {
.idVendor = 0x0ac8,
.idProduct = 0x3410,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
- /* ViMicro Venus - Minoru3D */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* ViMicro Venus - Minoru3D */
+ {
.idVendor = 0x0ac8,
.idProduct = 0x3420,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
- /* Ophir Optronics - SPCAM 620U */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Ophir Optronics - SPCAM 620U */
+ {
.idVendor = 0x0bd3,
.idProduct = 0x0555,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Sonix Technology Co. Ltd. - 292A IPC AR0330 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Sonix Technology Co. Ltd. - 292A IPC AR0330 */
+ {
.idVendor = 0x0c45,
.idProduct = 0x6366,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF) },
- /* MT6227 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* MT6227 */
+ {
.idVendor = 0x0e8d,
.idProduct = 0x0004,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
- | UVC_QUIRK_PROBE_DEF) },
- /* IMC Networks (Medion Akoya) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | UVC_QUIRK_PROBE_DEF),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* IMC Networks (Medion Akoya) */
+ {
.idVendor = 0x13d3,
.idProduct = 0x5103,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* JMicron USB2.0 XGA WebCam */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* JMicron USB2.0 XGA WebCam */
+ {
.idVendor = 0x152d,
.idProduct = 0x0310,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Kurokesu C1 PRO */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Kurokesu C1 PRO */
+ {
.idVendor = 0x16d0,
.idProduct = 0x0ed1,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF) },
- /* Syntek (HP Spartan) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Syntek (HP Spartan) */
+ {
.idVendor = 0x174f,
.idProduct = 0x5212,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Syntek (Samsung Q310) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Syntek (Samsung Q310) */
+ {
.idVendor = 0x174f,
.idProduct = 0x5931,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Syntek (Packard Bell EasyNote MX52 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Syntek (Packard Bell EasyNote MX52 */
+ {
.idVendor = 0x174f,
.idProduct = 0x8a12,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Syntek (Asus F9SG) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Syntek (Asus F9SG) */
+ {
.idVendor = 0x174f,
.idProduct = 0x8a31,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Syntek (Asus U3S) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Syntek (Asus U3S) */
+ {
.idVendor = 0x174f,
.idProduct = 0x8a33,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Syntek (JAOtech Smart Terminal) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Syntek (JAOtech Smart Terminal) */
+ {
.idVendor = 0x174f,
.idProduct = 0x8a34,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Miricle 307K */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Miricle 307K */
+ {
.idVendor = 0x17dc,
.idProduct = 0x0202,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Lenovo Thinkpad SL400/SL500 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Lenovo Thinkpad SL400/SL500 */
+ {
.idVendor = 0x17ef,
.idProduct = 0x480b,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
- /* Aveo Technology USB 2.0 Camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Aveo Technology USB 2.0 Camera */
+ {
.idVendor = 0x1871,
.idProduct = 0x0306,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
- | UVC_QUIRK_PROBE_EXTRAFIELDS) },
- /* Aveo Technology USB 2.0 Camera (Tasco USB Microscope) */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | UVC_QUIRK_PROBE_EXTRAFIELDS),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Aveo Technology USB 2.0 Camera (Tasco USB Microscope) */
+ {
.idVendor = 0x1871,
.idProduct = 0x0516,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Ecamm Pico iMage */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Ecamm Pico iMage */
+ {
.idVendor = 0x18cd,
.idProduct = 0xcafe,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_EXTRAFIELDS) },
- /* Manta MM-353 Plako */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_EXTRAFIELDS),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Manta MM-353 Plako */
+ {
.idVendor = 0x18ec,
.idProduct = 0x3188,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* FSC WebCam V30S */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* FSC WebCam V30S */
+ {
.idVendor = 0x18ec,
.idProduct = 0x3288,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Arkmicro unbranded */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Arkmicro unbranded */
+ {
.idVendor = 0x18ec,
.idProduct = 0x3290,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
- /* The Imaging Source USB CCD cameras */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* The Imaging Source USB CCD cameras */
+ {
.idVendor = 0x199e,
.idProduct = 0x8102,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
- .bInterfaceProtocol = 0 },
- /* Bodelin ProScopeHR */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
- | USB_DEVICE_ID_MATCH_DEV_HI
+ .bInterfaceProtocol = 0,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Bodelin ProScopeHR */
+ {
.idVendor = 0x19ab,
.idProduct = 0x1000,
.bcdDevice_hi = 0x0126,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_STATUS_INTERVAL) },
- /* MSI StarCam 370i */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_STATUS_INTERVAL),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_DEV_HI
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* MSI StarCam 370i */
+ {
.idVendor = 0x1b3b,
.idProduct = 0x2951,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Generalplus Technology Inc. 808 Camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Generalplus Technology Inc. 808 Camera */
+ {
.idVendor = 0x1b3f,
.idProduct = 0x2002,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Shenzhen Aoni Electronic Co.,Ltd 2K FHD camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Shenzhen Aoni Electronic Co.,Ltd 2K FHD camera */
+ {
.idVendor = 0x1bcf,
.idProduct = 0x0b40,
.bInterfaceClass = USB_CLASS_VIDEO,
@@ -3052,152 +3171,187 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceProtocol = 0,
.driver_info = (kernel_ulong_t)&(const struct uvc_device_info){
.uvc_version = 0x010a,
- } },
- /* SiGma Micro USB Web Camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ },
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* SiGma Micro USB Web Camera */
+ {
.idVendor = 0x1c4f,
.idProduct = 0x3000,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
- | UVC_QUIRK_IGNORE_SELECTOR_UNIT) },
- /* Actions Microelectronics Co. Display capture-UVC05 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | UVC_QUIRK_IGNORE_SELECTOR_UNIT),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Actions Microelectronics Co. Display capture-UVC05 */
+ {
.idVendor = 0x1de1,
.idProduct = 0xf105,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) },
- /* NXP Semiconductors IR VIDEO */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* NXP Semiconductors IR VIDEO */
+ {
.idVendor = 0x1fc9,
.idProduct = 0x009b,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
- /* Oculus VR Positional Tracker DK2 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Oculus VR Positional Tracker DK2 */
+ {
.idVendor = 0x2833,
.idProduct = 0x0201,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8 },
- /* Oculus VR Rift Sensor */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Oculus VR Rift Sensor */
+ {
.idVendor = 0x2833,
.idProduct = 0x0211,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8 },
- /* GEO Semiconductor GC6500 */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8,
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* GEO Semiconductor GC6500 */
+ {
.idVendor = 0x29fe,
.idProduct = 0x4d53,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP) },
- /* Insta360 Link */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Insta360 Link */
+ {
.idVendor = 0x2e1a,
.idProduct = 0x4c01,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) },
- /* Intel D410/ASR depth camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D410/ASR depth camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0ad2,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D415/ASRC depth camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D415/ASRC depth camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0ad3,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D430/AWG depth camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D430/AWG depth camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0ad4,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel RealSense D4M */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel RealSense D4M */
+ {
.idVendor = 0x8086,
.idProduct = 0x0b03,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D435/AWGC depth camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D435/AWGC depth camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0b07,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D435i depth camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D435i depth camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0b3a,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D405 Depth Camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D405 Depth Camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0b5b,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D455 Depth Camera */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D455 Depth Camera */
+ {
.idVendor = 0x8086,
.idProduct = 0x0b5c,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
- /* Intel D421 Depth Module */
- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
+ },
+ /* Intel D421 Depth Module */
+ {
.idVendor = 0x8086,
.idProduct = 0x1155,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ },
/* Generic USB Video Class */
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) },
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
--
2.49.0.901.g37484f566f-goog
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] media: uvcvideo: Add keep-sorted statement and sort uvc_ids
2025-04-29 13:47 [PATCH 0/2] media: uvcvideo: Enable keep-sorted Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted Ricardo Ribalda
@ 2025-04-29 13:47 ` Ricardo Ribalda
2025-06-16 13:05 ` [PATCH 0/2] media: uvcvideo: Enable keep-sorted Hans de Goede
2 siblings, 0 replies; 12+ messages in thread
From: Ricardo Ribalda @ 2025-04-29 13:47 UTC (permalink / raw)
To: Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab
Cc: Hans Verkuil, linux-media, linux-kernel, Ricardo Ribalda
We had some quirks that were out of order.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
drivers/media/usb/uvc/uvc_driver.c | 70 ++++++++++++++++++++------------------
1 file changed, 37 insertions(+), 33 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 7ced8980543af5a207938d12a5eb833ee8a34c38..5f93a586c55936b0b41276b85df4456b64662fb0 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2500,6 +2500,8 @@ static const struct uvc_device_info uvc_quirk_force_y8 = {
* Sort these by vendor/product ID.
*/
static const struct usb_device_id uvc_ids[] = {
+ /* keep-sorted start block=yes */
+
/* Quanta ACER HD User Facing */
{
.idVendor = 0x0408,
@@ -2603,108 +2605,108 @@ static const struct usb_device_id uvc_ids[] = {
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Quickcam Fusion */
+ /* Logitech HD Pro Webcam C920 */
{
.idVendor = 0x046d,
- .idProduct = 0x08c1,
- .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
+ .idProduct = 0x082d,
+ .bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
+ | UVC_QUIRK_INVALID_DEVICE_SOF),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Quickcam Orbit MP */
+ /* Logitech HD Pro Webcam C922 */
{
.idVendor = 0x046d,
- .idProduct = 0x08c2,
- .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
+ .idProduct = 0x085c,
+ .bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_INVALID_DEVICE_SOF),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Quickcam Pro for Notebook */
+ /* Logitech Rally Bar Huddle */
{
.idVendor = 0x046d,
- .idProduct = 0x08c3,
- .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
+ .idProduct = 0x087c,
+ .bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Quickcam Pro 5000 */
+ /* Logitech Rally Bar */
{
.idVendor = 0x046d,
- .idProduct = 0x08c5,
- .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
+ .idProduct = 0x089b,
+ .bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Quickcam OEM Dell Notebook */
+ /* Logitech Quickcam Fusion */
{
.idVendor = 0x046d,
- .idProduct = 0x08c6,
+ .idProduct = 0x08c1,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Quickcam OEM Cisco VT Camera II */
+ /* Logitech Quickcam Orbit MP */
{
.idVendor = 0x046d,
- .idProduct = 0x08c7,
+ .idProduct = 0x08c2,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech HD Pro Webcam C920 */
+ /* Logitech Quickcam Pro for Notebook */
{
.idVendor = 0x046d,
- .idProduct = 0x082d,
- .bInterfaceClass = USB_CLASS_VIDEO,
+ .idProduct = 0x08c3,
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
- | UVC_QUIRK_INVALID_DEVICE_SOF),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech HD Pro Webcam C922 */
+ /* Logitech Quickcam Pro 5000 */
{
.idVendor = 0x046d,
- .idProduct = 0x085c,
- .bInterfaceClass = USB_CLASS_VIDEO,
+ .idProduct = 0x08c5,
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_INVALID_DEVICE_SOF),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Rally Bar Huddle */
+ /* Logitech Quickcam OEM Dell Notebook */
{
.idVendor = 0x046d,
- .idProduct = 0x087c,
- .bInterfaceClass = USB_CLASS_VIDEO,
+ .idProduct = 0x08c6,
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
- /* Logitech Rally Bar */
+ /* Logitech Quickcam OEM Cisco VT Camera II */
{
.idVendor = 0x046d,
- .idProduct = 0x089b,
- .bInterfaceClass = USB_CLASS_VIDEO,
+ .idProduct = 0x08c7,
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
- .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
@@ -3352,6 +3354,8 @@ static const struct usb_device_id uvc_ids[] = {
.match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
},
+
+ /* keep-sorted end */
/* Generic USB Video Class */
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) },
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
--
2.49.0.901.g37484f566f-goog
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted.
2025-04-29 13:47 ` [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted Ricardo Ribalda
@ 2025-04-29 18:21 ` Ricardo Ribalda
0 siblings, 0 replies; 12+ messages in thread
From: Ricardo Ribalda @ 2025-04-29 18:21 UTC (permalink / raw)
To: Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab
Cc: Hans Verkuil, linux-media, linux-kernel
On Tue, 29 Apr 2025 at 15:47, Ricardo Ribalda <ribalda@chromium.org> wrote:
>
> keep-sorted is a tool to check if the code is sorted. If we enable it in
> media-ci we will automate some of the boring comments.
>
> This is a preparation patch to enable keep-sorted. No functional change
> is expected. It has been tested with objdump:
> ribalda@ribalda:~/work/linux$ diff drivers/media/usb/uvc/uvc_driver.o.S drivers/media/usb/uvc/uvc_driver.o.new.S
> 2c2
> < drivers/media/usb/uvc/uvc_driver.o: file format elf64-x86-64
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
> drivers/media/usb/uvc/uvc_driver.c | 618 +++++++++++++++++++++++--------------
> 1 file changed, 386 insertions(+), 232 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index 107e0fafd80f54ec98c9657e5d58d17a6ed8c02f..7ced8980543af5a207938d12a5eb833ee8a34c38 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -2501,8 +2501,7 @@ static const struct uvc_device_info uvc_quirk_force_y8 = {
> */
> static const struct usb_device_id uvc_ids[] = {
> /* Quanta ACER HD User Facing */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> + {
> .idVendor = 0x0408,
> .idProduct = 0x4033,
> .bInterfaceClass = USB_CLASS_VIDEO,
> @@ -2510,10 +2509,12 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceProtocol = UVC_PC_PROTOCOL_15,
> .driver_info = (kernel_ulong_t)&(const struct uvc_device_info){
> .uvc_version = 0x010a,
> - } },
> - /* Quanta ACER HD User Facing */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + },
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Quanta ACER HD User Facing */
> + {
> .idVendor = 0x0408,
> .idProduct = 0x4035,
> .bInterfaceClass = USB_CLASS_VIDEO,
> @@ -2521,530 +2522,648 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceProtocol = UVC_PC_PROTOCOL_15,
> .driver_info = (kernel_ulong_t)&(const struct uvc_device_info){
> .uvc_version = 0x010a,
> - } },
> - /* LogiLink Wireless Webcam */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + },
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* LogiLink Wireless Webcam */
> + {
> .idVendor = 0x0416,
> .idProduct = 0xa91a,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Genius eFace 2025 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Genius eFace 2025 */
> + {
> .idVendor = 0x0458,
> .idProduct = 0x706e,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Microsoft Lifecam NX-6000 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Microsoft Lifecam NX-6000 */
> + {
> .idVendor = 0x045e,
> .idProduct = 0x00f8,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Microsoft Lifecam NX-3000 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Microsoft Lifecam NX-3000 */
> + {
> .idVendor = 0x045e,
> .idProduct = 0x0721,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Microsoft Lifecam VX-7000 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Microsoft Lifecam VX-7000 */
> + {
> .idVendor = 0x045e,
> .idProduct = 0x0723,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Logitech, Webcam C910 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech, Webcam C910 */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x0821,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND)},
> - /* Logitech, Webcam B910 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech, Webcam B910 */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x0823,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND)},
> - /* Logitech Quickcam Fusion */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_WAKE_AUTOSUSPEND),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Quickcam Fusion */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08c1,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Logitech Quickcam Orbit MP */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Quickcam Orbit MP */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08c2,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Logitech Quickcam Pro for Notebook */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Quickcam Pro for Notebook */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08c3,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Logitech Quickcam Pro 5000 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Quickcam Pro 5000 */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08c5,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Logitech Quickcam OEM Dell Notebook */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Quickcam OEM Dell Notebook */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08c6,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Logitech Quickcam OEM Cisco VT Camera II */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Quickcam OEM Cisco VT Camera II */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08c7,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Logitech HD Pro Webcam C920 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech HD Pro Webcam C920 */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x082d,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
> - | UVC_QUIRK_INVALID_DEVICE_SOF) },
> - /* Logitech HD Pro Webcam C922 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | UVC_QUIRK_INVALID_DEVICE_SOF),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech HD Pro Webcam C922 */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x085c,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_INVALID_DEVICE_SOF) },
> - /* Logitech Rally Bar Huddle */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_INVALID_DEVICE_SOF),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Rally Bar Huddle */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x087c,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) },
> - /* Logitech Rally Bar */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Rally Bar */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x089b,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) },
> - /* Logitech Rally Bar Mini */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Logitech Rally Bar Mini */
> + {
> .idVendor = 0x046d,
> .idProduct = 0x08d3,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) },
> - /* Chicony CNF7129 (Asus EEE 100HE) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Chicony CNF7129 (Asus EEE 100HE) */
> + {
> .idVendor = 0x04f2,
> .idProduct = 0xb071,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE) },
> - /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
> + {
> .idVendor = 0x058f,
> .idProduct = 0x3820,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Dell XPS m1530 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Dell XPS m1530 */
> + {
> .idVendor = 0x05a9,
> .idProduct = 0x2640,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Dell SP2008WFP Monitor */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Dell SP2008WFP Monitor */
> + {
> .idVendor = 0x05a9,
> .idProduct = 0x2641,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Dell Alienware X51 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Dell Alienware X51 */
> + {
> .idVendor = 0x05a9,
> .idProduct = 0x2643,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Dell Studio Hybrid 140g (OmniVision webcam) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Dell Studio Hybrid 140g (OmniVision webcam) */
> + {
> .idVendor = 0x05a9,
> .idProduct = 0x264a,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Dell XPS M1330 (OmniVision OV7670 webcam) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Dell XPS M1330 (OmniVision OV7670 webcam) */
> + {
> .idVendor = 0x05a9,
> .idProduct = 0x7670,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Apple Built-In iSight */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Apple Built-In iSight */
> + {
> .idVendor = 0x05ac,
> .idProduct = 0x8501,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
> - | UVC_QUIRK_BUILTIN_ISIGHT) },
> - /* Apple FaceTime HD Camera (Built-In) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | UVC_QUIRK_BUILTIN_ISIGHT),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Apple FaceTime HD Camera (Built-In) */
> + {
> .idVendor = 0x05ac,
> .idProduct = 0x8514,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Apple Built-In iSight via iBridge */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Apple Built-In iSight via iBridge */
> + {
> .idVendor = 0x05ac,
> .idProduct = 0x8600,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* Foxlink ("HP Webcam" on HP Mini 5103) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Foxlink ("HP Webcam" on HP Mini 5103) */
> + {
> .idVendor = 0x05c8,
> .idProduct = 0x0403,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
> - /* Genesys Logic USB 2.0 PC Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Genesys Logic USB 2.0 PC Camera */
> + {
> .idVendor = 0x05e3,
> .idProduct = 0x0505,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Hercules Classic Silver */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Hercules Classic Silver */
> + {
> .idVendor = 0x06f8,
> .idProduct = 0x300c,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
> - /* ViMicro Vega */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* ViMicro Vega */
> + {
> .idVendor = 0x0ac8,
> .idProduct = 0x332d,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
> - /* ViMicro - Minoru3D */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* ViMicro - Minoru3D */
> + {
> .idVendor = 0x0ac8,
> .idProduct = 0x3410,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
> - /* ViMicro Venus - Minoru3D */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* ViMicro Venus - Minoru3D */
> + {
> .idVendor = 0x0ac8,
> .idProduct = 0x3420,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth },
> - /* Ophir Optronics - SPCAM 620U */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_fix_bandwidth,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Ophir Optronics - SPCAM 620U */
> + {
> .idVendor = 0x0bd3,
> .idProduct = 0x0555,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Sonix Technology Co. Ltd. - 292A IPC AR0330 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Sonix Technology Co. Ltd. - 292A IPC AR0330 */
> + {
> .idVendor = 0x0c45,
> .idProduct = 0x6366,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF) },
> - /* MT6227 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* MT6227 */
> + {
> .idVendor = 0x0e8d,
> .idProduct = 0x0004,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
> - | UVC_QUIRK_PROBE_DEF) },
> - /* IMC Networks (Medion Akoya) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | UVC_QUIRK_PROBE_DEF),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* IMC Networks (Medion Akoya) */
> + {
> .idVendor = 0x13d3,
> .idProduct = 0x5103,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* JMicron USB2.0 XGA WebCam */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* JMicron USB2.0 XGA WebCam */
> + {
> .idVendor = 0x152d,
> .idProduct = 0x0310,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Kurokesu C1 PRO */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Kurokesu C1 PRO */
> + {
> .idVendor = 0x16d0,
> .idProduct = 0x0ed1,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF) },
> - /* Syntek (HP Spartan) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_MJPEG_NO_EOF),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Syntek (HP Spartan) */
> + {
> .idVendor = 0x174f,
> .idProduct = 0x5212,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Syntek (Samsung Q310) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Syntek (Samsung Q310) */
> + {
> .idVendor = 0x174f,
> .idProduct = 0x5931,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Syntek (Packard Bell EasyNote MX52 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Syntek (Packard Bell EasyNote MX52 */
> + {
> .idVendor = 0x174f,
> .idProduct = 0x8a12,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Syntek (Asus F9SG) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Syntek (Asus F9SG) */
> + {
> .idVendor = 0x174f,
> .idProduct = 0x8a31,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Syntek (Asus U3S) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Syntek (Asus U3S) */
> + {
> .idVendor = 0x174f,
> .idProduct = 0x8a33,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Syntek (JAOtech Smart Terminal) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Syntek (JAOtech Smart Terminal) */
> + {
> .idVendor = 0x174f,
> .idProduct = 0x8a34,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Miricle 307K */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Miricle 307K */
> + {
> .idVendor = 0x17dc,
> .idProduct = 0x0202,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Lenovo Thinkpad SL400/SL500 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Lenovo Thinkpad SL400/SL500 */
> + {
> .idVendor = 0x17ef,
> .idProduct = 0x480b,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid },
> - /* Aveo Technology USB 2.0 Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_stream_no_fid,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Aveo Technology USB 2.0 Camera */
> + {
> .idVendor = 0x1871,
> .idProduct = 0x0306,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
> - | UVC_QUIRK_PROBE_EXTRAFIELDS) },
> - /* Aveo Technology USB 2.0 Camera (Tasco USB Microscope) */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | UVC_QUIRK_PROBE_EXTRAFIELDS),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Aveo Technology USB 2.0 Camera (Tasco USB Microscope) */
> + {
> .idVendor = 0x1871,
> .idProduct = 0x0516,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Ecamm Pico iMage */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Ecamm Pico iMage */
> + {
> .idVendor = 0x18cd,
> .idProduct = 0xcafe,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_EXTRAFIELDS) },
> - /* Manta MM-353 Plako */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_EXTRAFIELDS),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Manta MM-353 Plako */
> + {
> .idVendor = 0x18ec,
> .idProduct = 0x3188,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* FSC WebCam V30S */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* FSC WebCam V30S */
> + {
> .idVendor = 0x18ec,
> .idProduct = 0x3288,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Arkmicro unbranded */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Arkmicro unbranded */
> + {
> .idVendor = 0x18ec,
> .idProduct = 0x3290,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
> - /* The Imaging Source USB CCD cameras */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* The Imaging Source USB CCD cameras */
> + {
> .idVendor = 0x199e,
> .idProduct = 0x8102,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0 },
> - /* Bodelin ProScopeHR */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_DEV_HI
> + .bInterfaceProtocol = 0,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Bodelin ProScopeHR */
> + {
> .idVendor = 0x19ab,
> .idProduct = 0x1000,
> .bcdDevice_hi = 0x0126,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_STATUS_INTERVAL) },
> - /* MSI StarCam 370i */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_STATUS_INTERVAL),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | USB_DEVICE_ID_MATCH_DEV_HI
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* MSI StarCam 370i */
> + {
> .idVendor = 0x1b3b,
> .idProduct = 0x2951,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Generalplus Technology Inc. 808 Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Generalplus Technology Inc. 808 Camera */
> + {
> .idVendor = 0x1b3f,
> .idProduct = 0x2002,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Shenzhen Aoni Electronic Co.,Ltd 2K FHD camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Shenzhen Aoni Electronic Co.,Ltd 2K FHD camera */
> + {
> .idVendor = 0x1bcf,
> .idProduct = 0x0b40,
> .bInterfaceClass = USB_CLASS_VIDEO,
> @@ -3052,152 +3171,187 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceProtocol = 0,
> .driver_info = (kernel_ulong_t)&(const struct uvc_device_info){
> .uvc_version = 0x010a,
> - } },
> - /* SiGma Micro USB Web Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + },
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* SiGma Micro USB Web Camera */
> + {
> .idVendor = 0x1c4f,
> .idProduct = 0x3000,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
> - | UVC_QUIRK_IGNORE_SELECTOR_UNIT) },
> - /* Actions Microelectronics Co. Display capture-UVC05 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | UVC_QUIRK_IGNORE_SELECTOR_UNIT),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Actions Microelectronics Co. Display capture-UVC05 */
> + {
> .idVendor = 0x1de1,
> .idProduct = 0xf105,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) },
> - /* NXP Semiconductors IR VIDEO */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* NXP Semiconductors IR VIDEO */
> + {
> .idVendor = 0x1fc9,
> .idProduct = 0x009b,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> - /* Oculus VR Positional Tracker DK2 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Oculus VR Positional Tracker DK2 */
> + {
> .idVendor = 0x2833,
> .idProduct = 0x0201,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8 },
> - /* Oculus VR Rift Sensor */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Oculus VR Rift Sensor */
> + {
> .idVendor = 0x2833,
> .idProduct = 0x0211,
> .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8 },
> - /* GEO Semiconductor GC6500 */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8,
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* GEO Semiconductor GC6500 */
> + {
> .idVendor = 0x29fe,
> .idProduct = 0x4d53,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP) },
> - /* Insta360 Link */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Insta360 Link */
> + {
> .idVendor = 0x2e1a,
> .idProduct = 0x4c01,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) },
> - /* Intel D410/ASR depth camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D410/ASR depth camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0ad2,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D415/ASRC depth camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D415/ASRC depth camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0ad3,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D430/AWG depth camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D430/AWG depth camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0ad4,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel RealSense D4M */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel RealSense D4M */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0b03,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D435/AWGC depth camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D435/AWGC depth camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0b07,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D435i depth camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D435i depth camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0b3a,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D405 Depth Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D405 Depth Camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0b5b,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D455 Depth Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D455 Depth Camera */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x0b5c,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> - /* Intel D421 Depth Module */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> + /* Intel D421 Depth Module */
> + {
> .idVendor = 0x8086,
> .idProduct = 0x1155,
> .bInterfaceClass = USB_CLASS_VIDEO,
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> - .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
> + .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX),
> + .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | USB_DEVICE_ID_MATCH_INT_INFO,
> + },
> /* Generic USB Video Class */
> { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) },
> { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
>
> --
> 2.49.0.901.g37484f566f-goog
>
--
Ricardo Ribalda
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-04-29 13:47 [PATCH 0/2] media: uvcvideo: Enable keep-sorted Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 2/2] media: uvcvideo: Add keep-sorted statement and sort uvc_ids Ricardo Ribalda
@ 2025-06-16 13:05 ` Hans de Goede
2025-06-16 13:22 ` Ricardo Ribalda
2 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2025-06-16 13:05 UTC (permalink / raw)
To: Ricardo Ribalda, Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab
Cc: Hans Verkuil, linux-media, linux-kernel
Hi Ricardo,
On 29-Apr-25 15:47, Ricardo Ribalda wrote:
> When committers contribute quirks to the uvc driver, they usually add
> them out of order.
>
> We can automatically validate that their follow our guidelines with the
> use of keep-sorted.
>
> This patchset adds support for keep-sorted in the uvc driver. The two
> patches can be squashed if needed.
>
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
I've no objections against these 2 patches, but these need to be
rebased on top of the latest uvc/for-next. Can you send out a new
version please ?
Also for patch 2/2 can we not just add the 2 keep-sorted headers
and then actually run keep-sorted to auto-fix things ?
Or can it not auto-fix ?
Regards,
Hans
> ---
> Ricardo Ribalda (2):
> media: uvcvideo: Rewrite uvc_ids for keep-sorted.
> media: uvcvideo: Add keep-sorted statement and sort uvc_ids
>
> drivers/media/usb/uvc/uvc_driver.c | 660 +++++++++++++++++++++++--------------
> 1 file changed, 409 insertions(+), 251 deletions(-)
> ---
> base-commit: 398a1b33f1479af35ca915c5efc9b00d6204f8fa
> change-id: 20250429-keep-sorted-2ac6f4796726
>
> Best regards,
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-16 13:05 ` [PATCH 0/2] media: uvcvideo: Enable keep-sorted Hans de Goede
@ 2025-06-16 13:22 ` Ricardo Ribalda
2025-06-16 13:26 ` Hans de Goede
0 siblings, 1 reply; 12+ messages in thread
From: Ricardo Ribalda @ 2025-06-16 13:22 UTC (permalink / raw)
To: Hans de Goede, Hans Verkuil
Cc: Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab,
linux-media, linux-kernel
Hi Hans
On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
>
> Hi Ricardo,
>
> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
> > When committers contribute quirks to the uvc driver, they usually add
> > them out of order.
> >
> > We can automatically validate that their follow our guidelines with the
> > use of keep-sorted.
> >
> > This patchset adds support for keep-sorted in the uvc driver. The two
> > patches can be squashed if needed.
> >
> > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
>
> I've no objections against these 2 patches, but these need to be
> rebased on top of the latest uvc/for-next. Can you send out a new
> version please ?
I was waiting for HansV to say that keep-sorted was useful and then
add it to the CI.
Right now it is probably just useful for the Makefiles and uvc.
>
> Also for patch 2/2 can we not just add the 2 keep-sorted headers
> and then actually run keep-sorted to auto-fix things ?
Do you mean removing the annotation after running keep-sorted?
We can do that, but we will be unsorted again in the future after N
patches unless we add it to CI.
If we do not handle this automatically I do not think that there is
much point on this series.
Thanks for looking into it anyway :)
>
> Or can it not auto-fix ?
>
> Regards,
>
> Hans
>
>
>
> > ---
> > Ricardo Ribalda (2):
> > media: uvcvideo: Rewrite uvc_ids for keep-sorted.
> > media: uvcvideo: Add keep-sorted statement and sort uvc_ids
> >
> > drivers/media/usb/uvc/uvc_driver.c | 660 +++++++++++++++++++++++--------------
> > 1 file changed, 409 insertions(+), 251 deletions(-)
> > ---
> > base-commit: 398a1b33f1479af35ca915c5efc9b00d6204f8fa
> > change-id: 20250429-keep-sorted-2ac6f4796726
> >
> > Best regards,
>
--
Ricardo Ribalda
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-16 13:22 ` Ricardo Ribalda
@ 2025-06-16 13:26 ` Hans de Goede
2025-06-16 13:31 ` Ricardo Ribalda
0 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2025-06-16 13:26 UTC (permalink / raw)
To: Ricardo Ribalda, Hans Verkuil
Cc: Laurent Pinchart, Hans de Goede, Mauro Carvalho Chehab,
linux-media, linux-kernel
Hi Ricardo,
On 16-Jun-25 15:22, Ricardo Ribalda wrote:
> Hi Hans
>
> On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
>>
>> Hi Ricardo,
>>
>> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
>>> When committers contribute quirks to the uvc driver, they usually add
>>> them out of order.
>>>
>>> We can automatically validate that their follow our guidelines with the
>>> use of keep-sorted.
>>>
>>> This patchset adds support for keep-sorted in the uvc driver. The two
>>> patches can be squashed if needed.
>>>
>>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
>>
>> I've no objections against these 2 patches, but these need to be
>> rebased on top of the latest uvc/for-next. Can you send out a new
>> version please ?
>
> I was waiting for HansV to say that keep-sorted was useful and then
> add it to the CI.
Ok, so should we drop this series from patchwork then ?
>
> Right now it is probably just useful for the Makefiles and uvc.
>
>>
>> Also for patch 2/2 can we not just add the 2 keep-sorted headers
>> and then actually run keep-sorted to auto-fix things ?
>
> Do you mean removing the annotation after running keep-sorted?
>
> We can do that, but we will be unsorted again in the future after N
> patches unless we add it to CI.
>
> If we do not handle this automatically I do not think that there is
> much point on this series.
What I meant is only add the annotations and then run something
like:
keepsorted --auto-fix drivers/media/usb/uvc/uvc_driver.c
and submit the result as a separate commit. Assuming that there is such
a thing as --auto-fix. The reason for this is that if the sorting is done
by a tool there is last chance for it to accidentally break things.
Regards,
Hans
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-16 13:26 ` Hans de Goede
@ 2025-06-16 13:31 ` Ricardo Ribalda
2025-06-16 13:38 ` Hans de Goede
0 siblings, 1 reply; 12+ messages in thread
From: Ricardo Ribalda @ 2025-06-16 13:31 UTC (permalink / raw)
To: Hans de Goede
Cc: Hans Verkuil, Laurent Pinchart, Hans de Goede,
Mauro Carvalho Chehab, linux-media, linux-kernel
On Mon, 16 Jun 2025 at 15:26, Hans de Goede <hansg@kernel.org> wrote:
>
> Hi Ricardo,
>
> On 16-Jun-25 15:22, Ricardo Ribalda wrote:
> > Hi Hans
> >
> > On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
> >>
> >> Hi Ricardo,
> >>
> >> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
> >>> When committers contribute quirks to the uvc driver, they usually add
> >>> them out of order.
> >>>
> >>> We can automatically validate that their follow our guidelines with the
> >>> use of keep-sorted.
> >>>
> >>> This patchset adds support for keep-sorted in the uvc driver. The two
> >>> patches can be squashed if needed.
> >>>
> >>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> >>
> >> I've no objections against these 2 patches, but these need to be
> >> rebased on top of the latest uvc/for-next. Can you send out a new
> >> version please ?
> >
> > I was waiting for HansV to say that keep-sorted was useful and then
> > add it to the CI.
>
> Ok, so should we drop this series from patchwork then ?
If the series does not bother you too much in patchwork let it stay
there until HansV replies to the makefile series.
>
> >
> > Right now it is probably just useful for the Makefiles and uvc.
> >
> >>
> >> Also for patch 2/2 can we not just add the 2 keep-sorted headers
> >> and then actually run keep-sorted to auto-fix things ?
> >
> > Do you mean removing the annotation after running keep-sorted?
> >
> > We can do that, but we will be unsorted again in the future after N
> > patches unless we add it to CI.
> >
> > If we do not handle this automatically I do not think that there is
> > much point on this series.
>
> What I meant is only add the annotations and then run something
> like:
>
> keepsorted --auto-fix drivers/media/usb/uvc/uvc_driver.c
>
> and submit the result as a separate commit. Assuming that there is such
> a thing as --auto-fix. The reason for this is that if the sorting is done
> by a tool there is last chance for it to accidentally break things.
keep-sorted can work in two modes: fix and lint.
If HansV finds it useful I will refactor this patch with the extra step.
Thanks :)
>
> Regards,
>
> Hans
>
>
--
Ricardo Ribalda
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-16 13:31 ` Ricardo Ribalda
@ 2025-06-16 13:38 ` Hans de Goede
2025-06-17 11:52 ` Hans Verkuil
0 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2025-06-16 13:38 UTC (permalink / raw)
To: Ricardo Ribalda
Cc: Hans Verkuil, Laurent Pinchart, Mauro Carvalho Chehab,
linux-media, linux-kernel
Hi Ricardo,
On 16-Jun-25 15:31, Ricardo Ribalda wrote:
> On Mon, 16 Jun 2025 at 15:26, Hans de Goede <hansg@kernel.org> wrote:
>>
>> Hi Ricardo,
>>
>> On 16-Jun-25 15:22, Ricardo Ribalda wrote:
>>> Hi Hans
>>>
>>> On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
>>>>
>>>> Hi Ricardo,
>>>>
>>>> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
>>>>> When committers contribute quirks to the uvc driver, they usually add
>>>>> them out of order.
>>>>>
>>>>> We can automatically validate that their follow our guidelines with the
>>>>> use of keep-sorted.
>>>>>
>>>>> This patchset adds support for keep-sorted in the uvc driver. The two
>>>>> patches can be squashed if needed.
>>>>>
>>>>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
>>>>
>>>> I've no objections against these 2 patches, but these need to be
>>>> rebased on top of the latest uvc/for-next. Can you send out a new
>>>> version please ?
>>>
>>> I was waiting for HansV to say that keep-sorted was useful and then
>>> add it to the CI.
>>
>> Ok, so should we drop this series from patchwork then ?
>
> If the series does not bother you too much in patchwork let it stay
> there until HansV replies to the makefile series.
Sure that works for me.
Regards,
Hans
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-16 13:38 ` Hans de Goede
@ 2025-06-17 11:52 ` Hans Verkuil
2025-06-17 12:53 ` Laurent Pinchart
0 siblings, 1 reply; 12+ messages in thread
From: Hans Verkuil @ 2025-06-17 11:52 UTC (permalink / raw)
To: Hans de Goede, Ricardo Ribalda
Cc: Laurent Pinchart, Mauro Carvalho Chehab, linux-media, linux-kernel
On 16/06/2025 15:38, Hans de Goede wrote:
> Hi Ricardo,
>
> On 16-Jun-25 15:31, Ricardo Ribalda wrote:
>> On Mon, 16 Jun 2025 at 15:26, Hans de Goede <hansg@kernel.org> wrote:
>>>
>>> Hi Ricardo,
>>>
>>> On 16-Jun-25 15:22, Ricardo Ribalda wrote:
>>>> Hi Hans
>>>>
>>>> On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
>>>>>
>>>>> Hi Ricardo,
>>>>>
>>>>> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
>>>>>> When committers contribute quirks to the uvc driver, they usually add
>>>>>> them out of order.
>>>>>>
>>>>>> We can automatically validate that their follow our guidelines with the
>>>>>> use of keep-sorted.
>>>>>>
>>>>>> This patchset adds support for keep-sorted in the uvc driver. The two
>>>>>> patches can be squashed if needed.
>>>>>>
>>>>>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
>>>>>
>>>>> I've no objections against these 2 patches, but these need to be
>>>>> rebased on top of the latest uvc/for-next. Can you send out a new
>>>>> version please ?
>>>>
>>>> I was waiting for HansV to say that keep-sorted was useful and then
>>>> add it to the CI.
>>>
>>> Ok, so should we drop this series from patchwork then ?
>>
>> If the series does not bother you too much in patchwork let it stay
>> there until HansV replies to the makefile series.
I did that. Basically I don't like the keep-sorted annotation unless it
is rolled out kernel-wide. It's not something we should do just in the
media subsystem.
That doesn't mean that a patch fixing the uvc_ids order isn't welcome,
but just drop the annotation.
If we do that, then patch 1/2 is also no longer needed. Although it
feels more logical that match_flags is at the end. I leave that to
HdG and Laurent to decide.
Regards,
Hans
>
> Sure that works for me.
>
> Regards,
>
> Hans
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-17 11:52 ` Hans Verkuil
@ 2025-06-17 12:53 ` Laurent Pinchart
2025-06-17 13:02 ` Ricardo Ribalda
0 siblings, 1 reply; 12+ messages in thread
From: Laurent Pinchart @ 2025-06-17 12:53 UTC (permalink / raw)
To: Hans Verkuil
Cc: Hans de Goede, Ricardo Ribalda, Mauro Carvalho Chehab,
linux-media, linux-kernel
On Tue, Jun 17, 2025 at 01:52:50PM +0200, Hans Verkuil wrote:
> On 16/06/2025 15:38, Hans de Goede wrote:
> > On 16-Jun-25 15:31, Ricardo Ribalda wrote:
> >> On Mon, 16 Jun 2025 at 15:26, Hans de Goede <hansg@kernel.org> wrote:
> >>> On 16-Jun-25 15:22, Ricardo Ribalda wrote:
> >>>> On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
> >>>>> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
> >>>>>> When committers contribute quirks to the uvc driver, they usually add
> >>>>>> them out of order.
> >>>>>>
> >>>>>> We can automatically validate that their follow our guidelines with the
> >>>>>> use of keep-sorted.
> >>>>>>
> >>>>>> This patchset adds support for keep-sorted in the uvc driver. The two
> >>>>>> patches can be squashed if needed.
> >>>>>>
> >>>>>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> >>>>>
> >>>>> I've no objections against these 2 patches, but these need to be
> >>>>> rebased on top of the latest uvc/for-next. Can you send out a new
> >>>>> version please ?
> >>>>
> >>>> I was waiting for HansV to say that keep-sorted was useful and then
> >>>> add it to the CI.
> >>>
> >>> Ok, so should we drop this series from patchwork then ?
> >>
> >> If the series does not bother you too much in patchwork let it stay
> >> there until HansV replies to the makefile series.
>
> I did that. Basically I don't like the keep-sorted annotation unless it
> is rolled out kernel-wide. It's not something we should do just in the
> media subsystem.
>
> That doesn't mean that a patch fixing the uvc_ids order isn't welcome,
> but just drop the annotation.
>
> If we do that, then patch 1/2 is also no longer needed. Although it
> feels more logical that match_flags is at the end. I leave that to
> HdG and Laurent to decide.
.match_flags is first to match the order of the fields in the
usb_device_id structure. Is there a need to move it last, or is only the
}, {
construct that the tool doesn't like ?
> > Sure that works for me.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] media: uvcvideo: Enable keep-sorted
2025-06-17 12:53 ` Laurent Pinchart
@ 2025-06-17 13:02 ` Ricardo Ribalda
0 siblings, 0 replies; 12+ messages in thread
From: Ricardo Ribalda @ 2025-06-17 13:02 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Hans Verkuil, Hans de Goede, Mauro Carvalho Chehab, linux-media,
linux-kernel
On Tue, 17 Jun 2025 at 14:54, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Tue, Jun 17, 2025 at 01:52:50PM +0200, Hans Verkuil wrote:
> > On 16/06/2025 15:38, Hans de Goede wrote:
> > > On 16-Jun-25 15:31, Ricardo Ribalda wrote:
> > >> On Mon, 16 Jun 2025 at 15:26, Hans de Goede <hansg@kernel.org> wrote:
> > >>> On 16-Jun-25 15:22, Ricardo Ribalda wrote:
> > >>>> On Mon, 16 Jun 2025 at 15:05, Hans de Goede <hansg@kernel.org> wrote:
> > >>>>> On 29-Apr-25 15:47, Ricardo Ribalda wrote:
> > >>>>>> When committers contribute quirks to the uvc driver, they usually add
> > >>>>>> them out of order.
> > >>>>>>
> > >>>>>> We can automatically validate that their follow our guidelines with the
> > >>>>>> use of keep-sorted.
> > >>>>>>
> > >>>>>> This patchset adds support for keep-sorted in the uvc driver. The two
> > >>>>>> patches can be squashed if needed.
> > >>>>>>
> > >>>>>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > >>>>>
> > >>>>> I've no objections against these 2 patches, but these need to be
> > >>>>> rebased on top of the latest uvc/for-next. Can you send out a new
> > >>>>> version please ?
> > >>>>
> > >>>> I was waiting for HansV to say that keep-sorted was useful and then
> > >>>> add it to the CI.
> > >>>
> > >>> Ok, so should we drop this series from patchwork then ?
> > >>
> > >> If the series does not bother you too much in patchwork let it stay
> > >> there until HansV replies to the makefile series.
> >
> > I did that. Basically I don't like the keep-sorted annotation unless it
> > is rolled out kernel-wide. It's not something we should do just in the
> > media subsystem.
> >
> > That doesn't mean that a patch fixing the uvc_ids order isn't welcome,
> > but just drop the annotation.
> >
> > If we do that, then patch 1/2 is also no longer needed. Although it
> > feels more logical that match_flags is at the end. I leave that to
> > HdG and Laurent to decide.
>
> .match_flags is first to match the order of the fields in the
> usb_device_id structure. Is there a need to move it last, or is only the
>
> }, {
>
> construct that the tool doesn't like ?
The },{ construct is fine.
The tool sorts all the content in the block
Eg:
{
tail= AA;
head = BBB;
}
is sorted before:
{
tail = CC;
head= AAAA;
}
It can be tuned with a regex:
https://github.com/google/keep-sorted?tab=readme-ov-file#regular-expressions
But the syntax is not particularly nice.
This is why I moved "head" to the beginning of every struct.
Anyway, since keep-sorted is not going to be part of the CI unless it
is adopted by other subsystems we can ignore this for now.
Regards!
>
> > > Sure that works for me.
>
> --
> Regards,
>
> Laurent Pinchart
--
Ricardo Ribalda
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-06-17 13:02 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-29 13:47 [PATCH 0/2] media: uvcvideo: Enable keep-sorted Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 1/2] media: uvcvideo: Rewrite uvc_ids for keep-sorted Ricardo Ribalda
2025-04-29 18:21 ` Ricardo Ribalda
2025-04-29 13:47 ` [PATCH 2/2] media: uvcvideo: Add keep-sorted statement and sort uvc_ids Ricardo Ribalda
2025-06-16 13:05 ` [PATCH 0/2] media: uvcvideo: Enable keep-sorted Hans de Goede
2025-06-16 13:22 ` Ricardo Ribalda
2025-06-16 13:26 ` Hans de Goede
2025-06-16 13:31 ` Ricardo Ribalda
2025-06-16 13:38 ` Hans de Goede
2025-06-17 11:52 ` Hans Verkuil
2025-06-17 12:53 ` Laurent Pinchart
2025-06-17 13:02 ` Ricardo Ribalda
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®