mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-13 18:56:59 +02:00
Use the uthread framework to initialize and scan USB buses in parallel for better performance. The console output is slightly modified with a final per-bus report of the number of devices found, common to UTHREAD and !UTHREAD. The USB tests are updated accordingly. Tested on two platforms: 1. arm64 QEMU on a somewhat contrived example (4 USB buses, each with one audio device, one keyboard, one mouse and one tablet) $ make qemu_arm64_defconfig $ make -j$(nproc) CROSS_COMPILE="ccache aarch64-linux-gnu-" $ qemu-system-aarch64 -M virt -nographic -cpu max -bios u-boot.bin \ $(for i in {1..4}; do echo -device qemu-xhci,id=xhci$i \ -device\ usb-{audio,kbd,mouse,tablet},bus=xhci$i.0; \ done) 2. i.MX93 EVK (imx93_11x11_evk_defconfig) with two USB hubs, each with one webcam and one ethernet adapter, resulting in the following device tree: USB device tree: 1 Hub (480 Mb/s, 0mA) | u-boot EHCI Host Controller | +-2 Hub (480 Mb/s, 100mA) | GenesysLogic USB2.1 Hub | +-3 Vendor specific (480 Mb/s, 350mA) | Realtek USB 10/100/1000 LAN 001000001 | +-4 (480 Mb/s, 500mA) HD Pro Webcam C920 8F7CD51F 1 Hub (480 Mb/s, 0mA) | u-boot EHCI Host Controller | +-2 Hub (480 Mb/s, 100mA) | USB 2.0 Hub | +-3 Vendor specific (480 Mb/s, 200mA) | Realtek USB 10/100/1000 LAN 000001 | +-4 (480 Mb/s, 500mA) Generic OnLan-CS30 201801010008 Note that i.MX was tested on top of the downstream repository [1] since USB doesn't work in the upstream master branch. [1] https://github.com/nxp-imx/uboot-imx/tree/lf-6.6.52-2.2.0 commit 6c4545203d12 ("LF-13928 update key for capsule") The time spent in usb_init() ("usb start" command) is reported on the console. Here are the results: | CONFIG_UTHREAD=n | CONFIG_UTHREAD=y --------+------------------+----------------- QEMU | 5628 ms | 2212 ms i.MX93 | 4591 ms | 2441 ms Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> |
||
---|---|---|
.. | ||
dwc2.c | ||
dwc2.h | ||
dwc3-octeon-glue.c | ||
dwc3-of-simple.c | ||
ehci-atmel.c | ||
ehci-exynos.c | ||
ehci-fsl.c | ||
ehci-generic.c | ||
ehci-hcd.c | ||
ehci-marvell.c | ||
ehci-msm.c | ||
ehci-mx5.c | ||
ehci-mx6.c | ||
ehci-mxs.c | ||
ehci-npcm.c | ||
ehci-omap.c | ||
ehci-pci.c | ||
ehci-tegra.c | ||
ehci-vf.c | ||
ehci-zynq.c | ||
ehci.h | ||
Kconfig | ||
Makefile | ||
ohci-at91.c | ||
ohci-da8xx.c | ||
ohci-generic.c | ||
ohci-hcd.c | ||
ohci-lpc32xx.c | ||
ohci-npcm.c | ||
ohci-pci.c | ||
ohci.h | ||
r8a66597-hcd.c | ||
r8a66597.h | ||
usb_bootdev.c | ||
usb-sandbox.c | ||
usb-uclass.c | ||
xhci-brcm.c | ||
xhci-dwc3.c | ||
xhci-exynos5.c | ||
xhci-fsl.c | ||
xhci-generic.c | ||
xhci-mem.c | ||
xhci-mtk.c | ||
xhci-mvebu.c | ||
xhci-omap.c | ||
xhci-pci.c | ||
xhci-rcar-r8a779x_usb3_v3.h | ||
xhci-rcar.c | ||
xhci-ring.c | ||
xhci.c |