[PATCH v3 0/8] board: ten64: add USB Hub (USB5744) management support
Mathew McBride
matt at traverse.com.au
Fri May 1 03:36:01 CEST 2026
The main public Ten64 board version (RevC) has a Microchip/SMSC
USB hub (USB5744) connected to the second USB controller on the
LS1088A.
The USB5744 is configured (by bootstrap pins) not to start automatically,
rather the firmware has to issue the start commands to the USB5744
over I2C.
The rationale for this is to allow certain ports to be disabled,
namely the M.2 Key B slot where the USB3 lanes need to be disabled
for a card that is PCI Express only (as the USB3 pins are shared
with a PCIe lane).
(The functionality for this scenario is not present in the mainline
USB5744 driver at this time).
Further testing revealed that some operating systems get stuck at boot
when they start their usb5744 driver, so we hide the USB Hub from
operating systems by deleting references (fixup) in the FDT prior to handover.
Similarly, references in U-Boot's internal FDT need to be deleted
when running on a board without the USB hub present.
CI pipeline results are here:
https://github.com/u-boot/u-boot/pull/924
Enabling USB_ONBOARD_HUB triggered a compile error
which required touching arch/arm/asm/gpio.h (see below).
No build failures for other boards were detected by CI
as a result.
Signed-off-by: Mathew McBride <matt at traverse.com.au>
---
Changes in v3:
- Change how the compile error in usb/common-hub is fixed,
by including linux/types.h in arm/asm/gpio.h, which
should resolve problems with non-C90 types being used in
soc/machine specific gpio.h. This change was suggested
by Quentin Schulz.
- Change from a hardcoded usb_init() call to adding "usb start"
to preboot (thanks Fabio for the suggestion)
- Fix some typos
- Add explanation about why the fdt fixup errors can
(generally) be ignored (thanks to Simon for suggesting)
- Link to v2: https://lore.kernel.org/r/20260421-ten64-add-usb5744-v2-0-eaa81288e393@traverse.com.au
Changes in v2:
- Add missing CONFIG_OF_BOARD_FIXUP to the board defconfig
so that board_fix_fdt is called.
- Call usb_init late in the init sequence (before CLI / bootflow)
to ensure the USB hub is initialized and usable before
any downstream users.
- Remove 'local' copies of the board dts in arch/arm/dts that
are no longer required after OF_UPSTREAM conversion.
However, the board specific -u-boot.dtsi needs to remain
to pick up the SoC specific -u-boot.dtsi.
(Thanks to Fabio Estevam for pointing this out)
- Remove error print in ft_board_setup if USB hub nodes
not found (e.g if the control FDT is passed to the OS,
the fixup has already been done by board_fix_fdt,
causing a false error notification).
- Link to v1: https://lore.kernel.org/r/20260409-ten64-add-usb5744-v1-0-2094496f72c8@traverse.com.au
---
Mathew McBride (8):
arm: gpio: include integer type definitions for gpio.h
board: ten64: add fdt fixup to hide usb hub topology
board: ten64: remove USB hub references from internal FDT when needed
configs: ten64: enable OF_BOARD_FIXUP
configs: ten64: enable USB_ONBOARD_HUB (USB5744) option
configs: ten64: switch to OF_UPSTREAM
arm: dts: remove local copy of Ten64 board DTS
configs: ten64: add USB start to preboot
arch/arm/dts/fsl-ls1088a-ten64-u-boot.dtsi | 8 -
arch/arm/dts/fsl-ls1088a-ten64.dts | 388 -----------------------------
arch/arm/include/asm/gpio.h | 2 +
board/traverse/ten64/ten64.c | 70 ++++++
configs/ten64_tfa_defconfig | 7 +-
5 files changed, 78 insertions(+), 397 deletions(-)
---
base-commit: 4433253ecf2041f9362a763bb6cb79960921ac7e
change-id: 20260408-ten64-add-usb5744-0ad5f6ad9f40
Best regards,
--
Mathew McBride <matt at traverse.com.au>
More information about the U-Boot
mailing list