1. In I2C slave boot mode (MODE_SEL=0, MODE_SEL=1), the hub will wait for the I2C master to load the configuration or firmware and enumerate based on that. Please refer to the KBA- EZ-USB® HX3 I2C Slave Mode Operation – KBA90943
For generating a I2C configuration (this includes VID,PID) or firmware file, please use the Blaster Plus utility, you can refer to the attached guide for the steps.
For default configuration, you can use the default B7 firmware from- https://www.cypress.com/documentation/software-and-drivers/hx3-firmware
2. I think the enumeration sequence might have failed with the Hub Class Get Descriptor request. Pleaes let us know if this happens every time you connect the hub to uboot system? Could you please check this when using the I2C slave boot mode or I2C master boot mode if you have an EEPROM? This would help eliminate that the HX3 internal ROM firmware is causing the Stall.
Thanks for your reply. From the hx3-firmware release notes, I see the configuration from internal rom is recommended. In my opinion, I think the default B7 firmware in ROM can satisfy most application of HX3. In our designing, the CYUSB3304 is connected to the Hi3559 SOC and they are on the same PCB. The CYUSB3304 boots before the uboot starting. The bug of usb3.0 hub unrecognization takes place every time uboot starts. On the other hand, I'm sorry to tell you our current hardware design cannot support the I2C master boot mode because of no EEPROM. The I2C bus of CYUSB3304 is directly connected to the Hi3559 SOC. Ｗｈａｔ I really doubt is that in linux system, the CYUSB3304 can be recognized as a usb2.0 and usb3.0 hub separately, but in uboot2016 only usb2.0 device can be identified while usb3.0 hub cannot be identified. In other words, is CYUSB3304 incompatible with uboot2016 while realtek usb hub is compatible?
To clarify, the B7 firmware in the internal ROM is not the latest version and we have seen a similar enumeration issue with it, so we recommend using the latest version from the above link.
Even if you dont have an I2C EEPROM. could you please load this firmware when HX3 is put in I2C slave boot mode with the SoC or any other I2C master if possible?
To verify if it is because of the delayed uboot start in your SoC compared to the hub, could please hold HX3 in reset till it starts?
Since you mentioned that the realtek hub works with the uboot system, and both the hub should bind to the same generic hub driver, it may be possible that the 3.0 enumeration is getting stalled even before the hub can bind to the driver. Please share the realtek hub part number, if its possible, for us to check the differences.