uvcvideo: add quirk for devices with broken auto suspend
We found that some usb cameras(e.g. Manufacturer: HD Camera Manufacturer, idVendor=05a3, idProduct=9230) can't support auto-suspend well on rockchip platforms. With auto-suspend, these usb cameras MJPEG will display abnormally on all usb controllers(DWC2/DWC3/EHCI). So we need to disable auto suspend for these special usb cameras. Change-Id: Ibf50ed77edff0012a112dc42f09e022055908829 Signed-off-by: Wu Liang feng <wulf@rock-chips.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/usb.h>
|
||||
#include <linux/usb/quirks.h>
|
||||
#include <linux/videodev2.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/wait.h>
|
||||
@@ -2309,7 +2310,10 @@ static int uvc_probe(struct usb_interface *intf,
|
||||
}
|
||||
|
||||
uvc_trace(UVC_TRACE_PROBE, "UVC device initialized.\n");
|
||||
usb_enable_autosuspend(udev);
|
||||
if (udev->quirks & USB_QUIRK_AUTO_SUSPEND)
|
||||
uvc_printk(KERN_INFO, "auto-suspend is blacklisted for this device\n");
|
||||
else
|
||||
usb_enable_autosuspend(udev);
|
||||
return 0;
|
||||
|
||||
error:
|
||||
|
||||
@@ -322,6 +322,9 @@ static const struct usb_device_id usb_quirk_list[] = {
|
||||
/* Alcor Micro Corp. Hub */
|
||||
{ USB_DEVICE(0x058f, 0x9254), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
/* HD Camera Manufacturer */
|
||||
{ USB_DEVICE(0x05a3, 0x9230), .driver_info = USB_QUIRK_AUTO_SUSPEND },
|
||||
|
||||
/* appletouch */
|
||||
{ USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
|
||||
Reference in New Issue
Block a user