From: Benoît Thébaudeau Date: Thu, 9 Aug 2012 21:50:44 +0000 (+0200) Subject: ehci: Fail for multi-transaction interrupt transfers X-Git-Tag: v2012.10-rc1~96^2~11 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=44ae0be7461f0ac72fa53b1a5bcd03c26e1d4fb1;p=u-boot 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 Cc: Marek Vasut Cc: Ilya Yanok Cc: Stefan Herbrechtsmeier --- diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 5b3b9062f7..2a0038931f 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); }