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>
This commit is contained in:
parent
797b0ca5e6
commit
448b6eb1e0
1 changed files with 9 additions and 0 deletions
|
@ -997,6 +997,15 @@ static int register_root_hub(struct usb_hcd *hcd)
|
||||||
dev_name(&usb_dev->dev), retval);
|
dev_name(&usb_dev->dev), retval);
|
||||||
return (retval < 0) ? retval : -EMSGSIZE;
|
return (retval < 0) ? retval : -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
if (usb_dev->speed == USB_SPEED_SUPER) {
|
||||||
|
retval = usb_get_bos_descriptor(usb_dev);
|
||||||
|
if (retval < 0) {
|
||||||
|
mutex_unlock(&usb_bus_list_lock);
|
||||||
|
dev_dbg(parent_dev, "can't read %s bos descriptor %d\n",
|
||||||
|
dev_name(&usb_dev->dev), retval);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
retval = usb_new_device (usb_dev);
|
retval = usb_new_device (usb_dev);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
|
|
Loading…
Reference in a new issue