]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.drivers/uvcvideo-ignore-hue-control-for-5986-0241.patch
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / uvcvideo-ignore-hue-control-for-5986-0241.patch
diff --git a/src/patches/suse-2.6.27.31/patches.drivers/uvcvideo-ignore-hue-control-for-5986-0241.patch b/src/patches/suse-2.6.27.31/patches.drivers/uvcvideo-ignore-hue-control-for-5986-0241.patch
new file mode 100644 (file)
index 0000000..0307088
--- /dev/null
@@ -0,0 +1,57 @@
+From: Brandon Philips <bphilips@suse.de>
+Subject: uvcvideo: ignore hue control for 5986:0241
+References: bnc#499152
+Patch-mainline: Never? I will submit upstream but there is probably a better fix
+
+Querying the hue control on Bison 5986:0241 causes the chipset to
+lockup. So, create a quirk that will avoid offering V4L2_CID_HUE to user
+space.
+
+Signed-off-by: Brandon Philips <bphilips@suse.de>
+
+---
+ drivers/media/video/uvc/uvc_ctrl.c   |    4 ++++
+ drivers/media/video/uvc/uvc_driver.c |    8 ++++++++
+ drivers/media/video/uvc/uvcvideo.h   |    1 +
+ 3 files changed, 13 insertions(+)
+
+--- a/drivers/media/video/uvc/uvc_ctrl.c
++++ b/drivers/media/video/uvc/uvc_ctrl.c
+@@ -588,6 +588,10 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+       __u8 *data;
+       int ret;
++      if ((video->dev->quirks & UVC_QUIRK_HUE_EPIPE) &&
++              (v4l2_ctrl->id == V4L2_CID_HUE))
++              return -EINVAL;
++
+       ctrl = uvc_find_control(video, v4l2_ctrl->id, &mapping);
+       if (ctrl == NULL)
+               return -EINVAL;
+--- a/drivers/media/video/uvc/uvc_driver.c
++++ b/drivers/media/video/uvc/uvc_driver.c
+@@ -1948,6 +1948,14 @@ static struct usb_device_id uvc_ids[] =
+         .bInterfaceSubClass   = 1,
+         .bInterfaceProtocol   = 0,
+         .driver_info          = UVC_QUIRK_PROBE_MINMAX },
++      { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
++                              | USB_DEVICE_ID_MATCH_INT_INFO,
++        .idVendor             = 0x5986,
++        .idProduct            = 0x0241,
++        .bInterfaceClass      = USB_CLASS_VIDEO,
++        .bInterfaceSubClass   = 1,
++        .bInterfaceProtocol   = 0,
++        .driver_info          = UVC_QUIRK_HUE_EPIPE },
+       /* Generic USB Video Class */
+       { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) },
+       {}
+--- a/drivers/media/video/uvc/uvcvideo.h
++++ b/drivers/media/video/uvc/uvcvideo.h
+@@ -314,6 +314,7 @@ struct uvc_xu_control {
+ #define UVC_QUIRK_BUILTIN_ISIGHT      0x00000008
+ #define UVC_QUIRK_STREAM_NO_FID               0x00000010
+ #define UVC_QUIRK_IGNORE_SELECTOR_UNIT        0x00000020
++#define UVC_QUIRK_HUE_EPIPE           0x00000100
+ /* Format flags */
+ #define UVC_FMT_FLAG_COMPRESSED               0x00000001