From: Brandon Philips 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 --- 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 @@ -811,6 +811,10 @@ int uvc_query_v4l2_ctrl(struct uvc_video unsigned int i; int ret; + 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); if (ctrl == NULL) return -EINVAL; --- a/drivers/media/video/uvc/uvc_driver.c +++ b/drivers/media/video/uvc/uvc_driver.c @@ -2198,6 +2198,14 @@ static struct usb_device_id uvc_ids[] = .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 @@ -163,6 +163,7 @@ struct uvc_xu_control { #define UVC_QUIRK_IGNORE_SELECTOR_UNIT 0x00000020 #define UVC_QUIRK_FIX_BANDWIDTH 0x00000080 #define UVC_QUIRK_PROBE_DEF 0x00000100 +#define UVC_QUIRK_HUE_EPIPE 0x00000200 /* Format flags */ #define UVC_FMT_FLAG_COMPRESSED 0x00000001