summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-04-25Merge tag 'efi-2025-07-rc1-3' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-efi Pull request efi-2025-07-rc1-3 Documentation: * add documentation for the DeepComputing FML13V01 * fix typos UEFI: * build with HII configuration protocol * print image load address in StartImage Boards: * qemu-riscv raise CONFIG_NR_DRAM_BANKS * add support for the DeepComputing FML13V01 board via starfive_visionfive2_defconfig * add UNIT_TESTS to big-endian Malta boards
2025-04-25configs: add UNIT_TESTS to big-endian Malta boardsHeinrich Schuchardt
We currently only run the unit tests on low-endian boards. We should run them on big-endian, too. Reviewed-by: Heiko Schocher <hs@denx.de> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25doc: jh7110: describe debug UARTHeinrich Schuchardt
Provide the settings for using the debug UART in SPL. Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25doc: starfive: use jh7110_common.rstHeinrich Schuchardt
To avoid duplicate maintenance just include jh7110_common.rst to describe the usage of the different boot sources. Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25doc: starfive: use consistent formattingHeinrich Schuchardt
Always use ---- for the H2 level. Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25doc: add DeepComputing FML13V01 documentationHeinrich Schuchardt
Describe building U-Boot for the board and booting. Carve out common information for JH7110 boards into an include. Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25board: starfive: spl: support DeepComputing FML13V01Heinrich Schuchardt
On the DeepComputing Framework motherboard (FML13V01) choose the matching FIT configuration. Reviewed-by: Hal Feng <hal.feng@starfivetech.com> Reviewed-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25board: starfive: DeepComputing FML13V01 fdt selectionHeinrich Schuchardt
We support all JH7110 boards with starfive_visionfive2_defconfig. The relevant device-tree is selected at runtime based on EEPROM data. Support setting $fdtfile to the file name of the DeepComputing Framework motherboard (FML13V01) device-tree. Reviewed-by: Hal Feng <hal.feng@starfivetech.com> Reviewed-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25riscv: dts: jh7110: add DeepComputing FML13V01 device-treeHeinrich Schuchardt
Add the u-boot device-tree include needed to support the DeepComputing Framework motherboard (FML13V01). Reviewed-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Hal Feng <hal.feng@starfivetech.com> Reviewed-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25configs: add jh7110-deepcomputing-fml13v01 to VF2 defconfigHeinrich Schuchardt
The DeepComputing Framework motherboard is a JH7110 device support by the upstream kernel. Add its device-tree to the list of device-trees to be included into the starfive_visionfive_defconfig. Reviewed-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Hal Feng <hal.feng@starfivetech.com> Reviewed-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: E Shattow <e@freeshell.de> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25configs: qemu-riscv raise CONFIG_NR_DRAM_BANKSHeinrich Schuchardt
The number of memory banks in QEMU is not bounded by 1. In this example we have two banks: qemu-system-riscv64 \ -machine virt \ -nographic \ -m 8192 \ -smp 8,sockets=2,cores=4,threads=1 \ -numa node,cpus=0-3,mem=4096 \ -numa node,cpus=4-7,mem=4096 \ -kernel u-boot As we will see RISC-V NUMA systems using U-Boot we should be able to emulate these. Use the default value defined in /Kconfig as 4. Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-04-25doc: fix typo 'to'Aristo Chen
Fix typo from "to" to "do" Signed-off-by: Aristo Chen <aristo.chen@canonical.com> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
2025-04-25doc: fix typo commnadAristo Chen
fix typo from "commnad" to "command" Signed-off-by: Aristo Chen <aristo.chen@canonical.com>
2025-04-25doc: arch: arm64: fix typosAristo Chen
Fix typo from "recommened" to "recommended" Signed-off-by: Aristo Chen <aristo.chen@canonical.com>
2025-04-25doc: remove duplicated "commands"Aristo Chen
The "commands" are duplicated, so remove one of them Signed-off-by: Aristo Chen <aristo.chen@canonical.com> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
2025-04-25efi_loader: print image load address in StartImageHeinrich Schuchardt
When starting image add the image load address to the debug output. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2025-04-25efi_loader: build with HII configuration protocolHeinrich Schuchardt
Without the HII configuration protocol the debug version of the UEFI shell cannot be used. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2025-04-24tools/make_pip: Use venv when invoking pipMattijs Korpershoek
Recent Ubuntu versions (24.04+) disallow pip by default when installing packages. The recommended approach is to use a virtual environment (venv) instead. Because of this, "make pip" is failing on such versions. To prepare CI container migration to Ubuntu 24.04, use a venv in the make_pip script. Note: This has been reported on [1] [1] https://source.denx.de/u-boot/custodians/u-boot-dm/-/issues/37 Signed-off-by: Mattijs Korpershoek <mkorpershoek@kernel.org> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
2025-04-24CI: Update to latest containersTom Rini
This changes to using "venv" rather than "virtualenv" for Python sandboxing. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-04-24python: Use and refer to the venv module rather than virtualenvTom Rini
Using some form of sandbox with Python modules is a long standing best practice with the language. There are a number of ways to have a Python sandbox be created. At this point in time, it seems the Python community is moving towards using the "venv" module provided with Python rather than a separate tool. To match that we make the following changes: - Refer to a "Python sandbox" rather than virtualenv in comments, etc. - Install the python3-venv module in our container and not virtualenv. - In our CI files, invoke "python -m venv" rather than "virtualenv". - In documentation, tell users to install python3-venv and not virtualenv. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-04-24Merge patch series "Add PCIe support for TI AM64 SoC"Tom Rini
Hrushikesh Salunke <h-salunke@ti.com> says: TI's AM64 SoC has a single instance of Cadence PCIe Controller. This series enables support for PCIe in AM64 SoC and to configure it in Root-Complex mode of operation. Link: https://lore.kernel.org/r/20250416120830.138965-1-h-salunke@ti.com
2025-04-24configs: am64x_evm_a53_defconfig: Enable configs for PCIe supportHrushikesh Salunke
TI's AM64 SoC has single instance of PCIe Controller namely PCIe0 which is Cadence PCIe Controller. To support PCIe functionality with PCIe0 instance in Root-Complex mode enable corresponding configs. Also enable configs to support NVMe over PCIe. Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com> Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
2025-04-24pci: pcie_cdns_ti: Enable PCIe root-complex mode in AM64 SoCHrushikesh Salunke
TI's AM64 SoC has single instance of PCIe Controller namely PCIe0 which is Cadence PCIe Controller. Add support to configure PCIe0 in Root- Complex mode of operation. Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com> Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
2025-04-24pci: pcie_cdns_ti: Include linux/sizes.h headerHrushikesh Salunke
Driver uses macro SZ_4G to configure inbound base address register. The macro is used without including the header file in which it is defined. Fix this. Fixes: 59ad5480098 ("pci: Add TI K3 Cadence PCIe Controller") Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com> Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
2025-04-24Merge patch series "arm: mach-k3: remove some firewalls left over by ROM"Tom Rini
Bryan Brattlof <bb@ti.com> says: This small series is here to remove some firewalls setup by ROM during their boot and clean things up for Linux later on. Ideally this would be a simple call to remove_fwl_configs() however the location of the firewall is problematic (could potentially crash the core) when we're currently executing from the memory region protected by the firewall. So we need to introduce a function which allows us to disable specific firewall regions and skip others to ensure boot stability. Link: https://lore.kernel.org/r/20250414-firewalls-v1-0-89090085c08b@ti.com
2025-04-24arm: mach-k3: am625: remove any firewalls ROM has configured for HSRAMBryan Brattlof
ROM will configure a firewall to only allow HSRAM to be touched by the R5 core. Any outside entity like DMA or the A53s will not have access to this region. This can be problematic when U-Boot, running on the A53, loads firmware that runs out of this region. To simplify things remove the firewall here and let the remote core firmware place a new firewall themselves if they wish for the memory region. Signed-off-by: Bryan Brattlof <bb@ti.com>
2025-04-24arm: mach-k3: support disabling a single firewall regionBryan Brattlof
During boot some firewall regions could contain the R5's code which if we change the firewalls settings will crash the core. To get around this issue, define a new function which allows us to specify specific regions we want unlocked. Signed-off-by: Bryan Brattlof <bb@ti.com>
2025-04-24Merge patch series "More MMC fixes"Tom Rini
Judith Mendez <jm@ti.com> says: This patch series fixes MMC_HS_52 mode in am654_sdhci driver, as well as HIGH_SPEED_ENA and UHS_MODE_SELECT for HS modes. Also add TI_COMMON_CMD_OPTIONS to K3 Sitara board a53 defconfigs. Link: https://www.ti.com/lit/er/sprz574a/sprz574a.pdf Link: https://lore.kernel.org/r/20250417234334.3661321-1-jm@ti.com
2025-04-24configs: am62*_evm_a53_defconfig: Add TI_COMMON_CMD_OPTIONSJudith Mendez
Add TI_COMMON_CMD_OPTIONS config options to Sitara K3 boards at a53 stage since we rely on most of the commands implied for testing and debugging purposes. Since all commands are now enabled by default, remove the redundant CMD_* options in the a53 defconfigs. Also add MMC_REG & MMC_SPEED_MODE_SET useful commands to TI_COMMON_CMD_OPTIONS. Signed-off-by: Judith Mendez <jm@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com>
2025-04-24mmc: am654_sdhci: Add am654_sdhci_set_control_regJudith Mendez
This patch adds am654_sdhci_set_control_reg to am654_sdhci. This is required to fix UHS_MODE_SELECT for TI K3 boards. If any of HIGH_SPEED_ENA, V1P8_SIGNAL_ENA, UHS_MODE_SELECT are set, then data will be launched on the pos-edge of the clock. Since K3 SoCs did not meet timing requirements for High Speed SDR mode at rising clock edge, none of these three should be set, therefore limit UHS_MODE_SELECT to only be set for modes above MMC_HS_52. This fixes MMC write issue on am64x evm at mode High Speed SDR. Signed-off-by: Judith Mendez <jm@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com>
2025-04-24mmc: am654_sdhci: Fix HIGH_SPEED_ENAJudith Mendez
High Speed enable bit switches data launch from the falling clock edge (half cycle timing) to the rising clock edge (full cycle timing). For all SD UHS modes, data launch must happen at the rising clock edge, so set HIGH_SPEED_ENA for SDR12 and SDR25 modes. For all HS modes, data launch must happen at the falling clock edge, so do not set HIGH_SPEED_ENA for MMC_HS_52. Signed-off-by: Judith Mendez <jm@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com>
2025-04-24mmc: am654_sdhci: Add MMC_HS_52 to timing dataJudith Mendez
This patch adds MMC_HS_52 to the timing data structure. Previously, this bus mode tap settings were not populated and were instead populated for MMC_HS which is a different bus mode up to 26MHz. Since we intended these settings according to the device data sheet[0] for MMC_HS_52 up to 52MHz, populate MMC_HS tap settings for MMC_HS_52. While we are here, fix typo in ti,itap-del-sel-mms-hs. [0] https://www.ti.com/lit/ds/symlink/am625.pdf Table 7-79 Signed-off-by: Judith Mendez <jm@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com>
2025-04-24Merge tag 'u-boot-dfu-20250424' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-dfu u-boot-dfu-20250425 Usb gadget: - Fix ACM gadget release - Allow ACM gadget restart after releasing it - Add 'enabled' flag to usb_ep structure DFU: - Fix alt buffer clearing for DeveloperBox board
2025-04-24cmd: cls: do not repeat clearing of consoleSughosh Ganu
There is no need to repeat the command to clear the console. Remove it's repeat attribute. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
2025-04-24spi: cadence-qspi: Add disable STIG mode quikrs.Boon Khai Ng
Adding quirk to disable STIG mode since cadence controller has issue for read/write using the STIG mode. STIG mode is enabled by default since 2023.04 for small read/write(<8bytes). Updated STIG mode reading from dev_get_driver_data by assigning to platdata struct before read quirks variable. The STIG mode is disabled for normal read case and enabled for QSPI Jedec ID read/write since it requires STIG read/write. Porting from linux implementation https://lore.kernel.org/all/20241204063338.296959-1-niravkumar .l.rabara@intel.com/T/ Signed-off-by: Boon Khai Ng <boon.khai.ng@altera.com> Reviewed-by: Tien Fong Chee <tien.fong.chee@altera.com>
2025-04-24arm: mach-k3: r5: j7200: Add clk dev data for WKUP UARTBhavya Kapoor
Add clk and dev data for wakeup uart to enable wakeup UART as console. Reported-by: KEERTHY <j-keerthy@ti.com> Signed-off-by: Bhavya Kapoor <b-kapoor@ti.com>
2025-04-24mach-k3: common_fdt: Move carveout structDaniel Schultz
Labels are not allowed before declarations. Move the carveout struct at the beginning and only update 'end' at this point. This will fix following error: arch/arm/mach-k3/common_fdt.c: In function 'fdt_fixup_reserved': arch/arm/mach-k3/common_fdt.c:156:2: error: a label can only be part of a statement and a declaration is not a statement 156 | struct fdt_memory carveout = { | ^~~~~~ make[1]: *** [scripts/Makefile.build:256: arch/arm/mach-k3/common_fdt.o] Error 1 make: *** [Makefile:1919: arch/arm/mach-k3] Error 2 Fixes: 096aa229a9e ("mach-k3: common_fdt: create a reserved memory node") Signed-off-by: Daniel Schultz <d.schultz@phytec.de> Reviewed-by: Udit Kumar <u-kumar1@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com>
2025-04-24mach-k3: add eMMC FS boot support for am62[ap]Anshul Dalal
This makes spl_mmc_boot_mode consistent across am62x, 62a and 62p. If MMCSD_MODE_EMMCBOOT is returned, FS boot fails since it checks for FS on the hardware partitions, not the UDA. So to allow FS boot from EMMC, the function should return MMCSD_MODE_FS instead which allows us to read from FS on the UDA. Signed-off-by: Anshul Dalal <anshuld@ti.com>
2025-04-24arm: dts: am62a: allow booting from eMMCAnshul Dalal
The bootph-all property in u-boot enables driver initialization prior to relocation, this is necessary to use the device as boot media. sdhci0 is the phandle for eMMC on am62a, so this change allows us to use eMMC as a boot media. Signed-off-by: Anshul Dalal <anshuld@ti.com>
2025-04-24configs: set SPL_TEXT_BASE by default for k3 platformsAnshul Dalal
SPL_TEXT_BASE is used as the load address for the main domain SPL on k3 platforms. Since the config value is the same for every board, this patch sets the value 0x80080000 as default for all 64-bit ARCH_K3, 0x43c00000 as default for the R5 cores and deletes the instances of SPL_TEXT_BASE in individual defconfigs. Signed-off-by: Anshul Dalal <anshuld@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2025-04-24test/py: spi: Prevent to overwrite the reserved memoryLove Kumar
Update SPI negative tests to prevent SF command from overwriting the reserved memory area. Signed-off-by: Love Kumar <love.kumar@amd.com>
2025-04-24smbios: Do not look up children of invalid nodesSamuel Holland
If there is no UCLASS_SYSINFO device available, parent_node will be ofnode_null(). Calling ofnode_find_subnode() then triggers an assertion: drivers/core/ofnode.c:598: ofnode_find_subnode: Assertion `ofnode_valid(node)' failed. Check for a valid parent_node, not just that OF_CONTROL is enabled. Fixes: 44ffb6f0ecaf ("smbios: Allow properties to come from the device tree") Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
2025-04-24net: dwc_eth_qos: Fix hang when freeing packet after stopSamuel Holland
If eqos_free_pkt() is called after eqos_stop(), eqos_stop_resets() will have been called already. This may prevent accessing the MMIO space to update the RX descriptor tail pointer, so we must skip the descriptor maintenance logic. This is okay because the descriptors and tail pointer will all be rewritten anyway during the next call to eqos_start(). This hang was observed after a failed TFTP transaction: eqos_recv(dev=000000047fb57330, flags=1): eqos_recv: *packetp=000000c3ffb5c080, length=151 TFTP error: 'file <FILE> not found for <IP>' (1) Not retrying... eqos_stop(dev=000000047fb57330): eqos_stop: OK eqos_free_pkt(packet=000000c3ffb5c080, length=151) <HANG> Fixes: ba4dfef1469f ("net: add driver for Synopsys Ethernet QoS device") Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
2025-04-23Merge patch series "Uthreads"Tom Rini
Jerome Forissier <jerome.forissier@linaro.org> says: This series introduces threads and uses them to improve the performance of the USB bus scanning code and to implement background jobs in the shell via two new commands: 'spawn' and 'wait'. The threading framework is called 'uthread' and is inspired from the barebox threads [2]. setjmp() and longjmp() are used to save and restore contexts, as well as a non-standard extension called initjmp(). This new function is added in several patches, one for each architecture that supports HAVE_SETJMP. A new symbol is defined: HAVE_INITJMP. Two tests, one for initjmp() and one for the uthread scheduling, are added to the lib suite. After introducing threads and making schedule() and udelay() a thread re-scheduling point, the USB stack initialization is modified to benefit from concurrency when UTHREAD is enabled, where uthreads are used in usb_init() to initialize and scan multiple busses at the same time. The code was tested on arm64 and arm QEMU with 4 simulated XHCI buses and some devices. On this platform the USB scan takes 2.2 s instead of 5.6 s. Tested on i.MX93 EVK with two USB hubs, one ethernet adapter and one webcam on each, "usb start" takes 2.4 s instead of 4.6 s. Finally, the spawn and wait commands are introduced, allowing the use of threads from the shell. Tested on the i.MX93 EVK with a spinning HDD connected to USB1 and the network connected to ENET1. The USB plus DHCP init sequence "spawn usb start; spawn dhcp; wait" takes 4.5 seconds instead of 8 seconds for "usb start; dhcp". [1] https://patchwork.ozlabs.org/project/uboot/list/?series=446674 [2] https://github.com/barebox/barebox/blob/master/common/bthread.c Link: https://lore.kernel.org/r/20250418141114.2056981-1-jerome.forissier@linaro.org
2025-04-23configs: qemu: enable UTHREAD and CMD_SPAWN in various defconfigsJerome Forissier
Enable UTHREAD and CMD_SPAWN on supported QEMU platforms for testing purposes. Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
2025-04-23MAINTAINERS: add UTHREADJerome Forissier
Add myself as the maintainer for the UTHREAD framework, the spawn/wait commands and the associated tests. Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2025-04-23test: cmd: add test for spawn and wait commandsJerome Forissier
Test the spawn and wait commands. Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2025-04-23cmd: add spawn and wait commandsJerome Forissier
Add a spawn command which runs another command in the background, as well as a wait command to suspend the shell until one or more background jobs have completed. The job_id environment variable is set by spawn and wait accepts optional job ids, so that one can selectively wait on any job. Example: => date; spawn sleep 5; spawn sleep 3; date; echo "waiting..."; wait; date Date: 2025-02-21 (Friday) Time: 17:04:52 Date: 2025-02-21 (Friday) Time: 17:04:52 waiting... Date: 2025-02-21 (Friday) Time: 17:04:57 => Another example showing how background jobs can make initlizations faster. The board is i.MX93 EVK, with one spinning HDD connected to USB1 via a hub, and a network cable plugged into ENET1. # From power up / reset u-boot=> setenv autoload 0 u-boot=> setenv ud "usb start; dhcp" u-boot=> time run ud [...] time: 8.058 seconds # From power up / reset u-boot=> setenv autoload 0 u-boot=> setenv ud "spawn usb start; spawn dhcp; wait" u-boot=> time run ud [...] time: 4.475 seconds Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2025-04-23dm: usb: initialize and scan multiple buses simultaneously with uthreadJerome Forissier
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>
2025-04-23dm: usb: move bus initialization into new static function usb_init_bus()Jerome Forissier
To prepare for the introduction of threads in the USB initialization sequence, move code out of usb_init() into a new helper function: usb_init_bus() and count the number of USB controllers initialized successfully by using the DM device_active() function. Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>