3 Replies Latest reply on Aug 21, 2020 2:56 AM by SananyaM_56

    Usb3.0 hub of CYUSB3304 cannot be recognized in u-boot-2016.11

    LeYu_4546416

      Hello! Recently, our team is  using chip CYUSB3304-68LTXI to achieve a usb 3.0hub. The main controller is Hi3559AV100 soc whose CPU core is arm cortex A73. We compiled uboot-2016.11 and linux kernel  4.9.37 to emmc, the system can work properly after debugging except the usb hub. The usb hub chip CYUSB3304 is connected to Hi3559AV100 usb module.

       

      1.Firstly, we set the MODE_SEL[0] to low level and MODE_SEL[1] to high level, that is to say we configure the chip as a IIC slave device to be configured from external Hi3559 controller.  But we don't configure anything to CYUSB3304 through IIC bus. Then the CYUSB3304 chip cannot be identified by uboot and kernel. Then we forcely pull the MODE_SEL[0] to high level , that is to say we configure the chip to be configured from internal rom. Then the CYUSB3304 chip can be identified by uboot and kernel. If configured as a IIC slave device ,should I download firmware to CYUSB3304 or just configure some options like PID/VID through IIC bus? Otherwise, is there any firmware in chip rom or just some configure options in it? Can we get the default firmware or configure options?

       

      2. After configured from internal rom,  the CYUSB3304 chip can be identified by uboot and kernel. In linux system, the CYUSB3304 can be identified as a usb2.0 and usb3.0 hub separately, whose ID is 04b4:6502 and 04b4:6500. But in uboot only usb2.0 device can be identified while usb3.0 hub cannot be identified. Meanwhile, we test a realtek usb hub, which can be identified as a usb2.0 usb3.0 device successfully both in uboot and linux system. By openning the debug info in uboot, we can see the usb3.0 hub of CYUSB3304 has been identified as super speed by uboot, but returned a stalled status while uboot getting hub configuration of usb3.0 hub of CYUSB3304, leading to the failure of identification of usb3.0 hub of CYUSB3304. What's the matter?

      [Control msg data is :  request: 0x6, requesttype: 0xA0, value 0x2900 index 0x0 length 0x4]

        • 1. Re: Usb3.0 hub of CYUSB3304 cannot be recognized in u-boot-2016.11
          SananyaM_56

          Hello,

           

          1. In I2C slave boot mode (MODE_SEL[0]=0, MODE_SEL[1]=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.

           

          Best Regards,
          Sananya

          • 2. Re: Usb3.0 hub of CYUSB3304 cannot be recognized in u-boot-2016.11
            LeYu_4546416

            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. What 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?

            • 3. Re: Usb3.0 hub of CYUSB3304 cannot be recognized in u-boot-2016.11
              SananyaM_56

              Hello,

               

              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.

               

              Best Regards,
              Sananya