summaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/dwc2.c
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2016-05-06 13:53:37 +0200
committerMarek Vasut <marex@denx.de>2016-05-06 20:06:56 +0200
commit2bf352f0c1b7f58d4610bc0777e8febbd2dfd5ff (patch)
tree85cf01c41f8658d64c1559ce3e3f998773d29e17 /drivers/usb/host/dwc2.c
parentd81db48d418edc30301961781d8a64d7cc109dd4 (diff)
downloadtalos-obmc-uboot-2bf352f0c1b7f58d4610bc0777e8febbd2dfd5ff.tar.gz
talos-obmc-uboot-2bf352f0c1b7f58d4610bc0777e8febbd2dfd5ff.zip
usb: dwc2: Add delay to fix the USB detection problem on SoCFPGA
With patch c998da0d (usb: Change power-on / scanning timeout handling), the USB scanning is started earlier and with a smaller timeout. This resulted on SoCFPGA (using the DWC2 driver) in some USB sticks not getting detected any more. This patch now adds a 1 second delay (in the host mode only) to the DWC2 driver before the scanning is started. With this delay, now all problematic USB keys are detected successfully again. And there is no need any more to change the delay / timeout in the common USB code (usb_hub.c). Signed-off-by: Stefan Roese <sr@denx.de> Cc: Chin Liang See <clsee@altera.com> Cc: Dinh Nguyen <dinguyen@opensource.altera.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Stephen Warren <swarren@nvidia.com> Cc: Marek Vasut <marex@denx.de>
Diffstat (limited to 'drivers/usb/host/dwc2.c')
-rw-r--r--drivers/usb/host/dwc2.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index 30b51b3d7f..d08879dc67 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -1088,6 +1088,15 @@ static int dwc2_init_common(struct dwc2_priv *priv)
}
}
+ /*
+ * Add a 1 second delay here. This gives the host controller
+ * a bit time before the comminucation with the USB devices
+ * is started (the bus is scanned) and fixes the USB detection
+ * problems with some problematic USB keys.
+ */
+ if (readl(&regs->gintsts) & DWC2_GINTSTS_CURMODE_HOST)
+ mdelay(1000);
+
return 0;
}
OpenPOWER on IntegriCloud