xHCI 1.0: TT_THINK_TIME set
authorAndiry Xu <andiry.xu@amd.com>
Thu, 5 May 2011 10:14:05 +0000 (18:14 +0800)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Mon, 9 May 2011 16:34:47 +0000 (09:34 -0700)
xHCI 1.0 spec says the TT Think Time field shall be set to zero if the device
is not a High-speed hub.

Signed-off-by: Andiry Xu <andiry.xu@amd.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
drivers/usb/host/xhci.c

index 6864759c8d1a27aba81c9f6ef1b732dca2a1adba..3abf33223b1c3057ce862ee7587ee4ca2fcde8ec 100644 (file)
@@ -2699,11 +2699,16 @@ int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev,
                /* Set TT think time - convert from ns to FS bit times.
                 * 0 = 8 FS bit times, 1 = 16 FS bit times,
                 * 2 = 24 FS bit times, 3 = 32 FS bit times.
+                *
+                * xHCI 1.0: this field shall be 0 if the device is not a
+                * High-spped hub.
                 */
                think_time = tt->think_time;
                if (think_time != 0)
                        think_time = (think_time / 666) - 1;
-               slot_ctx->tt_info |= cpu_to_le32(TT_THINK_TIME(think_time));
+               if (xhci->hci_version < 0x100 || hdev->speed == USB_SPEED_HIGH)
+                       slot_ctx->tt_info |=
+                               cpu_to_le32(TT_THINK_TIME(think_time));
        } else {
                xhci_dbg(xhci, "xHCI version %x doesn't need hub "
                                "TT think time or number of ports\n",