|
@@ -4778,8 +4778,16 @@ int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev,
|
|
|
ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
|
|
|
slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx);
|
|
|
slot_ctx->dev_info |= cpu_to_le32(DEV_HUB);
|
|
|
+ /*
|
|
|
+ * refer to section 6.2.2: MTT should be 0 for full speed hub,
|
|
|
+ * but it may be already set to 1 when setup an xHCI virtual
|
|
|
+ * device, so clear it anyway.
|
|
|
+ */
|
|
|
if (tt->multi)
|
|
|
slot_ctx->dev_info |= cpu_to_le32(DEV_MTT);
|
|
|
+ else if (hdev->speed == USB_SPEED_FULL)
|
|
|
+ slot_ctx->dev_info &= cpu_to_le32(~DEV_MTT);
|
|
|
+
|
|
|
if (xhci->hci_version > 0x95) {
|
|
|
xhci_dbg(xhci, "xHCI version %x needs hub "
|
|
|
"TT think time and number of ports\n",
|