diff options
Diffstat (limited to 'drivers/usb/host/ehci-q.c')
| -rw-r--r-- | drivers/usb/host/ehci-q.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index a427d3b0063..89521775c56 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c @@ -849,9 +849,10 @@ qh_make (  				 * But interval 1 scheduling is simpler, and  				 * includes high bandwidth.  				 */ -				dbg ("intr period %d uframes, NYET!", -						urb->interval); -				goto done; +				urb->interval = 1; +			} else if (qh->period > ehci->periodic_size) { +				qh->period = ehci->periodic_size; +				urb->interval = qh->period << 3;  			}  		} else {  			int		think_time; @@ -874,6 +875,10 @@ qh_make (  					usb_calc_bus_time (urb->dev->speed,  					is_input, 0, max_packet (maxp)));  			qh->period = urb->interval; +			if (qh->period > ehci->periodic_size) { +				qh->period = ehci->periodic_size; +				urb->interval = qh->period; +			}  		}  	}  |