aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/host/xhci-mem.c14
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}