aboutsummaryrefslogtreecommitdiff
path: root/payloads/libpayload/drivers/usb/ehci_private.h
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2012-05-25 10:09:13 +0200
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-06-07 23:16:35 +0200
commit62eb5b3837c51228898288cb7347dce81c563842 (patch)
tree4a37a05545fc332d0de5102438b1eef2e6301e10 /payloads/libpayload/drivers/usb/ehci_private.h
parent4842dfe6f77c21f7074ca79b0ce3f882f08f92b2 (diff)
libpayload: Add support for interrupt transfers in EHCI
This adds support for usb interrupt transfers in the EHCI driver. Split transactions are supported, so this enables support for HID keyboards devices over hubs in high-speed mode. Change-Id: I9eb08f12b12c67ece10814952cb8651278b02f9d Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: http://review.coreboot.org/1083 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'payloads/libpayload/drivers/usb/ehci_private.h')
-rw-r--r--payloads/libpayload/drivers/usb/ehci_private.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/payloads/libpayload/drivers/usb/ehci_private.h b/payloads/libpayload/drivers/usb/ehci_private.h
index 29595f8f2f..a97336b492 100644
--- a/payloads/libpayload/drivers/usb/ehci_private.h
+++ b/payloads/libpayload/drivers/usb/ehci_private.h
@@ -61,9 +61,13 @@ typedef volatile struct {
typedef volatile struct {
u32 usbcmd;
#define HC_OP_RS 1
+#define HC_OP_PERIODIC_SCHED_EN_SHIFT 4
+#define HC_OP_PERIODIC_SCHED_EN (1 << HC_OP_PERIODIC_SCHED_EN_SHIFT)
#define HC_OP_ASYNC_SCHED_EN_SHIFT 5
#define HC_OP_ASYNC_SCHED_EN (1 << HC_OP_ASYNC_SCHED_EN_SHIFT)
u32 usbsts;
+#define HC_OP_PERIODIC_SCHED_STAT_SHIFT 14
+#define HC_OP_PERIODIC_SCHED_STAT (1 << HC_OP_PERIODIC_SCHED_STAT_SHIFT)
#define HC_OP_ASYNC_SCHED_STAT_SHIFT 15
#define HC_OP_ASYNC_SCHED_STAT (1 << HC_OP_ASYNC_SCHED_STAT_SHIFT)
u32 usbintr;
@@ -78,6 +82,7 @@ typedef volatile struct {
typedef volatile struct {
#define QTD_TERMINATE 1
+#define QTD_PTR_MASK ~0x1f
u32 next_qtd;
u32 alt_next_qtd;
u32 token;
@@ -116,6 +121,7 @@ typedef volatile struct {
#define QH_NON_HS_CTRL_EP_SHIFT 27
#define QH_NAK_CNT_SHIFT 28
u32 epcaps;
+#define QH_UFRAME_CMASK_SHIFT 8
#define QH_HUB_ADDRESS_SHIFT 16
#define QH_PORT_NUMBER_SHIFT 23
#define QH_PIPE_MULTIPLIER_SHIFT 30
@@ -128,6 +134,10 @@ typedef struct ehci {
hc_op_t *operation;
} ehci_t;
+#define PS_TERMINATE 1
+#define PS_TYPE_QH 1 << 1
+#define PS_PTR_MASK ~0x1f
+
#define EHCI_INST(controller) ((ehci_t*)((controller)->instance))