* [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122)
@ 2026-09-03 8:11 Kean Ren
2026-09-03 8:59 ` Ricardo Ribalda
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Kean Ren @ 2026-09-03 8:11 UTC (permalink / raw)
To: Laurent Pinchart
Cc: linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel,
Kean Ren
The device binds cleanly but delivers no image data; USB autosuspend is
suspending the streaming endpoint. Disable autosuspend for it.
Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed
working with this quirk.
Tested-by: Kean Ren <rh_king@163.com>
Signed-off-by: Kean Ren <rh_king@163.com>
---
drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index e289cc71ba98..32bf353013a1 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = {
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
+ /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x30c9,
+ .idProduct = 0x0122,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) },
/* Intel Realsense D435i depth camera */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
--
2.40.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-03 8:11 [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) Kean Ren @ 2026-09-03 8:59 ` Ricardo Ribalda 2026-09-04 8:37 ` 任海 2026-09-04 9:15 ` Ricardo Ribalda 2026-09-29 15:00 ` Hans de Goede 2 siblings, 1 reply; 10+ messages in thread From: Ricardo Ribalda @ 2026-09-03 8:59 UTC (permalink / raw) To: Kean Ren Cc: Laurent Pinchart, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel Hi Kean Could you provide the whole output of lsusb -v 30c9:0122 Thanks! On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > The device binds cleanly but delivers no image data; USB autosuspend is > suspending the streaming endpoint. Disable autosuspend for it. > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > working with this quirk. > > Tested-by: Kean Ren <rh_king@163.com> > Signed-off-by: Kean Ren <rh_king@163.com> > --- > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index e289cc71ba98..32bf353013a1 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > .bInterfaceSubClass = 1, > .bInterfaceProtocol = 0, > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > + | USB_DEVICE_ID_MATCH_INT_INFO, > + .idVendor = 0x30c9, > + .idProduct = 0x0122, > + .bInterfaceClass = USB_CLASS_VIDEO, > + .bInterfaceSubClass = 1, > + .bInterfaceProtocol = 0, > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > /* Intel Realsense D435i depth camera */ > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > | USB_DEVICE_ID_MATCH_INT_INFO, > -- > 2.40.0 > > -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re:Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-03 8:59 ` Ricardo Ribalda @ 2026-09-04 8:37 ` 任海 2026-09-04 8:40 ` Ricardo Ribalda 0 siblings, 1 reply; 10+ messages in thread From: 任海 @ 2026-09-04 8:37 UTC (permalink / raw) To: Ricardo Ribalda Cc: Laurent Pinchart, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel Hi Ricardo, Thanks for your review. This is the original output of 'lsusb' testing@fedora:~$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 002: ID 30c9:0122 Luxvisions Innotech Limited Integrated RGB Camera Bus 003 Device 011: ID 06cb:00f9 Synaptics, Inc. Bus 003 Device 012: ID 17ef:62af Lenovo ThinkPad X13 Detachable Gen 1 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 在 2026-09-03 16:59:59,"Ricardo Ribalda" <ribalda@chromium.org> 写道: Hi Kean Could you provide the whole output of lsusb -v 30c9:0122 Thanks! On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > The device binds cleanly but delivers no image data; USB autosuspend is > suspending the streaming endpoint. Disable autosuspend for it. > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > working with this quirk. > > Tested-by: Kean Ren <rh_king@163.com> > Signed-off-by: Kean Ren <rh_king@163.com> > --- > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index e289cc71ba98..32bf353013a1 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > .bInterfaceSubClass = 1, > .bInterfaceProtocol = 0, > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > + | USB_DEVICE_ID_MATCH_INT_INFO, > + .idVendor = 0x30c9, > + .idProduct = 0x0122, > + .bInterfaceClass = USB_CLASS_VIDEO, > + .bInterfaceSubClass = 1, > + .bInterfaceProtocol = 0, > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > /* Intel Realsense D435i depth camera */ > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > | USB_DEVICE_ID_MATCH_INT_INFO, > -- > 2.40.0 > > -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-04 8:37 ` 任海 @ 2026-09-04 8:40 ` Ricardo Ribalda 2026-09-04 9:07 ` rh_king 0 siblings, 1 reply; 10+ messages in thread From: Ricardo Ribalda @ 2026-09-04 8:40 UTC (permalink / raw) To: 任海 Cc: Laurent Pinchart, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel Hi. I think something went wrong when you pasted the text and also when you run it. checkout: https://lore.kernel.org/linux-media/CANiDSCse5+Ke-Z2321F_QHJZX2suCKxnBy5WuNHE3m1wjoxX-Q@mail.gmail.com/T/#t You seem to have run `lsusb`, not `lsusb -v -d 30c9:0122` Can you try again? Thanks! On Fri, 4 Sept 2026 at 10:38, 任海 <rh_king@163.com> wrote: > > Hi Ricardo, > Thanks for your review. This is the original output of 'lsusb' > testing@fedora:~$ lsusb > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub > Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub > Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub > Bus 003 Device 002: ID 30c9:0122 Luxvisions Innotech Limited Integrated RGB Camera > Bus 003 Device 011: ID 06cb:00f9 Synaptics, Inc. > Bus 003 Device 012: ID 17ef:62af Lenovo ThinkPad X13 Detachable Gen 1 > Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub > 在 2026-09-03 16:59:59,"Ricardo Ribalda" <ribalda@chromium.org> 写道: > Hi Kean > > Could you provide the whole output of lsusb -v 30c9:0122 > > Thanks! > > On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > > > The device binds cleanly but delivers no image data; USB autosuspend is > > suspending the streaming endpoint. Disable autosuspend for it. > > > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > > working with this quirk. > > > > Tested-by: Kean Ren <rh_king@163.com> > > Signed-off-by: Kean Ren <rh_king@163.com> > > --- > > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > > index e289cc71ba98..32bf353013a1 100644 > > --- a/drivers/media/usb/uvc/uvc_driver.c > > +++ b/drivers/media/usb/uvc/uvc_driver.c > > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > > .bInterfaceSubClass = 1, > > .bInterfaceProtocol = 0, > > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > + | USB_DEVICE_ID_MATCH_INT_INFO, > > + .idVendor = 0x30c9, > > + .idProduct = 0x0122, > > + .bInterfaceClass = USB_CLASS_VIDEO, > > + .bInterfaceSubClass = 1, > > + .bInterfaceProtocol = 0, > > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > > /* Intel Realsense D435i depth camera */ > > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > | USB_DEVICE_ID_MATCH_INT_INFO, > > -- > > 2.40.0 > > > > > > > -- > Ricardo Ribalda -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-04 8:40 ` Ricardo Ribalda @ 2026-09-04 9:07 ` rh_king 0 siblings, 0 replies; 10+ messages in thread From: rh_king @ 2026-09-04 9:07 UTC (permalink / raw) To: Ricardo Ribalda Cc: Laurent Pinchart, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel Hi Ricardo, Apologies for the wrong info earlier. Please find the correct details below/attached. ------------------------lsusb -d 30c9:0122 -v-------------------------- Bus 003 Device 002: ID 30c9:0122 Luxvisions Innotech Limited Integrated RGB Camera Negotiated speed: High Speed (480Mbps) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.01 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 [unknown] bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x30c9 Luxvisions Innotech Limited idProduct 0x0122 Integrated RGB Camera bcdDevice 60.07 iManufacturer 1 8SSC21K64687V1SR63E004N iProduct 2 Integrated RGB Camera iSerial 3 01.00.00 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0432 bNumInterfaces 6 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 14 Video bFunctionSubClass 3 Video Interface Collection bFunctionProtocol 0 iFunction 4 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 1 Video Control bInterfaceProtocol 1 iInterface 4 VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdUVC 1.50 wTotalLength 0x006f dwClockFrequency 48.000000MHz bInCollection 1 baInterfaceNr( 0) 1 VideoControl Interface Descriptor: bLength 18 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0201 Camera Sensor bAssocTerminal 0 iTerminal 0 wObjectiveFocalLengthMin 0 wObjectiveFocalLengthMax 0 wOcularFocalLength 0 bControlSize 3 bmControls 0x0024000e Auto-Exposure Mode Auto-Exposure Priority Exposure Time (Absolute) Privacy Region of Interest VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 5 (PROCESSING_UNIT) bUnitID 2 bSourceID 1 wMaxMultiplier 16384 bControlSize 3 bmControls 0x0000157f Brightness Contrast Hue Saturation Sharpness Gamma White Balance Temperature Backlight Compensation Power Line Frequency White Balance Temperature, Auto iProcessing 0 bmVideoStandards 0x00 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 3 guidExtensionCode {0f3f95dc-2632-4c4e-92c9-a04782f43bc8} bNumControls 4 bNrInPins 1 baSourceID( 0) 2 bControlSize 4 bmControls( 0) 0x06 bmControls( 1) 0x21 bmControls( 2) 0x00 bmControls( 3) 0x00 iExtension 0 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 4 guidExtensionCode {63610682-5070-49ab-b8cc-b3855e8d221d} bNumControls 18 bNrInPins 1 baSourceID( 0) 3 bControlSize 4 bmControls( 0) 0xff bmControls( 1) 0x70 bmControls( 2) 0x01 bmControls( 3) 0x3f iExtension 0 VideoControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 5 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 4 iTerminal 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 8 VideoControl Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 3 (EP_INTERRUPT) wMaxTransferSize 1029 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 VideoStreaming Interface Descriptor: bLength 15 bDescriptorType 36 bDescriptorSubtype 1 (INPUT_HEADER) bNumFormats 2 wTotalLength 0x01c7 bEndpointAddress 0x81 EP 1 IN bmInfo 0 bTerminalLink 5 bStillCaptureMethod 1 bTriggerSupport 0 bTriggerUsage 0 bControlSize 1 bmaControls( 0) 4 bmaControls( 1) 0 VideoStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 6 (FORMAT_MJPEG) bFormatIndex 1 bNumFrameDescriptors 11 bFlags 1 Fixed-size samples: Yes bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 1 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 0 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 1 bmCapabilities 0x01 Still image supported wWidth 800 wHeight 480 dwMinBitRate 184320000 dwMaxBitRate 184320000 dwMaxVideoFrameBufferSize 768000 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 2 bmCapabilities 0x01 Still image supported wWidth 2880 wHeight 1800 dwMinBitRate 2488320000 dwMaxBitRate 2488320000 dwMaxVideoFrameBufferSize 10368000 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 3 bmCapabilities 0x01 Still image supported wWidth 2400 wHeight 1800 dwMinBitRate 2073600000 dwMaxBitRate 2073600000 dwMaxVideoFrameBufferSize 8640000 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 4 bmCapabilities 0x01 Still image supported wWidth 2880 wHeight 1620 dwMinBitRate 2239488000 dwMaxBitRate 2239488000 dwMaxVideoFrameBufferSize 9331200 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 5 bmCapabilities 0x01 Still image supported wWidth 2560 wHeight 1440 dwMinBitRate 1769472000 dwMaxBitRate 1769472000 dwMaxVideoFrameBufferSize 7372800 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 6 bmCapabilities 0x01 Still image supported wWidth 1920 wHeight 1080 dwMinBitRate 995328000 dwMaxBitRate 995328000 dwMaxVideoFrameBufferSize 4147200 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 7 bmCapabilities 0x01 Still image supported wWidth 1280 wHeight 720 dwMinBitRate 442368000 dwMaxBitRate 442368000 dwMaxVideoFrameBufferSize 1843200 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 8 bmCapabilities 0x01 Still image supported wWidth 960 wHeight 540 dwMinBitRate 248832000 dwMaxBitRate 248832000 dwMaxVideoFrameBufferSize 1036800 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 9 bmCapabilities 0x01 Still image supported wWidth 848 wHeight 480 dwMinBitRate 195379200 dwMaxBitRate 195379200 dwMaxVideoFrameBufferSize 814080 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 10 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 480 dwMinBitRate 147456000 dwMaxBitRate 147456000 dwMaxVideoFrameBufferSize 614400 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 11 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 360 dwMinBitRate 110592000 dwMaxBitRate 110592000 dwMaxVideoFrameBufferSize 460800 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 1 (BT.709) VideoStreaming Interface Descriptor: bLength 27 bDescriptorType 36 bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED) bFormatIndex 2 bNumFrameDescriptors 2 guidFormat {32595559-0000-0010-8000-00aa00389b71} bBitsPerPixel 16 bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 2 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 0 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 1 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 480 dwMinBitRate 147456000 dwMaxBitRate 147456000 dwMaxVideoFrameBufferSize 614400 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 2 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 360 dwMinBitRate 110592000 dwMaxBitRate 110592000 dwMaxVideoFrameBufferSize 460800 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 1 (BT.709) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x00c0 1x 192 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0180 1x 384 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0280 1x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 5 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0320 1x 800 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 6 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x03b0 1x 944 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 7 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0a80 2x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 8 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0b20 2x 800 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 9 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0be0 2x 992 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 10 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x13c0 3x 960 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 11 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x13fc 3x 1020 bytes bInterval 1 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 14 Video bFunctionSubClass 3 Video Interface Collection bFunctionProtocol 0 iFunction 11 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 1 Video Control bInterfaceProtocol 1 iInterface 11 VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdUVC 1.50 wTotalLength 0x006f dwClockFrequency 48.000000MHz bInCollection 1 baInterfaceNr( 0) 3 VideoControl Interface Descriptor: bLength 18 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0201 Camera Sensor bAssocTerminal 0 iTerminal 0 wObjectiveFocalLengthMin 0 wObjectiveFocalLengthMax 0 wOcularFocalLength 0 bControlSize 3 bmControls 0x00240000 Privacy Region of Interest VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 5 (PROCESSING_UNIT) bUnitID 2 bSourceID 1 wMaxMultiplier 16384 bControlSize 3 bmControls 0x00000000 iProcessing 0 bmVideoStandards 0x00 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 3 guidExtensionCode {0f3f95dc-2632-4c4e-92c9-a04782f43bc8} bNumControls 2 bNrInPins 1 baSourceID( 0) 2 bControlSize 4 bmControls( 0) 0x20 bmControls( 1) 0x01 bmControls( 2) 0x00 bmControls( 3) 0x00 iExtension 0 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 4 guidExtensionCode {63610682-5070-49ab-b8cc-b3855e8d221d} bNumControls 17 bNrInPins 1 baSourceID( 0) 3 bControlSize 4 bmControls( 0) 0xff bmControls( 1) 0x70 bmControls( 2) 0x00 bmControls( 3) 0x3f iExtension 0 VideoControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 5 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 4 iTerminal 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 8 VideoControl Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 3 (EP_INTERRUPT) wMaxTransferSize 1029 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 VideoStreaming Interface Descriptor: bLength 14 bDescriptorType 36 bDescriptorSubtype 1 (INPUT_HEADER) bNumFormats 1 wTotalLength 0x004d bEndpointAddress 0x82 EP 2 IN bmInfo 0 bTerminalLink 5 bStillCaptureMethod 1 bTriggerSupport 0 bTriggerUsage 0 bControlSize 1 bmaControls( 0) 0 VideoStreaming Interface Descriptor: bLength 27 bDescriptorType 36 bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED) bFormatIndex 1 bNumFrameDescriptors 1 guidFormat {00000032-0002-0010-8000-00aa00389b71} bBitsPerPixel 8 bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 2 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 0 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 1 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 360 dwMinBitRate 55296000 dwMaxBitRate 55296000 dwMaxVideoFrameBufferSize 460800 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 1 (BT.709) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0a80 2x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 [unknown] bInterfaceProtocol 0 iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 1050 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 8 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 254 Application Specific Interface bInterfaceSubClass 1 Device Firmware Update bInterfaceProtocol 1 iInterface 12 Device Firmware Upgrade Interface Descriptor: bLength 9 bDescriptorType 33 bmAttributes 15 Will Detach Manifestation Tolerant Upload Supported Download Supported wDetachTimeout 2000 milliseconds wTransferSize 4096 bytes bcdDFUVersion 1.10 -------------------End------------------------------------------- ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-03 8:11 [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) Kean Ren 2026-09-03 8:59 ` Ricardo Ribalda @ 2026-09-04 9:15 ` Ricardo Ribalda 2026-09-28 13:24 ` Laurent Pinchart 2026-09-29 15:00 ` Hans de Goede 2 siblings, 1 reply; 10+ messages in thread From: Ricardo Ribalda @ 2026-09-04 9:15 UTC (permalink / raw) To: Kean Ren Cc: Laurent Pinchart, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > The device binds cleanly but delivers no image data; USB autosuspend is > suspending the streaming endpoint. Disable autosuspend for it. > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > working with this quirk. > Link: https://lore.kernel.org/linux-media/20260904090751.1814783-1-rh_king@163.com/T/#mf5306ef689ce38ed331a3098272cb0ac2588ed79 > Tested-by: Kean Ren <rh_king@163.com> nit: I think we do not usually add the Tested-by: tag for authors. We expect that it has been tested :) > Signed-off-by: Kean Ren <rh_king@163.com> > --- > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index e289cc71ba98..32bf353013a1 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > .bInterfaceSubClass = 1, > .bInterfaceProtocol = 0, > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > + | USB_DEVICE_ID_MATCH_INT_INFO, > + .idVendor = 0x30c9, > + .idProduct = 0x0122, > + .bInterfaceClass = USB_CLASS_VIDEO, > + .bInterfaceSubClass = 1, > + .bInterfaceProtocol = 0, > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, The quirks are sorted by vid:pid. Sorry I did not notice this before. > /* Intel Realsense D435i depth camera */ > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > | USB_DEVICE_ID_MATCH_INT_INFO, > -- > 2.40.0 > > -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-04 9:15 ` Ricardo Ribalda @ 2026-09-28 13:24 ` Laurent Pinchart 2026-09-28 13:32 ` Ricardo Ribalda 0 siblings, 1 reply; 10+ messages in thread From: Laurent Pinchart @ 2026-09-28 13:24 UTC (permalink / raw) To: Ricardo Ribalda Cc: Kean Ren, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel On Fri, Sep 04, 2026 at 11:15:15AM +0200, Ricardo Ribalda wrote: > On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > > > The device binds cleanly but delivers no image data; USB autosuspend is > > suspending the streaming endpoint. Disable autosuspend for it. > > > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > > working with this quirk. > > > Link: https://lore.kernel.org/linux-media/20260904090751.1814783-1-rh_king@163.com/T/#mf5306ef689ce38ed331a3098272cb0ac2588ed79 When linking to the original thread on lore, the patch.msgid.link domain is preferred (see Documentation/process/maintainer-tip.rst). That would be Link: https://patch.msgid.link/linux-media/20260904090751.1814783-1-rh_king@163.com/ Did you mean to specifically link to the descriptors though ? As they're in the same mail thread, I think the link to the patch itself should be enough. Do you prefer otherwise ? > > Tested-by: Kean Ren <rh_king@163.com> > > nit: I think we do not usually add the Tested-by: tag for authors. We > expect that it has been tested :) Maybe we shouldn't :-) We merge plenty of code that hasn't been tested by the author, a prime example being API refactoring. Actually, reading Documentation/, I can't see anything that explicitly approves or forbids a Tested-by tag from the author. This being said, for driver patches like these I would certainly expect the author to have tested the change. > > Signed-off-by: Kean Ren <rh_king@163.com> > > --- > > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > > index e289cc71ba98..32bf353013a1 100644 > > --- a/drivers/media/usb/uvc/uvc_driver.c > > +++ b/drivers/media/usb/uvc/uvc_driver.c > > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > > .bInterfaceSubClass = 1, > > .bInterfaceProtocol = 0, > > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > + | USB_DEVICE_ID_MATCH_INT_INFO, > > + .idVendor = 0x30c9, > > + .idProduct = 0x0122, > > + .bInterfaceClass = USB_CLASS_VIDEO, > > + .bInterfaceSubClass = 1, > > + .bInterfaceProtocol = 0, > > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > > The quirks are sorted by vid:pid. Sorry I did not notice this before. I can handle this when applying. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > /* Intel Realsense D435i depth camera */ > > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > | USB_DEVICE_ID_MATCH_INT_INFO, -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-28 13:24 ` Laurent Pinchart @ 2026-09-28 13:32 ` Ricardo Ribalda 2026-09-28 18:50 ` Laurent Pinchart 0 siblings, 1 reply; 10+ messages in thread From: Ricardo Ribalda @ 2026-09-28 13:32 UTC (permalink / raw) To: Laurent Pinchart Cc: Kean Ren, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel Hi Laurent On Mon, 28 Sept 2026 at 15:24, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > On Fri, Sep 04, 2026 at 11:15:15AM +0200, Ricardo Ribalda wrote: > > On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > > > > > The device binds cleanly but delivers no image data; USB autosuspend is > > > suspending the streaming endpoint. Disable autosuspend for it. > > > > > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > > > working with this quirk. > > > > > Link: https://lore.kernel.org/linux-media/20260904090751.1814783-1-rh_king@163.com/T/#mf5306ef689ce38ed331a3098272cb0ac2588ed79 > > When linking to the original thread on lore, the patch.msgid.link domain > is preferred (see Documentation/process/maintainer-tip.rst). That would > be > > Link: https://patch.msgid.link/linux-media/20260904090751.1814783-1-rh_king@163.com/ > > Did you mean to specifically link to the descriptors though ? As they're > in the same mail thread, I think the link to the patch itself should be > enough. Do you prefer otherwise ? I wanted to link the usb descriptors. I'd rather have them copy pasted in to the commit message or with a link to lore (For the usb descriptors I think the doc says that we have to use lore ) > > > > Tested-by: Kean Ren <rh_king@163.com> > > > > nit: I think we do not usually add the Tested-by: tag for authors. We > > expect that it has been tested :) > > Maybe we shouldn't :-) We merge plenty of code that hasn't been tested > by the author, a prime example being API refactoring. Actually, reading > Documentation/, I can't see anything that explicitly approves or forbids > a Tested-by tag from the author. > > This being said, for driver patches like these I would certainly expect > the author to have tested the change. > > > > Signed-off-by: Kean Ren <rh_king@163.com> > > > --- > > > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > > > 1 file changed, 9 insertions(+) > > > > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > > > index e289cc71ba98..32bf353013a1 100644 > > > --- a/drivers/media/usb/uvc/uvc_driver.c > > > +++ b/drivers/media/usb/uvc/uvc_driver.c > > > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > > > .bInterfaceSubClass = 1, > > > .bInterfaceProtocol = 0, > > > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > > > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > > > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > > + | USB_DEVICE_ID_MATCH_INT_INFO, > > > + .idVendor = 0x30c9, > > > + .idProduct = 0x0122, > > > + .bInterfaceClass = USB_CLASS_VIDEO, > > > + .bInterfaceSubClass = 1, > > > + .bInterfaceProtocol = 0, > > > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > > > > The quirks are sorted by vid:pid. Sorry I did not notice this before. Can we please add this to the CI? It is a bit of a waste of time to manually verify that they are properly sorted > > I can handle this when applying. > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > > /* Intel Realsense D435i depth camera */ > > > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > > | USB_DEVICE_ID_MATCH_INT_INFO, > > -- > Regards, > > Laurent Pinchart -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-28 13:32 ` Ricardo Ribalda @ 2026-09-28 18:50 ` Laurent Pinchart 0 siblings, 0 replies; 10+ messages in thread From: Laurent Pinchart @ 2026-09-28 18:50 UTC (permalink / raw) To: Ricardo Ribalda Cc: Kean Ren, linux-media, Hans de Goede, Mauro Carvalho Chehab, linux-kernel On Mon, Sep 28, 2026 at 03:32:20PM +0200, Ricardo Ribalda wrote: > On Mon, 28 Sept 2026 at 15:24, Laurent Pinchart wrote: > > On Fri, Sep 04, 2026 at 11:15:15AM +0200, Ricardo Ribalda wrote: > > > On Thu, 3 Sept 2026 at 10:58, Kean Ren <rh_king@163.com> wrote: > > > > > > > > The device binds cleanly but delivers no image data; USB autosuspend is > > > > suspending the streaming endpoint. Disable autosuspend for it. > > > > > > > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > > > > working with this quirk. > > > > > > > Link: https://lore.kernel.org/linux-media/20260904090751.1814783-1-rh_king@163.com/T/#mf5306ef689ce38ed331a3098272cb0ac2588ed79 > > > > When linking to the original thread on lore, the patch.msgid.link domain > > is preferred (see Documentation/process/maintainer-tip.rst). That would > > be > > > > Link: https://patch.msgid.link/linux-media/20260904090751.1814783-1-rh_king@163.com/ > > > > Did you mean to specifically link to the descriptors though ? As they're > > in the same mail thread, I think the link to the patch itself should be > > enough. Do you prefer otherwise ? > > I wanted to link the usb descriptors. I'd rather have them copy pasted > in to the commit message or with a link to lore > (For the usb descriptors I think the doc says that we have to use lore ) Do you mean for links other than the original patch series ? I don't suppose the doc talks about USB descriptors explicitly :-) > > > > Tested-by: Kean Ren <rh_king@163.com> > > > > > > nit: I think we do not usually add the Tested-by: tag for authors. We > > > expect that it has been tested :) > > > > Maybe we shouldn't :-) We merge plenty of code that hasn't been tested > > by the author, a prime example being API refactoring. Actually, reading > > Documentation/, I can't see anything that explicitly approves or forbids > > a Tested-by tag from the author. > > > > This being said, for driver patches like these I would certainly expect > > the author to have tested the change. > > > > > > Signed-off-by: Kean Ren <rh_king@163.com> > > > > --- > > > > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > > > > 1 file changed, 9 insertions(+) > > > > > > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > > > > index e289cc71ba98..32bf353013a1 100644 > > > > --- a/drivers/media/usb/uvc/uvc_driver.c > > > > +++ b/drivers/media/usb/uvc/uvc_driver.c > > > > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > > > > .bInterfaceSubClass = 1, > > > > .bInterfaceProtocol = 0, > > > > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > > > > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > > > > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > > > + | USB_DEVICE_ID_MATCH_INT_INFO, > > > > + .idVendor = 0x30c9, > > > > + .idProduct = 0x0122, > > > > + .bInterfaceClass = USB_CLASS_VIDEO, > > > > + .bInterfaceSubClass = 1, > > > > + .bInterfaceProtocol = 0, > > > > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > > > > > > The quirks are sorted by vid:pid. Sorry I did not notice this before. > > Can we please add this to the CI? It is a bit of a waste of time to > manually verify that they are properly sorted It's a good idea. > > I can handle this when applying. > > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > > > > /* Intel Realsense D435i depth camera */ > > > > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > > > | USB_DEVICE_ID_MATCH_INT_INFO, -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) 2026-09-03 8:11 [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) Kean Ren 2026-09-03 8:59 ` Ricardo Ribalda 2026-09-04 9:15 ` Ricardo Ribalda @ 2026-09-29 15:00 ` Hans de Goede 2 siblings, 0 replies; 10+ messages in thread From: Hans de Goede @ 2026-09-29 15:00 UTC (permalink / raw) To: Kean Ren, Laurent Pinchart Cc: linux-media, Mauro Carvalho Chehab, linux-kernel Hi, On 3-Sep-26 10:11, Kean Ren wrote: > The device binds cleanly but delivers no image data; USB autosuspend is > suspending the streaming endpoint. Disable autosuspend for it. > > Issue found on Lenovo ThinkPad X13 (codename Zelda, Intel); confirmed > working with this quirk. > > Tested-by: Kean Ren <rh_king@163.com> > Signed-off-by: Kean Ren <rh_king@163.com> Thank you for your patch. I have merged this into: https://gitlab.freedesktop.org/linux-media/users/uvc/-/commits/for-next/ Regards, Hans > --- > drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index e289cc71ba98..32bf353013a1 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -3216,6 +3216,15 @@ static const struct usb_device_id uvc_ids[] = { > .bInterfaceSubClass = 1, > .bInterfaceProtocol = 0, > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > + /* Luxvisions Innotech Integrated RGB Camera (Lenovo laptops) */ > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > + | USB_DEVICE_ID_MATCH_INT_INFO, > + .idVendor = 0x30c9, > + .idProduct = 0x0122, > + .bInterfaceClass = USB_CLASS_VIDEO, > + .bInterfaceSubClass = 1, > + .bInterfaceProtocol = 0, > + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) }, > /* Intel Realsense D435i depth camera */ > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > | USB_DEVICE_ID_MATCH_INT_INFO, > -- > 2.40.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-09-29 15:00 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-09-03 8:11 [PATCH] media: uvcvideo: Add quirk for Luxvisions RGB Camera (30c9:0122) Kean Ren 2026-09-03 8:59 ` Ricardo Ribalda 2026-09-04 8:37 ` 任海 2026-09-04 8:40 ` Ricardo Ribalda 2026-09-04 9:07 ` rh_king 2026-09-04 9:15 ` Ricardo Ribalda 2026-09-28 13:24 ` Laurent Pinchart 2026-09-28 13:32 ` Ricardo Ribalda 2026-09-28 18:50 ` Laurent Pinchart 2026-09-29 15:00 ` Hans de Goede
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox