diff options
author | Benoît Thébaudeau <benoit.thebaudeau@advansee.com> | 2012-08-09 21:50:44 (GMT) |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2012-09-01 14:21:51 (GMT) |
commit | 44ae0be7461f0ac72fa53b1a5bcd03c26e1d4fb1 (patch) | |
tree | 5fabb72f12c7c41100b35ea18b22b8cc1ca1aa54 /drivers/usb/host | |
parent | 93a1ab57f340b890e9e5b48b143869bc063d625f (diff) | |
download | u-boot-fsl-qoriq-44ae0be7461f0ac72fa53b1a5bcd03c26e1d4fb1.tar.xz |
ehci: Fail for multi-transaction interrupt transfers
Interrupt transfers requiring several transactions are not supported by
submit_int_msg() because bInterval is ignored. This patch returns a failure code
and prints an error message in this case.
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 5b3b906..2a00389 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -819,8 +819,17 @@ int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int length, int interval) { - debug("dev=%p, pipe=%lu, buffer=%p, length=%d, interval=%d", dev, pipe, buffer, length, interval); + + /* + * Interrupt transfers requiring several transactions are not supported + * because bInterval is ignored. + */ + if (length > usb_maxpacket(dev, pipe)) { + printf("%s: Interrupt transfers requiring several transactions " + "are not supported.\n", __func__); + return -1; + } return ehci_submit_async(dev, pipe, buffer, length, NULL); } |