|
@@ -1022,9 +1022,12 @@ static int register_root_hub(struct usb_hcd *hcd)
|
|
|
dev_name(&usb_dev->dev), retval);
|
|
|
return (retval < 0) ? retval : -EMSGSIZE;
|
|
|
}
|
|
|
- if (usb_dev->speed == USB_SPEED_SUPER) {
|
|
|
+
|
|
|
+ if (le16_to_cpu(usb_dev->descriptor.bcdUSB) >= 0x0201) {
|
|
|
retval = usb_get_bos_descriptor(usb_dev);
|
|
|
- if (retval < 0) {
|
|
|
+ if (!retval) {
|
|
|
+ usb_dev->lpm_capable = usb_device_supports_lpm(usb_dev);
|
|
|
+ } else if (usb_dev->speed == USB_SPEED_SUPER) {
|
|
|
mutex_unlock(&usb_bus_list_lock);
|
|
|
dev_dbg(parent_dev, "can't read %s bos descriptor %d\n",
|
|
|
dev_name(&usb_dev->dev), retval);
|