Message ID | 1458046755-15934-4-git-send-email-sr@denx.de |
---|---|
State | Deferred |
Delegated to: | Marek Vasut |
Headers | show |
On Tue, Mar 15, 2016 at 8:59 PM, Stefan Roese <sr@denx.de> wrote: > 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> > > --- > > Changes in v5: None > Changes in v4: > - Minor rewording / fixes of the commit text > - Add Acked-by from Hans > > Changes in v3: None > Changes in v2: > - Make this change unconditional > - Add Tested-by from Stephen > > common/usb.c | 13 +------------ > 1 file changed, 1 insertion(+), 12 deletions(-) > Tested-by: Bin Meng <bmeng.cn@gmail.com>
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; }