aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-09-18 15:07:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-09-18 15:07:05 -0400
commitb01cf676835b681c159a395dc6828f1d6e3b3db6 (patch)
tree50eb4f80d73af2a8b241d451ad780c68c19991f2
parent88b4ad287c91790e98fe9381b5cba7b381f359c0 (diff)
parente06226e66beafd6118aa81b511d88cb549ad7ea5 (diff)
Merge tag 'usb-4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB fixes from Greg KH: "Here are two small fixes, and one new device id, for 4.8-rc7 The fixes solve a build error that was reported in your tree for the blackfin arch, and resolve an issue with a number of broken USB devices that reported the wrong interval rate. Included here is also a new device id for the usb-serial driver. All have been in linux-next with no reported issues" * tag 'usb-4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: USB: change bInterval default to 10 ms usb: musb: Fix tusb6010 compile error on blackfin USB: serial: simple: add support for another Infineon flashloader
-rw-r--r--drivers/usb/core/config.c28
-rw-r--r--drivers/usb/musb/Kconfig2
-rw-r--r--drivers/usb/serial/usb-serial-simple.c3
3 files changed, 20 insertions, 13 deletions
diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c
index 15ce4ab11688..a2d90aca779f 100644
--- a/drivers/usb/core/config.c
+++ b/drivers/usb/core/config.c
@@ -240,8 +240,10 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
240 memcpy(&endpoint->desc, d, n); 240 memcpy(&endpoint->desc, d, n);
241 INIT_LIST_HEAD(&endpoint->urb_list); 241 INIT_LIST_HEAD(&endpoint->urb_list);
242 242
243 /* Fix up bInterval values outside the legal range. Use 32 ms if no 243 /*
244 * proper value can be guessed. */ 244 * Fix up bInterval values outside the legal range.
245 * Use 10 or 8 ms if no proper value can be guessed.
246 */
245 i = 0; /* i = min, j = max, n = default */ 247 i = 0; /* i = min, j = max, n = default */
246 j = 255; 248 j = 255;
247 if (usb_endpoint_xfer_int(d)) { 249 if (usb_endpoint_xfer_int(d)) {
@@ -250,13 +252,15 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
250 case USB_SPEED_SUPER_PLUS: 252 case USB_SPEED_SUPER_PLUS:
251 case USB_SPEED_SUPER: 253 case USB_SPEED_SUPER:
252 case USB_SPEED_HIGH: 254 case USB_SPEED_HIGH:
253 /* Many device manufacturers are using full-speed 255 /*
256 * Many device manufacturers are using full-speed
254 * bInterval values in high-speed interrupt endpoint 257 * bInterval values in high-speed interrupt endpoint
255 * descriptors. Try to fix those and fall back to a 258 * descriptors. Try to fix those and fall back to an
256 * 32 ms default value otherwise. */ 259 * 8-ms default value otherwise.
260 */
257 n = fls(d->bInterval*8); 261 n = fls(d->bInterval*8);
258 if (n == 0) 262 if (n == 0)
259 n = 9; /* 32 ms = 2^(9-1) uframes */ 263 n = 7; /* 8 ms = 2^(7-1) uframes */
260 j = 16; 264 j = 16;
261 265
262 /* 266 /*
@@ -271,10 +275,12 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
271 } 275 }
272 break; 276 break;
273 default: /* USB_SPEED_FULL or _LOW */ 277 default: /* USB_SPEED_FULL or _LOW */
274 /* For low-speed, 10 ms is the official minimum. 278 /*
279 * For low-speed, 10 ms is the official minimum.
275 * But some "overclocked" devices might want faster 280 * But some "overclocked" devices might want faster
276 * polling so we'll allow it. */ 281 * polling so we'll allow it.
277 n = 32; 282 */
283 n = 10;
278 break; 284 break;
279 } 285 }
280 } else if (usb_endpoint_xfer_isoc(d)) { 286 } else if (usb_endpoint_xfer_isoc(d)) {
@@ -282,10 +288,10 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
282 j = 16; 288 j = 16;
283 switch (to_usb_device(ddev)->speed) { 289 switch (to_usb_device(ddev)->speed) {
284 case USB_SPEED_HIGH: 290 case USB_SPEED_HIGH:
285 n = 9; /* 32 ms = 2^(9-1) uframes */ 291 n = 7; /* 8 ms = 2^(7-1) uframes */
286 break; 292 break;
287 default: /* USB_SPEED_FULL */ 293 default: /* USB_SPEED_FULL */
288 n = 6; /* 32 ms = 2^(6-1) frames */ 294 n = 4; /* 8 ms = 2^(4-1) frames */
289 break; 295 break;
290 } 296 }
291 } 297 }
diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
index 886526b5fcdd..73cfa13fc0dc 100644
--- a/drivers/usb/musb/Kconfig
+++ b/drivers/usb/musb/Kconfig
@@ -87,7 +87,7 @@ config USB_MUSB_DA8XX
87config USB_MUSB_TUSB6010 87config USB_MUSB_TUSB6010
88 tristate "TUSB6010" 88 tristate "TUSB6010"
89 depends on HAS_IOMEM 89 depends on HAS_IOMEM
90 depends on ARCH_OMAP2PLUS || COMPILE_TEST 90 depends on (ARCH_OMAP2PLUS || COMPILE_TEST) && !BLACKFIN
91 depends on NOP_USB_XCEIV = USB_MUSB_HDRC # both built-in or both modules 91 depends on NOP_USB_XCEIV = USB_MUSB_HDRC # both built-in or both modules
92 92
93config USB_MUSB_OMAP2PLUS 93config USB_MUSB_OMAP2PLUS
diff --git a/drivers/usb/serial/usb-serial-simple.c b/drivers/usb/serial/usb-serial-simple.c
index a204782ae530..e98b6e57b703 100644
--- a/drivers/usb/serial/usb-serial-simple.c
+++ b/drivers/usb/serial/usb-serial-simple.c
@@ -54,7 +54,8 @@ DEVICE(funsoft, FUNSOFT_IDS);
54/* Infineon Flashloader driver */ 54/* Infineon Flashloader driver */
55#define FLASHLOADER_IDS() \ 55#define FLASHLOADER_IDS() \
56 { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, USB_CLASS_CDC_DATA) }, \ 56 { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, USB_CLASS_CDC_DATA) }, \
57 { USB_DEVICE(0x8087, 0x0716) } 57 { USB_DEVICE(0x8087, 0x0716) }, \
58 { USB_DEVICE(0x8087, 0x0801) }
58DEVICE(flashloader, FLASHLOADER_IDS); 59DEVICE(flashloader, FLASHLOADER_IDS);
59 60
60/* Google Serial USB SubClass */ 61/* Google Serial USB SubClass */