|
@@ -240,8 +240,10 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
|
|
|
memcpy(&endpoint->desc, d, n);
|
|
|
INIT_LIST_HEAD(&endpoint->urb_list);
|
|
|
|
|
|
- /* Fix up bInterval values outside the legal range. Use 32 ms if no
|
|
|
- * proper value can be guessed. */
|
|
|
+ /*
|
|
|
+ * Fix up bInterval values outside the legal range.
|
|
|
+ * Use 10 or 8 ms if no proper value can be guessed.
|
|
|
+ */
|
|
|
i = 0; /* i = min, j = max, n = default */
|
|
|
j = 255;
|
|
|
if (usb_endpoint_xfer_int(d)) {
|
|
@@ -250,13 +252,15 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
|
|
|
case USB_SPEED_SUPER_PLUS:
|
|
|
case USB_SPEED_SUPER:
|
|
|
case USB_SPEED_HIGH:
|
|
|
- /* Many device manufacturers are using full-speed
|
|
|
+ /*
|
|
|
+ * Many device manufacturers are using full-speed
|
|
|
* bInterval values in high-speed interrupt endpoint
|
|
|
- * descriptors. Try to fix those and fall back to a
|
|
|
- * 32 ms default value otherwise. */
|
|
|
+ * descriptors. Try to fix those and fall back to an
|
|
|
+ * 8-ms default value otherwise.
|
|
|
+ */
|
|
|
n = fls(d->bInterval*8);
|
|
|
if (n == 0)
|
|
|
- n = 9; /* 32 ms = 2^(9-1) uframes */
|
|
|
+ n = 7; /* 8 ms = 2^(7-1) uframes */
|
|
|
j = 16;
|
|
|
|
|
|
/*
|
|
@@ -271,10 +275,12 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
|
|
|
}
|
|
|
break;
|
|
|
default: /* USB_SPEED_FULL or _LOW */
|
|
|
- /* For low-speed, 10 ms is the official minimum.
|
|
|
+ /*
|
|
|
+ * For low-speed, 10 ms is the official minimum.
|
|
|
* But some "overclocked" devices might want faster
|
|
|
- * polling so we'll allow it. */
|
|
|
- n = 32;
|
|
|
+ * polling so we'll allow it.
|
|
|
+ */
|
|
|
+ n = 10;
|
|
|
break;
|
|
|
}
|
|
|
} else if (usb_endpoint_xfer_isoc(d)) {
|
|
@@ -282,10 +288,10 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
|
|
|
j = 16;
|
|
|
switch (to_usb_device(ddev)->speed) {
|
|
|
case USB_SPEED_HIGH:
|
|
|
- n = 9; /* 32 ms = 2^(9-1) uframes */
|
|
|
+ n = 7; /* 8 ms = 2^(7-1) uframes */
|
|
|
break;
|
|
|
default: /* USB_SPEED_FULL */
|
|
|
- n = 6; /* 32 ms = 2^(6-1) frames */
|
|
|
+ n = 4; /* 8 ms = 2^(4-1) frames */
|
|
|
break;
|
|
|
}
|
|
|
}
|