|
|
5544c1 |
From 79e9a5ca778bfcb67073bfecd3f7cea7d93781ce Mon Sep 17 00:00:00 2001
|
|
Hans de Goede |
c8dfc6 |
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
Hans de Goede |
c8dfc6 |
Date: Thu, 23 Aug 2012 13:26:25 +0200
|
|
|
5544c1 |
Subject: [PATCH] xhci: update register layout
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
Change the register layout to be a bit more sparse and also not depend
|
|
Hans de Goede |
c8dfc6 |
on the number of ports. Useful when for making the number of ports
|
|
Hans de Goede |
c8dfc6 |
runtime-configurable.
|
|
Hans de Goede |
c8dfc6 |
---
|
|
Hans de Goede |
c8dfc6 |
hw/usb/hcd-xhci.c | 21 +++++++++++++--------
|
|
Hans de Goede |
c8dfc6 |
1 file changed, 13 insertions(+), 8 deletions(-)
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
|
|
|
5544c1 |
index c6ab4a1..d47539d 100644
|
|
Hans de Goede |
c8dfc6 |
--- a/hw/usb/hcd-xhci.c
|
|
Hans de Goede |
c8dfc6 |
+++ b/hw/usb/hcd-xhci.c
|
|
Hans de Goede |
c8dfc6 |
@@ -36,13 +36,12 @@
|
|
Hans de Goede |
c8dfc6 |
#define FIXME() do { fprintf(stderr, "FIXME %s:%d\n", \
|
|
Hans de Goede |
c8dfc6 |
__func__, __LINE__); abort(); } while (0)
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
-#define MAXSLOTS 8
|
|
Hans de Goede |
c8dfc6 |
-#define MAXINTRS 1
|
|
Hans de Goede |
c8dfc6 |
-
|
|
Hans de Goede |
c8dfc6 |
#define USB2_PORTS 4
|
|
Hans de Goede |
c8dfc6 |
#define USB3_PORTS 4
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
#define MAXPORTS (USB2_PORTS+USB3_PORTS)
|
|
Hans de Goede |
c8dfc6 |
+#define MAXSLOTS MAXPORTS
|
|
Hans de Goede |
c8dfc6 |
+#define MAXINTRS 1 /* MAXPORTS */
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
#define TD_QUEUE 24
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
@@ -53,16 +52,22 @@
|
|
Hans de Goede |
c8dfc6 |
#define ER_FULL_HACK
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
#define LEN_CAP 0x40
|
|
Hans de Goede |
c8dfc6 |
-#define OFF_OPER LEN_CAP
|
|
Hans de Goede |
c8dfc6 |
#define LEN_OPER (0x400 + 0x10 * MAXPORTS)
|
|
Hans de Goede |
c8dfc6 |
-#define OFF_RUNTIME ((OFF_OPER + LEN_OPER + 0x20) & ~0x1f)
|
|
Hans de Goede |
c8dfc6 |
-#define LEN_RUNTIME (0x20 + MAXINTRS * 0x20)
|
|
Hans de Goede |
c8dfc6 |
-#define OFF_DOORBELL (OFF_RUNTIME + LEN_RUNTIME)
|
|
Hans de Goede |
c8dfc6 |
+#define LEN_RUNTIME ((MAXINTRS + 1) * 0x20)
|
|
Hans de Goede |
c8dfc6 |
#define LEN_DOORBELL ((MAXSLOTS + 1) * 0x20)
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
+#define OFF_OPER LEN_CAP
|
|
Hans de Goede |
c8dfc6 |
+#define OFF_RUNTIME 0x1000
|
|
Hans de Goede |
c8dfc6 |
+#define OFF_DOORBELL 0x2000
|
|
Hans de Goede |
c8dfc6 |
/* must be power of 2 */
|
|
Hans de Goede |
c8dfc6 |
-#define LEN_REGS 0x2000
|
|
Hans de Goede |
c8dfc6 |
+#define LEN_REGS 0x4000
|
|
Hans de Goede |
c8dfc6 |
|
|
Hans de Goede |
c8dfc6 |
+#if (OFF_OPER + LEN_OPER) > OFF_RUNTIME
|
|
Hans de Goede |
c8dfc6 |
+#error Increase OFF_RUNTIME
|
|
Hans de Goede |
c8dfc6 |
+#endif
|
|
Hans de Goede |
c8dfc6 |
+#if (OFF_RUNTIME + LEN_RUNTIME) > OFF_DOORBELL
|
|
Hans de Goede |
c8dfc6 |
+#error Increase OFF_DOORBELL
|
|
Hans de Goede |
c8dfc6 |
+#endif
|
|
Hans de Goede |
c8dfc6 |
#if (OFF_DOORBELL + LEN_DOORBELL) > LEN_REGS
|
|
Hans de Goede |
c8dfc6 |
# error Increase LEN_REGS
|
|
Hans de Goede |
c8dfc6 |
#endif
|
|
Hans de Goede |
c8dfc6 |
--
|
|
|
5544c1 |
1.7.12.1
|
|
Hans de Goede |
c8dfc6 |
|