diff options
| -rw-r--r-- | drivers/usb/host/xhci-mem.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 26caba4c1950..0f8e1d29a858 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c | |||
| @@ -985,9 +985,19 @@ static unsigned int xhci_parse_exponent_interval(struct usb_device *udev, | |||
| 985 | interval = clamp_val(ep->desc.bInterval, 1, 16) - 1; | 985 | interval = clamp_val(ep->desc.bInterval, 1, 16) - 1; |
| 986 | if (interval != ep->desc.bInterval - 1) | 986 | if (interval != ep->desc.bInterval - 1) |
| 987 | dev_warn(&udev->dev, | 987 | dev_warn(&udev->dev, |
| 988 | "ep %#x - rounding interval to %d microframes\n", | 988 | "ep %#x - rounding interval to %d %sframes\n", |
| 989 | ep->desc.bEndpointAddress, | 989 | ep->desc.bEndpointAddress, |
| 990 | 1 << interval); | 990 | 1 << interval, |
| 991 | udev->speed == USB_SPEED_FULL ? "" : "micro"); | ||
| 992 | |||
| 993 | if (udev->speed == USB_SPEED_FULL) { | ||
| 994 | /* | ||
| 995 | * Full speed isoc endpoints specify interval in frames, | ||
| 996 | * not microframes. We are using microframes everywhere, | ||
| 997 | * so adjust accordingly. | ||
| 998 | */ | ||
| 999 | interval += 3; /* 1 frame = 2^3 uframes */ | ||
| 1000 | } | ||
| 991 | 1001 | ||
| 992 | return interval; | 1002 | return interval; |
| 993 | } | 1003 | } |
