Message ID | 20180514053709.23553-2-kai.heng.feng@canonical.com |
---|---|
State | Accepted |
Headers | show |
Series | Fix Non-working UVC 1.5 Webcam on XPS 9370 | expand |
Acked-By:
On Mon, May 14, 2018 at 01:37:09PM +0800, Kai-Heng Feng wrote: > From: ming_qian <ming_qian@realsil.com.cn> > > BugLink: https://bugs.launchpad.net/bugs/1763748 > > 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@realsil.com.cn> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> > --- > 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 fb86d6af398d..4114915f1171 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; > -- > 2.17.0 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team Seems to do what is claimed and is easily testable. Acked-by: Andy Whitcroft <apw@canonical.com> -apw
diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c index fb86d6af398d..4114915f1171 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;