Re: [PATCH] uvc: add support for the Kaiweets KTI-W02 infrared camera

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux