u-boot/common
Stefan Roese c998da0d67 usb: Change power-on / scanning timeout handling
This patch changes the USB port scanning procedure and timeout
handling in the following ways:

a)
The power-on delay in usb_hub_power_on() is now reduced to a value of
max(100ms, "hub->desc.bPwrOn2PwrGood * 2"). The code does not wait
using mdelay, instead usb_hub_power_on() will wait before querying
the device in the scanning loop later. The total timeout for this
hub, which is 1 second + "hub->desc.bPwrOn2PwrGood * 2" is calculated
and will be used in the following per-port scanning loop as the timeout
to detect active USB devices on this hub.

b)
Don't delay the minimum delay (for power to stabilize) in
usb_hub_power_on(). Instead skip querying these devices in the scannig
loop until the delay time is reached.

c)
The ports are now scanned in a quasi parallel way. The current code did
wait for each (unconnected) port to reach its timeout and only then
continue with the next port. This patch now changes this to scan all
ports of all USB hubs quasi simultaneously. For this, all ports are added
to a scanning list. This list is scanned until all ports are ready
by either a) reaching the connection timeout (calculated earlier), or
by b) detecting a USB device. This results in a faster USB scan time as
the recursive scanning of USB hubs connected to the hub that's currently
being scanned will start earlier.

One small functional change to the original code is, that ports with
overcurrent detection will now get rescanned multiple times
(PORT_OVERCURRENT_MAX_SCAN_COUNT).

Without this patch:
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 9 USB Device(s) found

time: 20.163 seconds

With this patch:
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 9 USB Device(s) found

time: 1.822 seconds

So ~18.3 seconds of USB scanning time reduction.

Signed-off-by: Stefan Roese <sr@denx.de>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
2016-03-20 18:00:45 +01:00
..
init x86: Fix board init breakage 2016-01-15 08:09:46 -05:00
spl spl_nor: fix warning when compiled for 64bit target 2016-03-15 21:30:20 -04:00
autoboot.c autoboot.c: Fill env vars in process_fdt_options() only if TEXT_BASE is set 2016-02-05 12:47:20 +08:00
bedbug.c Consolidate bool type 2013-04-01 16:33:52 -04:00
board_f.c x86: Allow use of serial soon after relocation 2016-03-17 10:27:24 +08:00
board_info.c generic-board: allow showing custom board info 2015-08-13 07:19:36 -04:00
board_r.c dm: timer: Correct timer init ordering after relocation 2016-03-17 10:27:24 +08:00
bootm_os.c VxWorks: fixup MAC address for VxWorks 2015-12-12 15:56:08 -05:00
bootm.c fdt: Allow libfdt to be used in SPL 2016-03-14 19:18:26 -04:00
bootretry.c Rename bootretry functions and remove #ifdefs 2014-05-29 17:49:00 -04:00
bootstage.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
bouncebuf.c Fix a few printf argument verification warnings 2014-09-15 13:32:55 -04:00
cli_hush.c hush: Add rudimentary support for PS1 and PS2 2016-02-08 10:10:37 -05:00
cli_readline.c spl, common, serial: build SPL without serial support 2015-08-12 20:47:13 -04:00
cli_simple.c common: cli_simple: use strlcpy instead of strcpy 2016-01-13 21:05:26 -05:00
cli.c common: cli: avoid memory leak 2016-01-04 12:25:35 -05:00
command.c Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
console.c dm: video: Add a temporary work-around for old stdout var 2016-02-11 21:37:17 +01:00
cros_ec.c cros_ec: Remove unused cros_ec_board_init() function 2015-04-18 11:11:16 -06:00
ddr_spd.c Add more SPDX-License-Identifier tags 2016-01-19 08:31:21 -05:00
dlmalloc.c malloc: remove !gd handling 2016-03-08 15:01:47 -05:00
dlmalloc.src Consolidate bool type 2013-04-01 16:33:52 -04:00
edid.c edid: Add a function to read detailed monitor timings 2015-05-13 09:24:10 -07:00
env_attr.c env: Add regex support to env_attrs 2015-05-21 09:13:19 -04:00
env_callback.c common: env: initialize scalar variable 2016-01-04 12:25:35 -05:00
env_common.c Add option -r to env import to allow import of text files with CRLF as line endings 2014-07-22 07:44:26 -04:00
env_dataflash.c env: Add env_export() wrapper 2014-03-21 16:43:59 -04:00
env_eeprom.c eeprom: Add bus argument to eeprom_init() 2015-11-21 21:50:26 -05:00
env_embedded.c nand_spl: remove nand_spl infrastructure 2014-06-05 17:01:59 -04:00
env_ext4.c common: Add support for environment file in EXT4. 2016-03-14 14:18:39 -04:00
env_fat.c dm: block: Rename device number member dev to devnum 2016-03-14 15:34:50 -06:00
env_flags.c tools: fix env_flags build 2016-02-15 20:58:25 +00:00
env_flash.c env_flash.c: Drop unused variables 2014-04-17 17:44:36 -04:00
env_mmc.c env_mmc: support overriding mmc dev from board code 2016-01-25 10:39:46 -05:00
env_nand.c Move ALLOC_CACHE_ALIGN_BUFFER() to the new memalign.h header 2015-09-11 17:15:20 -04:00
env_nowhere.c Coding Style cleanup: remove trailing white space 2013-10-14 16:06:53 -04:00
env_nvram.c env: Add env_export() wrapper 2014-03-21 16:43:59 -04:00
env_onenand.c env: Add env_export() wrapper 2014-03-21 16:43:59 -04:00
env_remote.c Coding Style cleanup: remove trailing white space 2013-10-14 16:06:53 -04:00
env_sf.c dm: env_sf: fix saveenv() to use driver model 2016-01-27 08:28:40 -08:00
env_ubi.c env_ubi.c: Correct pointer error in env load 2015-11-19 07:32:49 +01:00
exports.c board/ls2085rdb: Export functions for standalone AQ FW load apps 2015-07-20 11:44:37 -07:00
fb_mmc.c dm: block: Adjust device calls to go through helpers function 2016-03-14 15:34:50 -06:00
fb_nand.c sparse: Rename the file and header 2015-11-12 13:18:59 -05:00
fdt_support.c Revert "fdt: fix address cell count checking in fdt_translate_address()" 2016-03-17 21:27:39 -06:00
flash.c mpc8xx: remove SPD823TS board support 2015-01-05 12:08:51 -05:00
hash.c hash.c: Conditionally compile hash_command, static hash_show 2016-01-13 21:05:08 -05:00
hwconfig.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
image-android.c image: fix support for Android boot images with no ramdisk 2015-10-11 17:12:10 -04:00
image-fdt.c efi_loader: Call fdt preparation functions 2016-03-15 21:30:14 -04:00
image-fit.c common: image-fit: Fix load and entry addresses in FIT image 2016-03-14 19:18:41 -04:00
image-sig.c image: Convert to use fdt_for_each_subnode macro 2015-02-16 12:41:41 -05:00
image-sparse.c sparse: Rename the file and header 2015-11-12 13:18:59 -05:00
image.c image: Add functions to obtain short names 2016-03-14 19:18:28 -04:00
iomux.c Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
iotrace.c common: Make sure arch-specific map_sysmem() is defined 2015-04-18 11:11:09 -06:00
kallsyms.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
Kconfig Move all command code into its own directory 2016-01-25 10:39:43 -05:00
kgdb_stubs.c Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
kgdb.c kgdb: Remove first_entry for kgdb 2014-09-16 12:23:56 -04:00
lcd_console_rotation.c common/lcd_console: introduce display/framebuffer rotation 2015-04-18 17:40:37 +02:00
lcd_console.c common/lcd_console: introduce display/framebuffer rotation 2015-04-18 17:40:37 +02:00
lcd_simplefb.c common/lcd_simplefb: Add support for 32bit organized framebuffers 2015-07-23 18:10:58 +02:00
lcd.c lcd: fix the color testpattern in 16bit mode 2016-01-24 00:38:40 +01:00
lynxkdi.c checkpatch whitespace cleanups 2011-10-22 01:13:35 +02:00
main.c Remove unused CONFIG_MODEM_SUPPORT option and associated dead code. 2016-02-08 10:22:44 -05:00
Makefile fdt: Allow libfdt to be used in SPL 2016-03-14 19:18:26 -04:00
malloc_simple.c malloc_simple: Add a little more debugging 2016-03-17 10:27:23 +08:00
memsize.c Revert "common/memsize.c: Simplify RAM size detection" 2016-02-10 08:34:42 -05:00
menu.c menu: Return an error code if Ctrl-C is pressed 2015-05-27 13:35:54 -04:00
miiphyutil.c common: miiphyutil: avoid memory leak 2015-12-05 18:22:24 -05:00
s_record.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
splash_source.c splash_source: add support for filesystem formatted sata 2015-11-16 12:01:35 +01:00
splash.c lcd: split splash code into its own function 2015-02-10 13:31:58 +01:00
stdio.c stdio: Correct a build error with driver model 2016-01-21 20:42:36 -07:00
system_map.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
update.c update: tftp: dfu: Extend update_tftp() function to support DFU 2015-09-07 13:41:05 +02:00
usb_hub.c usb: Change power-on / scanning timeout handling 2016-03-20 18:00:45 +01:00
usb_kbd.c usb: kbd: Prevent out of bound access 2016-01-25 22:00:46 +01:00
usb_storage.c dm: usb: Convert USB storage to use driver-model for block devs 2016-03-14 15:34:50 -06:00
usb.c usb: Don't reset the USB hub a 2nd time 2016-03-20 18:00:45 +01:00
xyzModem.c lib/crc16.c: Rename cyg_crc16() to crc16_ccitt() and add crc start value 2016-03-14 19:18:42 -04:00