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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html