On Mon, Sep 16, 2024 at 01:55:15PM +0200, Ricardo Ribalda wrote: > 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/ The patch should also be split in two, one patch to add the new format to drivers/media/common/uvc.c and include/linux/usb/uvc.c, and a second patch to add the device quirk to drivers/media/usb/uvc/uvc_driver.c. This follows the "one change, one patch" principle of the kernel, and eases review as well as backporting. Indentation looks wrong in the patch, did you format it with git-format-patch and send it with git-send-email ? > 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} -- Regards, Laurent Pinchart