Cyclone5 SoC: U-Boot not detecting USB-HUB
Hello there,
I'm working on a design on top of a Chameleon96 Board (CycloneV based), featuring a USB OTG Chip USB3300, and connected to it an USB 2513B Hub. My issue is that neither U-Boot or Linux are able to detect the USB Hub connected to the USB3300. This used to work with older U-Boot versions and are still working on my board, but I was not able to reproduce such behavior with up-to-date versions (cloned from https://github.com/altera-fpga/u-boot-socfpga and https://github.com/altera-fpga/linux-socfpga).
The Chameleon96 has two GPIO pins to control the reset of the mentioned USB chips, with a fixed configuration on the USB 2513B (the I2C interface is not exposed).
With my version (U-Boot 2025.07-gd4f268660a70-dirty and Linux 6.12.33-g3234b1ed8956), the USB OTG is detected and the hub registered with logs like the following:
[ 0.883275] dwc2 ffb40000.usb: supply vusb_d not found, using dummy regulator
[ 0.890619] dwc2 ffb40000.usb: supply vusb_a not found, using dummy regulator
[ 0.898034] dwc2 ffb40000.usb: Configuration mismatch. dr_mode forced to host
[ 0.905721] dwc2 ffb40000.usb: DWC OTG Controller
[ 0.910454] dwc2 ffb40000.usb: new USB bus registered, assigned bus number 1
[ 0.917571] dwc2 ffb40000.usb: irq 32, io mem 0xffb40000
[ 0.923324] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, b2
[ 0.931588] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber1
[ 0.938800] usb usb1: Product: DWC OTG Controller
[ 0.943509] usb usb1: Manufacturer: Linux 6.12.33-g3234b1ed8956 dwc2_hsotg
[ 0.950362] usb usb1: SerialNumber: ffb40000.usb
[ 0.955682] hub 1-0:1.0: USB hub found
[ 0.959499] hub 1-0:1.0: 1 port detected
but the connected USB hub never shows up. Similarly 'usb start' from the U-Boot prompt just shows something called U-Boot Root Hub:
=> usb start starting USB...
USB DWC2
Bus usb@ffb40000: 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
=> usb tree
USB device tree:
1 Hub (480 Mb/s, 0mA) U-Boot Root Hub
Older u-boot versions (and linux) are able to detect the USB hub after 'usb start'. In this case, the root hub is named DWT OTC RootHub, and I don't know if this is just a change of naming somewhere or something wrong is also happening while detecting the USB3300 Hub:
SOCFPGA_CHAMELEON96 # usb start
(Re)start USB...
USB0: Core Release: 2.93a scanning bus 0 for devices... 2 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
SOCFPGA_CHAMELEON96 # usb tree
USB device tree:
1 Hub (480 Mb/s, 0mA)
| DWC OTG RootHub
| +-2 Hub (480 Mb/s, 2mA)
the linux kernel (4.1.33-ltsi-altera) is also able to detect the USB Hub as can be seen in these logs:
[ 0.913203] ffb40000.usb supply vusb_d not found, using dummy regulator
[ 0.919864] ffb40000.usb supply vusb_a not found, using dummy regulator
[ 0.957196] dwc2 ffb40000.usb: EPs: 16, dedicated fifos, 8064 entries in SPRM
[ 1.817295] dwc2 ffb40000.usb: DWC OTG Controller
[ 1.822011] dwc2 ffb40000.usb: new USB bus registered, assigned bus number 1
[ 1.829076] dwc2 ffb40000.usb: irq 44, io mem 0x00000000
[ 1.834617] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.841394] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber1
[ 1.848596] usb usb1: Product: DWC OTG Controller
[ 1.853282] usb usb1: Manufacturer: Linux 4.1.33-ltsi-altera-svn260 dwc2_hsog
[ 1.860481] usb usb1: SerialNumber: ffb40000.usb
[ 1.865670] hub 1-0:1.0: USB hub found
[ 1.869457] hub 1-0:1.0: 1 port detected
...
[ 2.367190] usb 1-1: new high-speed USB device number 2 using dwc2
[ 2.577385] usb 1-1: New USB device found, idVendor=0424, idProduct=2513
[ 2.584069] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.591939] hub 1-1:1.0: USB hub found
[ 2.595782] hub 1-1:1.0: 3 ports detected
I think I've ported all the needed configuration to the u-boot sources (basically resetting the USB hub using the attached GPIOs, and I also tried the reset sequence manually from U-Boot with the gpio command) and I'm not able to figure out how to find where the issue might be. I've forked u-boot sources here: https://github.com/teiram/u-boot-socfpga/, using the socfpga_chameleon96_defconfig configuration.
Could you please support me in order to troubleshoot what the issue might be? I tried to backport my changes to some different branches on u-boot-socpfga but got the same results or even worse (no boot at all).
I also have sources for a working U-Boot but they are quite old and the configuration changed sensibly since. I think all the needed options are set.
Cheers,
Manuel