usb: xhci: Set number of event segments and entries to 1
authorMarek Vasut <marek.vasut@gmail.com>
Tue, 12 Sep 2017 21:02:08 +0000 (23:02 +0200)
committerMarek Vasut <marek.vasut+renesas@gmail.com>
Wed, 27 Sep 2017 10:12:21 +0000 (12:12 +0200)
The Linux kernel driver sets the number of event segments and entries
to 1 , while the initial import of the xhci code set that values to 3
for reasons unknown. While most controllers are fine with more event
segments with more entries, there are standard-conformant controllers
(ie. Renesas RCar xHCI) which only support 1 event segment.

Set the number of event segments and event entries back to 1 to allow
such controllers to work with U-Boot xHCI stack. Note that the Renesas
controller correctly indicates ERST Max = 1 in HCSPARAMS2[7:4] .

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Bin Meng <bmeng.cn@gmail.com>
drivers/usb/host/xhci.h

index a497d9d830fa7be54b05ac79c5def17e1c3a9d04..3377450fcad903480ffcff44c3f187baa6f53bf7 100644 (file)
@@ -1045,9 +1045,9 @@ struct xhci_scratchpad {
  * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
  * meaning 64 ring segments.
  * Initial allocated size of the ERST, in number of entries */
-#define        ERST_NUM_SEGS   3
+#define        ERST_NUM_SEGS   1
 /* Initial number of event segment rings allocated */
-#define        ERST_ENTRIES    3
+#define        ERST_ENTRIES    1
 /* Initial allocated size of the ERST, in number of entries */
 #define        ERST_SIZE       64
 /* Poll every 60 seconds */