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>
This commit is contained in:
Benoît Thébaudeau 2012-08-09 23:50:44 +02:00 committed by Marek Vasut
parent 93a1ab57f3
commit 44ae0be746

View file

@ -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);
}