tree 9a537e417df8b8ab0d8e121f6a3e596898ec8ec0
parent 090ffa9d0e904e1ed0f86c84dcf20684a8ac1a5a
author [EMAIL PROTECTED] <[EMAIL PROTECTED]> Sun, 14 Aug 2005 08:41:04 -0700
committer Greg Kroah-Hartman <[EMAIL PROTECTED]> Fri, 09 Sep 2005 06:28:35 -0700

[PATCH] ehci: add think_time

This adds think_time to the usb_tt struct and sets it appropriately
(measured in ns); this can help us implement better split transaction
scheduling.

Signed-off-by: Dan Streetman <[EMAIL PROTECTED]>
Signed-off-by: David Brownell <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

 drivers/usb/core/hub.c |   32 +++++++++++++++++++++++---------
 drivers/usb/core/hub.h |    7 +++++++
 2 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -627,19 +627,33 @@ static int hub_configure(struct usb_hub 
                        break;
        }
 
+       /* Note 8 FS bit times == (8 bits / 12000000 bps) ~= 666ns */
        switch (hub->descriptor->wHubCharacteristics & HUB_CHAR_TTTT) {
-               case 0x00:
-                       if (hdev->descriptor.bDeviceProtocol != 0)
-                               dev_dbg(hub_dev, "TT requires at most 8 FS bit 
times\n");
+               case HUB_TTTT_8_BITS:
+                       if (hdev->descriptor.bDeviceProtocol != 0) {
+                               hub->tt.think_time = 666;
+                               dev_dbg(hub_dev, "TT requires at most %d "
+                                               "FS bit times (%d ns)\n",
+                                       8, hub->tt.think_time);
+                       }
                        break;
-               case 0x20:
-                       dev_dbg(hub_dev, "TT requires at most 16 FS bit 
times\n");
+               case HUB_TTTT_16_BITS:
+                       hub->tt.think_time = 666 * 2;
+                       dev_dbg(hub_dev, "TT requires at most %d "
+                                       "FS bit times (%d ns)\n",
+                               16, hub->tt.think_time);
                        break;
-               case 0x40:
-                       dev_dbg(hub_dev, "TT requires at most 24 FS bit 
times\n");
+               case HUB_TTTT_24_BITS:
+                       hub->tt.think_time = 666 * 3;
+                       dev_dbg(hub_dev, "TT requires at most %d "
+                                       "FS bit times (%d ns)\n",
+                               24, hub->tt.think_time);
                        break;
-               case 0x60:
-                       dev_dbg(hub_dev, "TT requires at most 32 FS bit 
times\n");
+               case HUB_TTTT_32_BITS:
+                       hub->tt.think_time = 666 * 4;
+                       dev_dbg(hub_dev, "TT requires at most %d "
+                                       "FS bit times (%d ns)\n",
+                               32, hub->tt.think_time);
                        break;
        }
 
diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
--- a/drivers/usb/core/hub.h
+++ b/drivers/usb/core/hub.h
@@ -157,6 +157,12 @@ enum hub_led_mode {
 
 struct usb_device;
 
+/* Transaction Translator Think Times, in bits */
+#define HUB_TTTT_8_BITS                0x00
+#define HUB_TTTT_16_BITS       0x20
+#define HUB_TTTT_24_BITS       0x40
+#define HUB_TTTT_32_BITS       0x60
+
 /*
  * As of USB 2.0, full/low speed devices are segregated into trees.
  * One type grows from USB 1.1 host controllers (OHCI, UHCI etc).
@@ -170,6 +176,7 @@ struct usb_device;
 struct usb_tt {
        struct usb_device       *hub;   /* upstream highspeed hub */
        int                     multi;  /* true means one TT per port */
+       unsigned                think_time;     /* think time in ns */
 
        /* for control/bulk error recovery (CLEAR_TT_BUFFER) */
        spinlock_t              lock;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to