On Sat, 31 Oct 2015, Steinar H. Gunderson wrote:
> On Wed, Oct 21, 2015 at 09:49:16AM +0800, Lu, Baolu wrote:
> > I could spend some time on this issue a week later.
> > I'd like to check whether there is any bugs in the driver itself.
> > Otherwise, blacklist this specific device for LPM.
>
> I don't know if anything happened here, but if you need information for a
> blacklist, the two devices I've tested (which both have this issue) are:
>
> - 1edb:bd3b (Blackmagic Design Intensity Shuttle)
> - 1edb:bd4f (Blackmagic Design UltraStudio SDI)
To make your life easier, here's a patch which blacklists these two
devices for Link Power Management. Please let me know if it works
okay.
Alan Stern
Index: usb-4.3/include/linux/usb/quirks.h
===================================================================
--- usb-4.3.orig/include/linux/usb/quirks.h
+++ usb-4.3/include/linux/usb/quirks.h
@@ -47,4 +47,7 @@
/* device generates spurious wakeup, ignore remote wakeup capability */
#define USB_QUIRK_IGNORE_REMOTE_WAKEUP BIT(9)
+/* device can't handle Link Power Management */
+#define USB_QUIRK_NO_LPM BIT(10)
+
#endif /* __LINUX_USB_QUIRKS_H */
Index: usb-4.3/drivers/usb/core/hub.c
===================================================================
--- usb-4.3.orig/drivers/usb/core/hub.c
+++ usb-4.3/drivers/usb/core/hub.c
@@ -124,6 +124,10 @@ struct usb_hub *usb_hub_to_struct_hub(st
int usb_device_supports_lpm(struct usb_device *udev)
{
+ /* Some devices have trouble with LPM */
+ if (udev->quirks & USB_QUIRK_NO_LPM)
+ return 0;
+
/* USB 2.1 (and greater) devices indicate LPM support through
* their USB 2.0 Extended Capabilities BOS descriptor.
*/
@@ -4503,6 +4507,8 @@ hub_port_init (struct usb_hub *hub, stru
goto fail;
}
+ usb_detect_quirks(udev);
+
if (udev->wusb == 0 && le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0201) {
retval = usb_get_bos_descriptor(udev);
if (!retval) {
@@ -4701,7 +4707,6 @@ static void hub_port_connect(struct usb_
if (status < 0)
goto loop;
- usb_detect_quirks(udev);
if (udev->quirks & USB_QUIRK_DELAY_INIT)
msleep(1000);
Index: usb-4.3/drivers/usb/core/quirks.c
===================================================================
--- usb-4.3.orig/drivers/usb/core/quirks.c
+++ usb-4.3/drivers/usb/core/quirks.c
@@ -186,6 +186,12 @@ static const struct usb_device_id usb_qu
{ USB_DEVICE(0x1a0a, 0x0200), .driver_info =
USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL },
+ /* Blackmagic Design Intensity Shuttle */
+ { USB_DEVICE(0x1edb, 0xbd3b), .driver_info = USB_QUIRK_NO_LPM },
+
+ /* Blackmagic Design UltraStudio SDI */
+ { USB_DEVICE(0x1edb, 0xbd4f), .driver_info = USB_QUIRK_NO_LPM },
+
{ } /* terminating entry must be last */
};
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html