diff options
Diffstat (limited to 'drivers/usb/host/xhci.c')
-rw-r--r-- | drivers/usb/host/xhci.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index dfa44d3e8eee..3f912705dcef 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c | |||
@@ -4778,8 +4778,16 @@ int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev, | |||
4778 | ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG); | 4778 | ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG); |
4779 | slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx); | 4779 | slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx); |
4780 | slot_ctx->dev_info |= cpu_to_le32(DEV_HUB); | 4780 | slot_ctx->dev_info |= cpu_to_le32(DEV_HUB); |
4781 | /* | ||
4782 | * refer to section 6.2.2: MTT should be 0 for full speed hub, | ||
4783 | * but it may be already set to 1 when setup an xHCI virtual | ||
4784 | * device, so clear it anyway. | ||
4785 | */ | ||
4781 | if (tt->multi) | 4786 | if (tt->multi) |
4782 | slot_ctx->dev_info |= cpu_to_le32(DEV_MTT); | 4787 | slot_ctx->dev_info |= cpu_to_le32(DEV_MTT); |
4788 | else if (hdev->speed == USB_SPEED_FULL) | ||
4789 | slot_ctx->dev_info &= cpu_to_le32(~DEV_MTT); | ||
4790 | |||
4783 | if (xhci->hci_version > 0x95) { | 4791 | if (xhci->hci_version > 0x95) { |
4784 | xhci_dbg(xhci, "xHCI version %x needs hub " | 4792 | xhci_dbg(xhci, "xHCI version %x needs hub " |
4785 | "TT think time and number of ports\n", | 4793 | "TT think time and number of ports\n", |