diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2012-05-15 19:58:45 -0400 |
---|---|---|
committer | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2012-05-18 18:41:53 -0400 |
commit | 448b6eb1e04cddc418d4b780ae19ca8cdb42d110 (patch) | |
tree | e354c9392df245183746a1c075b2bb95979a2156 /drivers/usb/core | |
parent | 797b0ca5e6283b4cc0bdeeb0e5915f21522ba85f (diff) |
USB: Make sure to fetch the BOS desc for roothubs.
The BOS descriptor is normally fetched and stored in the usb_device->bos
during enumeration. USB 3.0 roothubs don't undergo enumeration, but we
need them to have a BOS descriptor, since each xHCI host has a different
U1 and U2 exit latency. Make sure to fetch the BOS descriptor for USB
3.0 roothubs. It will be freed when the roothub usb_device is released.
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: Andiry Xu <andiry.xu@amd.com>
Diffstat (limited to 'drivers/usb/core')
-rw-r--r-- | drivers/usb/core/hcd.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 0cd2daacacbe..190b1ec7bdcb 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -997,6 +997,15 @@ static int register_root_hub(struct usb_hcd *hcd) | |||
997 | dev_name(&usb_dev->dev), retval); | 997 | dev_name(&usb_dev->dev), retval); |
998 | return (retval < 0) ? retval : -EMSGSIZE; | 998 | return (retval < 0) ? retval : -EMSGSIZE; |
999 | } | 999 | } |
1000 | if (usb_dev->speed == USB_SPEED_SUPER) { | ||
1001 | retval = usb_get_bos_descriptor(usb_dev); | ||
1002 | if (retval < 0) { | ||
1003 | mutex_unlock(&usb_bus_list_lock); | ||
1004 | dev_dbg(parent_dev, "can't read %s bos descriptor %d\n", | ||
1005 | dev_name(&usb_dev->dev), retval); | ||
1006 | return retval; | ||
1007 | } | ||
1008 | } | ||
1000 | 1009 | ||
1001 | retval = usb_new_device (usb_dev); | 1010 | retval = usb_new_device (usb_dev); |
1002 | if (retval) { | 1011 | if (retval) { |