summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2016-03-15 13:59:14 +0100
committerMarek Vasut <marex@denx.de>2016-03-20 18:00:45 +0100
commit3ed9eb93c2c7d8e09ac0b5a047f58c3aae201516 (patch)
treef4ef07d1f4320cefe706625674cc8ed63ecffbfd
parent2ef117fe4fce4e1af282ac2bbb0be36c41d15e2b (diff)
downloadu-boot-imx-3ed9eb93c2c7d8e09ac0b5a047f58c3aae201516.zip
u-boot-imx-3ed9eb93c2c7d8e09ac0b5a047f58c3aae201516.tar.gz
u-boot-imx-3ed9eb93c2c7d8e09ac0b5a047f58c3aae201516.tar.bz2
usb: Don't reset the USB hub a 2nd time
Debugging has shown, that all USB hubs are being reset twice while USB scanning. This introduces additional delays and makes USB scanning even more slow. Testing has shown that this 2nd USB hub reset doesn't seem to be necessary. This patch now removes this 2nd USB hub reset. Resulting in faster USB scan time. Here the current numbers: Without this patch: => time usb start starting USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 9 USB Device(s) found time: 24.003 seconds With this patch: => time usb start starting USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 9 USB Device(s) found time: 20.392 seconds So ~3.6 seconds of USB scanning time reduction. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Simon Glass <sjg@chromium.org> Acked-by: Hans de Goede <hdegoede@redhat.com> Tested-by: Stephen Warren <swarren@nvidia.com> Cc: Marek Vasut <marex@denx.de>
-rw-r--r--common/usb.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/common/usb.c b/common/usb.c
index c7b8b0e..45a5a0f 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -919,19 +919,8 @@ __weak int usb_alloc_device(struct usb_device *udev)
static int usb_hub_port_reset(struct usb_device *dev, struct usb_device *hub)
{
- if (hub) {
- unsigned short portstatus;
- int err;
-
- /* reset the port for the second time */
- err = legacy_hub_port_reset(hub, dev->portnr - 1, &portstatus);
- if (err < 0) {
- printf("\n Couldn't reset port %i\n", dev->portnr);
- return err;
- }
- } else {
+ if (!hub)
usb_reset_root_port(dev);
- }
return 0;
}