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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sarah Sharp
				Sarah Sharp