diff options
Diffstat (limited to 'drivers/usb/core/config.c')
-rw-r--r-- | drivers/usb/core/config.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index 1ab4df1de2da..b2a540b43f97 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c | |||
@@ -199,6 +199,17 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum, | |||
199 | if (n == 0) | 199 | if (n == 0) |
200 | n = 9; /* 32 ms = 2^(9-1) uframes */ | 200 | n = 9; /* 32 ms = 2^(9-1) uframes */ |
201 | j = 16; | 201 | j = 16; |
202 | |||
203 | /* | ||
204 | * Adjust bInterval for quirked devices. | ||
205 | * This quirk fixes bIntervals reported in | ||
206 | * linear microframes. | ||
207 | */ | ||
208 | if (to_usb_device(ddev)->quirks & | ||
209 | USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL) { | ||
210 | n = clamp(fls(d->bInterval), i, j); | ||
211 | i = j = n; | ||
212 | } | ||
202 | break; | 213 | break; |
203 | default: /* USB_SPEED_FULL or _LOW */ | 214 | default: /* USB_SPEED_FULL or _LOW */ |
204 | /* For low-speed, 10 ms is the official minimum. | 215 | /* For low-speed, 10 ms is the official minimum. |