[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