diff options
| -rw-r--r-- | drivers/usb/core/hcd.c | 7 | ||||
| -rw-r--r-- | drivers/usb/core/hub.c | 2 | ||||
| -rw-r--r-- | drivers/usb/core/usb.h | 1 |
3 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index be5b2074f906..cbcd0920fb51 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
| @@ -1022,9 +1022,12 @@ static int register_root_hub(struct usb_hcd *hcd) | |||
| 1022 | dev_name(&usb_dev->dev), retval); | 1022 | dev_name(&usb_dev->dev), retval); |
| 1023 | return (retval < 0) ? retval : -EMSGSIZE; | 1023 | return (retval < 0) ? retval : -EMSGSIZE; |
| 1024 | } | 1024 | } |
| 1025 | if (usb_dev->speed == USB_SPEED_SUPER) { | 1025 | |
| 1026 | if (le16_to_cpu(usb_dev->descriptor.bcdUSB) >= 0x0201) { | ||
| 1026 | retval = usb_get_bos_descriptor(usb_dev); | 1027 | retval = usb_get_bos_descriptor(usb_dev); |
| 1027 | if (retval < 0) { | 1028 | if (!retval) { |
| 1029 | usb_dev->lpm_capable = usb_device_supports_lpm(usb_dev); | ||
| 1030 | } else if (usb_dev->speed == USB_SPEED_SUPER) { | ||
| 1028 | mutex_unlock(&usb_bus_list_lock); | 1031 | mutex_unlock(&usb_bus_list_lock); |
| 1029 | dev_dbg(parent_dev, "can't read %s bos descriptor %d\n", | 1032 | dev_dbg(parent_dev, "can't read %s bos descriptor %d\n", |
| 1030 | dev_name(&usb_dev->dev), retval); | 1033 | dev_name(&usb_dev->dev), retval); |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 43cb2f2e3b43..73dfa194160b 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
| @@ -122,7 +122,7 @@ struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev) | |||
| 122 | return usb_get_intfdata(hdev->actconfig->interface[0]); | 122 | return usb_get_intfdata(hdev->actconfig->interface[0]); |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | static int usb_device_supports_lpm(struct usb_device *udev) | 125 | int usb_device_supports_lpm(struct usb_device *udev) |
| 126 | { | 126 | { |
| 127 | /* USB 2.1 (and greater) devices indicate LPM support through | 127 | /* USB 2.1 (and greater) devices indicate LPM support through |
| 128 | * their USB 2.0 Extended Capabilities BOS descriptor. | 128 | * their USB 2.0 Extended Capabilities BOS descriptor. |
diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h index 7eb1e26798e5..457255a3306a 100644 --- a/drivers/usb/core/usb.h +++ b/drivers/usb/core/usb.h | |||
| @@ -65,6 +65,7 @@ extern int usb_hub_init(void); | |||
| 65 | extern void usb_hub_cleanup(void); | 65 | extern void usb_hub_cleanup(void); |
| 66 | extern int usb_major_init(void); | 66 | extern int usb_major_init(void); |
| 67 | extern void usb_major_cleanup(void); | 67 | extern void usb_major_cleanup(void); |
| 68 | extern int usb_device_supports_lpm(struct usb_device *udev); | ||
| 68 | 69 | ||
| 69 | #ifdef CONFIG_PM | 70 | #ifdef CONFIG_PM |
| 70 | 71 | ||
