|
@@ -4838,6 +4838,7 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
|
|
|
* quirks
|
|
|
*/
|
|
|
struct device *dev = hcd->self.sysdev;
|
|
|
+ unsigned int minor_rev;
|
|
|
int retval;
|
|
|
|
|
|
/* Accept arbitrarily long scatter-gather lists */
|
|
@@ -4865,12 +4866,19 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
|
|
|
*/
|
|
|
hcd->has_tt = 1;
|
|
|
} else {
|
|
|
- /* Some 3.1 hosts return sbrn 0x30, can't rely on sbrn alone */
|
|
|
- if (xhci->sbrn == 0x31 || xhci->usb3_rhub.min_rev >= 1) {
|
|
|
- xhci_info(xhci, "Host supports USB 3.1 Enhanced SuperSpeed\n");
|
|
|
+ /*
|
|
|
+ * Some 3.1 hosts return sbrn 0x30, use xhci supported protocol
|
|
|
+ * minor revision instead of sbrn
|
|
|
+ */
|
|
|
+ minor_rev = xhci->usb3_rhub.min_rev;
|
|
|
+ if (minor_rev) {
|
|
|
hcd->speed = HCD_USB31;
|
|
|
hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS;
|
|
|
}
|
|
|
+ xhci_info(xhci, "Host supports USB 3.%x %s SuperSpeed\n",
|
|
|
+ minor_rev,
|
|
|
+ minor_rev ? "Enhanced" : "");
|
|
|
+
|
|
|
/* xHCI private pointer was set in xhci_pci_probe for the second
|
|
|
* registered roothub.
|
|
|
*/
|