summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2018-05-28 08:32:19 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-05-31 12:48:17 +0200
commitaa071a92bbf09d993ff0dbf3b1f2b53ac93ad654 (patch)
treea6c57deabc0ca7ac0eb080aa3a0d061db8517945 /drivers/usb
parentusb: hub: Per-port setting to use old enumeration scheme (diff)
downloadlinux-aa071a92bbf09d993ff0dbf3b1f2b53ac93ad654.tar.xz
linux-aa071a92bbf09d993ff0dbf3b1f2b53ac93ad654.zip
usb: hub: Per-port setting to reduce TRSTRCY to 10 ms
Currently, the USB hub core waits for 50 ms after enumerating the device. This was added to help "some high speed devices" to enumerate (b789696af8 "[PATCH] USB: relax usbcore reset timings"). On some devices, the time-to-active is important, so we provide a per-port option to reduce the time to what the USB specification requires: 10 ms. Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/core/hub.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index f900f66a6285..26c2438d2889 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2879,7 +2879,11 @@ static int hub_port_reset(struct usb_hub *hub, int port1,
done:
if (status == 0) {
/* TRSTRCY = 10 ms; plus some extra */
- msleep(10 + 40);
+ if (port_dev->quirks & USB_PORT_QUIRK_FAST_ENUM)
+ usleep_range(10000, 12000);
+ else
+ msleep(10 + 40);
+
if (udev) {
struct usb_hcd *hcd = bus_to_hcd(udev->bus);