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:
parent
93a1ab57f3
commit
44ae0be746
1 changed files with 10 additions and 1 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue