summaryrefslogtreecommitdiff
path: root/sys/dev/usb/controller
diff options
context:
space:
mode:
authorNathan Whitehorn <nwhitehorn@FreeBSD.org>2010-10-25 15:51:43 +0000
committerNathan Whitehorn <nwhitehorn@FreeBSD.org>2010-10-25 15:51:43 +0000
commit495ed64c167cc837bc1f1db870d43383456c3558 (patch)
tree3974f47cd624b0107f10f737bf825b4b9e4b50b9 /sys/dev/usb/controller
parent111044e6c2cc192cefc6264b9aad14368f4ac0b4 (diff)
Notes
Diffstat (limited to 'sys/dev/usb/controller')
-rw-r--r--sys/dev/usb/controller/ehci.c4
-rw-r--r--sys/dev/usb/controller/ehcireg.h10
2 files changed, 9 insertions, 5 deletions
diff --git a/sys/dev/usb/controller/ehci.c b/sys/dev/usb/controller/ehci.c
index 91119823c818..329c9d861efd 100644
--- a/sys/dev/usb/controller/ehci.c
+++ b/sys/dev/usb/controller/ehci.c
@@ -270,9 +270,9 @@ ehci_init(ehci_softc_t *sc)
}
#endif
- sc->sc_offs = EREAD1(sc, EHCI_CAPLENGTH);
+ sc->sc_offs = EHCI_CAPLENGTH(EREAD4(sc, EHCI_CAPLEN_HCIVERSION));
- version = EREAD2(sc, EHCI_HCIVERSION);
+ version = EHCI_HCIVERSION(EREAD4(sc, EHCI_CAPLEN_HCIVERSION));
device_printf(sc->sc_bus.bdev, "EHCI version %x.%x\n",
version >> 8, version & 0xff);
diff --git a/sys/dev/usb/controller/ehcireg.h b/sys/dev/usb/controller/ehcireg.h
index ab81f08cf302..1f5fc5c06cad 100644
--- a/sys/dev/usb/controller/ehcireg.h
+++ b/sys/dev/usb/controller/ehcireg.h
@@ -54,9 +54,13 @@
#define EHCI_LEGSUP_USBLEGCTLSTS 0x04
/* EHCI capability registers */
-#define EHCI_CAPLENGTH 0x00 /* RO Capability register length field */
-#define EHCI_RESERVED 0x01 /* Reserved register */
-#define EHCI_HCIVERSION 0x02 /* RO Interface version number */
+#define EHCI_CAPLEN_HCIVERSION 0x00 /* RO Capability register length
+ * (least-significant byte) and
+ * interface version number (two
+ * most significant)
+ */
+#define EHCI_CAPLENGTH(x) ((x) & 0xff)
+#define EHCI_HCIVERSION(x) (((x) >> 16) & 0xffff)
#define EHCI_HCSPARAMS 0x04 /* RO Structural parameters */
#define EHCI_HCS_DEBUGPORT(x) (((x) >> 20) & 0xf)
#define EHCI_HCS_P_INDICATOR(x) ((x) & 0x10000)