} else {
                /*
                 * Some 3.1 hosts return sbrn 0x30, use xhci supported protocol
-                * minor revision instead of sbrn
+                * minor revision instead of sbrn. Minor revision is a two digit
+                * BCD containing minor and sub-minor numbers, only show minor.
                 */
-               minor_rev = xhci->usb3_rhub.min_rev;
-               if (minor_rev) {
+               minor_rev = xhci->usb3_rhub.min_rev / 0x10;
+
+               switch (minor_rev) {
+               case 2:
+                       hcd->speed = HCD_USB32;
+                       hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS;
+                       hcd->self.root_hub->rx_lanes = 2;
+                       hcd->self.root_hub->tx_lanes = 2;
+                       break;
+               case 1:
                        hcd->speed = HCD_USB31;
                        hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS;
+                       break;
                }
-               xhci_info(xhci, "Host supports USB 3.%x %s SuperSpeed\n",
+               xhci_info(xhci, "Host supports USB 3.%x %sSuperSpeed\n",
                          minor_rev,
-                         minor_rev ? "Enhanced" : "");
+                         minor_rev ? "Enhanced " : "");
 
                xhci->usb3_rhub.hcd = hcd;
                /* xHCI private pointer was set in xhci_pci_probe for the second