diff options
Diffstat (limited to 'drivers/usb')
| -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 5b3b9062f..2a0038931 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);  } |