summaryrefslogtreecommitdiff
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorStephen Warren <swarren@wwwdotorg.org>2015-04-10 21:05:22 -0600
committerMarek Vasut <marex@denx.de>2015-04-14 05:47:59 +0200
commite236519b7365ef75c5da6a5623f0b03d9c00cfae (patch)
tree040d7591fcc714ca9e4b09c62ceb60d61da12eb9 /drivers/usb/host
parented9bcbc792bdcb8b4443c9aa5dff30ad6f8524c0 (diff)
usb: dwc2: implement interrupt transfers
As best I can tell, there's no difference between bulk and interrupt transfers in terms of how the HW should be programmed, at least given that we're executing one transaction at a time rather than scheduling them into frames for maximum throughput. This patch ends up sharing the toggle bit state between bulk and interrupt transfers on a particular EP. However I believe this is fine; AFAIK a given EP either uses bulk or interrupt transfers and doesn't mix them. This patch doesn't do anything with the "interval" parameter for interrupt transfers, but then most other USB controller drivers in U-Boot don't either. It turns out that one of my keyboards is happy to work using control transfers but the other only gives non-zero "HID reports" via interrupt transfers. Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r--drivers/usb/host/dwc2.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index b1d94ccc1a..f3fbe76acf 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -904,9 +904,8 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
int len, int interval)
{
- printf("dev = %p pipe = %#lx buf = %p size = %d int = %d\n",
- dev, pipe, buffer, len, interval);
- return -ENOSYS;
+ /* FIXME: what is interval? */
+ return submit_bulk_msg(dev, pipe, buffer, len);
}
/* U-Boot USB control interface */