2010-07-07 11:12:45 +00:00
|
|
|
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
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -862,6 +862,10 @@ int uvc_query_v4l2_ctrl(struct uvc_video
|
|
|
|
if (ret < 0)
|
|
|
|
return -ERESTARTSYS;
|
2010-07-07 11:12:45 +00:00
|
|
|
|
|
|
|
+ if ((chain->dev->quirks & UVC_QUIRK_HUE_EPIPE) &&
|
|
|
|
+ (v4l2_ctrl->id == V4L2_CID_HUE))
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping);
|
2011-04-19 20:09:59 +00:00
|
|
|
if (ctrl == NULL) {
|
|
|
|
ret = -EINVAL;
|
2010-07-07 11:12:45 +00:00
|
|
|
--- a/drivers/media/video/uvc/uvc_driver.c
|
|
|
|
+++ b/drivers/media/video/uvc/uvc_driver.c
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -2239,6 +2239,14 @@ static struct usb_device_id uvc_ids[] =
|
2010-07-07 11:12:45 +00:00
|
|
|
.bInterfaceProtocol = 0,
|
|
|
|
.driver_info = UVC_QUIRK_PROBE_MINMAX
|
|
|
|
| UVC_QUIRK_IGNORE_SELECTOR_UNIT },
|
|
|
|
+ { .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
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -182,6 +182,7 @@ struct uvc_xu_control {
|
2010-07-07 11:12:45 +00:00
|
|
|
#define UVC_QUIRK_FIX_BANDWIDTH 0x00000080
|
|
|
|
#define UVC_QUIRK_PROBE_DEF 0x00000100
|
2011-04-19 20:09:59 +00:00
|
|
|
#define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200
|
|
|
|
+#define UVC_QUIRK_HUE_EPIPE 0x00000400
|
2010-07-07 11:12:45 +00:00
|
|
|
|
|
|
|
/* Format flags */
|
|
|
|
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|