summaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci.h
diff options
context:
space:
mode:
authorPatrick Georgi <patrick@georgi-clan.de>2013-03-06 14:08:31 +0000
committerMarek Vasut <marex@denx.de>2013-03-18 18:58:54 +0100
commit8f62ca646fbad26b17f832cc3c2579080247de6e (patch)
treed21f4e48608e04cfff1d1a1cecfc89c4653f30bb /drivers/usb/host/ehci.h
parentc74b0116b6cd839babfc57b0eb83e4e989227f17 (diff)
downloadtalos-obmc-uboot-8f62ca646fbad26b17f832cc3c2579080247de6e.tar.gz
talos-obmc-uboot-8f62ca646fbad26b17f832cc3c2579080247de6e.zip
usb: ehci: Support interrupt transfers via periodic list
Interrupt transfers aren't meant to be used from the async list (the EHCI spec indicates trouble with low/full-speed intr on async). Build a periodic list instead, and provide an API to make use of it. Then, use that API from the existing interrupt transfer API. This provides support for USB keyboards using EHCI. Use timeouts to ensure we cannot get stuck in the keyboard scanning if something wrong happens (USB device unplugged or fatal I/O error) Signed-off-by: Vincent Palatin <vpalatin@chromium.org> Signed-off-by: Julius Werner <jwerner@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/usb/host/ehci.h')
-rw-r--r--drivers/usb/host/ehci.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 1e3cd793b6..46b535f36f 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -69,6 +69,7 @@ struct ehci_hcor {
#define CMD_RUN (1 << 0) /* start/stop HC */
uint32_t or_usbsts;
#define STS_ASS (1 << 15)
+#define STS_PSS (1 << 14)
#define STS_HALT (1 << 12)
uint32_t or_usbintr;
#define INTR_UE (1 << 0) /* USB interrupt enable */
@@ -245,7 +246,10 @@ struct QH {
* Add dummy fill value to make the size of this struct
* aligned to 32 bytes
*/
- uint8_t fill[16];
+ union {
+ uint8_t fill[16];
+ void *buffer;
+ };
};
/* Low level init functions */
OpenPOWER on IntegriCloud