aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2012-05-15 19:58:45 -0400
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2012-05-18 18:41:53 -0400
commit448b6eb1e04cddc418d4b780ae19ca8cdb42d110 (patch)
treee354c9392df245183746a1c075b2bb95979a2156 /drivers/usb/core
parent797b0ca5e6283b4cc0bdeeb0e5915f21522ba85f (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.c9
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) {