Re: media: uvcvideo: Support realtek's UVC 1.5 device

From: Josef ÅimÃnek
Date: Mon May 14 2018 - 13:38:22 EST


I'm really sorry, but this message was originally meant to be sent
(and was already also sent) to linux-media. Please ignore here.

2018-05-14 19:28 GMT+02:00 Josef ÅimÃnek <josef.simanek@xxxxxxxxx>:
>
> > The length of UVC 1.5 video control is 48, and it id 34 for UVC 1.1.
> > Change it to 48 for UVC 1.5 device,
> > and the UVC 1.5 device can be recognized.
> >
> > More changes to the driver are needed for full UVC 1.5 compatibility.
> > However, at least the UVC 1.5 Realtek RTS5847/RTS5852 cameras have
> > been reported to work well.
> >
> > Signed-off-by: ming_qian <ming_qian@xxxxxxxxxxxxxx>
> > Tested-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
> Hello! I have sucessfully tested this patch on Kernel 4.16.1 (Fedora 28) with Dell XPS 9370
> using following device (output from lsusb):
>
> Bus 001 Device 002: ID 0bda:58f4 Realtek Semiconductor Corp.
>
> You can also find related dmesg output at https://bugs.launchpad.net/dell-sputnik/+bug/1763748/comments/35
>
> Tested-by: Josef ÅimÃnek <josef.simanek@xxxxxxxxx>
> > Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> > ---
> > drivers/media/usb/uvc/uvc_video.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c
> > index aa0082f..32dfb32 100644
> > --- a/drivers/media/usb/uvc/uvc_video.c
> > +++ b/drivers/media/usb/uvc/uvc_video.c
> > @@ -171,6 +171,8 @@ static int uvc_get_video_ctrl(struct uvc_streaming *stream,
> > int ret;
> >
> > size = stream->dev->uvc_version >= 0x0110 ? 34 : 26;
> > + if (stream->dev->uvc_version >= 0x0150)
> > + size = 48;
> > if ((stream->dev->quirks & UVC_QUIRK_PROBE_DEF) &&
> > query == UVC_GET_DEF)
> > return -EIO;
> > @@ -259,6 +261,8 @@ static int uvc_set_video_ctrl(struct uvc_streaming *stream,
> > int ret;
> >
> > size = stream->dev->uvc_version >= 0x0110 ? 34 : 26;
> > + if (stream->dev->uvc_version >= 0x0150)
> > + size = 48;
> > data = kzalloc(size, GFP_KERNEL);
> > if (data == NULL)
> > return -ENOMEM;