HI David Can you add the output of lsusb -v -d 1fc9 ? Also, the patch should be implemented of top of https://git.linuxtv.org/media_stage.git/log/ Could you rebase your patch and send as v2? https://patchwork.linuxtv.org/project/linux-media/patch/CALgV52gHPWrcBBv2m6fAAyF_i_8T7cRTtBRS+FKe4TgfRVG0DA@xxxxxxxxxxxxxx/ Thanks! On Sun, 15 Sept 2024 at 21:32, David Given <dg@xxxxxxxxxxx> wrote: > > - adds support for the D3DFMT_R5G6B5 bitmap format (just RGBP but with > a different GUID) > - adds a quirk for the Kaiweets camera which uses it > > The camera uses an NXP chipset (product ID 0x1fc9), but I can't find > any references to a device with vendor ID 0x009b. It may be specific > to the Kaiweets camera. > > diff --git a/drivers/media/common/uvc.c b/drivers/media/common/uvc.c > index c54c2268f..c12d58932 100644 > --- a/drivers/media/common/uvc.c > +++ b/drivers/media/common/uvc.c > @@ -96,6 +96,10 @@ static const struct uvc_format_desc uvc_fmts[] = { > .guid = UVC_GUID_FORMAT_RGBP, > .fcc = V4L2_PIX_FMT_RGB565, > }, > + { > + .guid = UVC_GUID_FORMAT_D3DFMT_R5G6B5, > + .fcc = V4L2_PIX_FMT_RGB565, > + }, > { > .guid = UVC_GUID_FORMAT_BGR3, > .fcc = V4L2_PIX_FMT_BGR24, > diff --git a/drivers/media/usb/uvc/uvc_driver.c > b/drivers/media/usb/uvc/uvc_driver.c > index f0febdc08..5a29f6970 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -3072,6 +3072,15 @@ static const struct usb_device_id uvc_ids[] = { > .bInterfaceSubClass = 1, > .bInterfaceProtocol = 0, > .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, > + /* NXP Semiconductors IR VIDEO */ > + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > + | USB_DEVICE_ID_MATCH_INT_INFO, The quirks are sorted by idVendor:IdProduct > + .idVendor = 0x1fc9, > + .idProduct = 0x009b, > + .bInterfaceClass = USB_CLASS_VIDEO, > + .bInterfaceSubClass = 1, > + .bInterfaceProtocol = 0, > + .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax }, > /* 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) }, > diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h > index 88d96095b..01c3b2f45 100644 > --- a/include/linux/usb/uvc.h > +++ b/include/linux/usb/uvc.h > @@ -140,6 +140,9 @@ > #define UVC_GUID_FORMAT_D3DFMT_L8 \ > {0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} > +#define UVC_GUID_FORMAT_D3DFMT_R5G6B5 \ > + {0x7b, 0xeb, 0x36, 0xe4, 0x4f, 0x52, 0xce, 0x11, \ > + 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} > #define UVC_GUID_FORMAT_KSMEDIA_L8_IR \ > {0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} > -- Ricardo Ribalda