This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TUSB8044A: TUSB8044A USB port enumerations

Part Number: TUSB8044A

Hi Team  

We are  using  TUSB8044A we  are  getting  following  following log during  kernel  initialization 

[ 0.000000] Kernel command line: console=ttyTCU0,115200 video=tegrafb no_console_suspend=1 earlycon=tegra_comb_uart,mmio32,0x0c168000 gpt u0
[ 0.755777] GPIO line 429 (usbhub-reset) hogged as output/high
[ 0.755812] GPIO line 428 (led-hub) hogged as output/high
[ 0.818866] usbcore: registered new interface driver usbfs
[ 0.818922] usbcore: registered new interface driver hub
[ 0.819051] usbcore: registered new device driver usb
[ 0.885148] vdd-usb-3v3: at 3300 mV
[ 1.463760] tegra_nvdisp_bandwidth_register_max_config: max config hubclk = 300000000 Hz
[ 1.801769] usbcore: registered new interface driver r8152
[ 1.801818] usbcore: registered new interface driver asix
[ 1.801877] usbcore: registered new interface driver ax88179_178a
[ 1.801910] usbcore: registered new interface driver cdc_ether
[ 1.801941] usbcore: registered new interface driver net1080
[ 1.801970] usbcore: registered new interface driver cdc_subset
[ 1.802002] usbcore: registered new interface driver zaurus
[ 1.802056] usbcore: registered new interface driver cdc_ncm
[ 1.802086] usbcore: registered new interface driver cdc_mbim
[ 1.803692] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.803789] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.808769] tegra-xusb 3610000.xhci: USB2 port 0 has OTG_CAP
[ 1.810804] tegra-xusb 3610000.xhci: extcon 0: ffffffc1f4d15800 id
[ 1.811110] usbcore: registered new interface driver cdc_wdm
[ 1.811187] usbcore: registered new interface driver uas
[ 1.811239] usbcore: registered new interface driver usb-storage
[ 1.811357] usbcore: registered new interface driver usbserial
[ 1.816445] tegra-xusb 3610000.xhci: Firmware timestamp: 2019-07-24 05:47:34 UTC, Version: 60.06 release
[ 1.816485] tegra-xusb 3610000.xhci: xHCI Host Controller
[ 1.816537] tegra-xusb 3610000.xhci: new USB bus registered, assigned bus number 1
[ 1.816576] usbcore: registered new interface driver xpad
[ 1.817272] tegra-xusb 3610000.xhci: hcc params 0x0184ff25 hci version 0x110 quirks 0x00050810
[ 1.817318] tegra-xusb 3610000.xhci: irq 464, io mem 0x03610000
[ 1.817677] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.817685] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.817691] usb usb1: Product: xHCI Host Controller
[ 1.817698] usb usb1: Manufacturer: Linux 4.9.140-tegra xhci-hcd
[ 1.817703] usb usb1: SerialNumber: 3610000.xhci
[ 1.818172] hub 1-0:1.0: USB hub found
[ 1.818232] hub 1-0:1.0: 4 ports detected
[ 1.818974] tegra-xusb 3610000.xhci: xHCI Host Controller
[ 1.818986] tegra-xusb 3610000.xhci: new USB bus registered, assigned bus number 2
[ 1.818996] tegra-xusb 3610000.xhci: Host supports USB 3.1 Enhanced SuperSpeed
[ 1.819359] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[ 1.819367] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.819373] usb usb2: Product: xHCI Host Controller
[ 1.819379] usb usb2: Manufacturer: Linux 4.9.140-tegra xhci-hcd
[ 1.819384] usb usb2: SerialNumber: 3610000.xhci
[ 1.819807] hub 2-0:1.0: USB hub found
[ 1.819849] hub 2-0:1.0: 4 ports detected
[ 2.003569] usbcore: registered new interface driver usbhid
[ 2.003574] usbhid: USB HID core driver
[ 2.021565] usbcore: registered new interface driver snd-usb-audio
[ 2.142732] usb 1-2: new high-speed USB device number 2 using tegra-xusb
[ 2.163290] usb 1-2: New USB device found, idVendor=0451, idProduct=8442
[ 2.163297] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[ 2.163302] usb 1-2: SerialNumber: 1D000069C998
[ 2.164142] hub 1-2:1.0: USB hub found
[ 2.164209] hub 1-2:1.0: 6 ports detected
[ 2.450702] usb 1-2.5: new high-speed USB device number 3 using tegra-xusb
[ 2.471115] usb 1-2.5: New USB device found, idVendor=0451, idProduct=82ff
[ 2.471121] usb 1-2.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.472806] hid-generic 0003:0451:82FF.0001: hidraw0: USB HID v1.11 Device [HID 0451:82ff] on usb-3610000.xhci-2.5/input0
[ 5.141145] usb0: HOST MAC 1a:da:05:a7:b3:ee
[ 5.141292] usb0: MAC 1a:da:05:a7:b3:ef
[ 5.178250] l4tbr0: port 2(usb0) entered blocking state
[ 5.178258] l4tbr0: port 2(usb0) entered disabled state
[ 5.179453] device usb0 entered promiscuous mode
[ 5.189939] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[ 5.993799] tegra-xusb 3610000.xhci: Upgrade port 0 to USB3.0
[ 5.993806] tegra-xusb 3610000.xhci: Upgrade port 1 to USB3.0
[ 6.318966] usb 2-3: new SuperSpeed USB device number 2 using tegra-xusb
[ 6.340494] usb 2-3: New USB device found, idVendor=0451, idProduct=8440
[ 6.340504] usb 2-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 6.342195] hub 2-3:1.0: USB hub found
[ 6.342275] hub 2-3:1.0: 4 ports detected
[ 6.506752] usb 2-3: usb_suspend_both: status 0
[ 6.507034] usb usb2: usb_suspend_both: status 0

**********************************************************************************************

Logs after inserting pen drive on hub
anycon@tegra-ubuntu:~$ [ 265.219424] usb 1-2.3: Device not responding to setup address.
[ 265.427463] usb 1-2.3: Device not responding to setup address.
[ 265.634826] usb 1-2.3: device not accepting address 4, error -71
[ 265.715554] usb 1-2.3: Device not responding to setup address.
[ 265.923423] usb 1-2.3: Device not responding to setup address.
[ 266.130778] usb 1-2.3: device not accepting address 5, error -71
[ 266.814883] usb 1-2.3: device descriptor read/64, error -32
[ 267.002957] usb 1-2.3: device descriptor read/64, error -32
[ 267.270877] usb 1-2.3: device descriptor read/64, error -32
[ 267.458891] usb 1-2.3: device descriptor read/64, error -32
[ 267.567052] usb 1-2-port3: unable to enumerate USB device

Please  let  me know  following  

1) We are  getting  two  product  id  for  same  vendor  ID  ? Is it  correct  ? why  we are  getting  two  product  id  ?

2) During enumeration  what  should  be  step/ sequence  ?

3) We checked  We are   getting  VBUS  5V , in-fact glowed  discrete LED. But neither  USB  mouse  nor  USB SD  card  LED  is glowing. Does  these  led  should glow  after getting  enumeration successful.?

4) Regarding PWRCTRL how  , it  will  be  driven ie does  it will be  always remain ON or OFF based  on active low or  high setting? Or it  will  be driven based  on what  kind  of  device  is getting  connected ? I am 

getting  voltage  on VBUS  even when no  device is  connected. 

5) Does  enumeration has  any  dependency on  VBUS.

6) Can we  read  and wrte  registers  over USB if  yes  then  how ?   

  • Hi,

    Please see my notes below.

    1.This is expected the USB 3.0 hub instance will report a PID of 0x8440h and the USB 2.0 hub instance will report a PID of 0x8442h.

    2. For Type-A USB 2.0 devices Vbus should be present first, this tell the device that a USB Hub or hot is connected (similar to the USB_VBUS pin). Then USB 2.0 device will present DP (or DM) pull-up to begin enumeration. USB 3 devices will enter RX.detect when VBUS is detected.

    3. Vbus to downstream devices should be available before USB enumeration.  

    4.If power management is enabled then PWRCTL will de driven high or low as directed by the USB host otherwise it is Hi-Z. Typically a pull-up or pull-down is installed on the Vbus switch EN pin to ensure Vbus is available at device connection  (Note: this is for Type-A ports only.)

    5.Enumeration is dependent on Vbus. First upstream Vbus must be applied to ensure that the TUSB8044A is enumerated to the Host. Then downstream Bus must be applied to the USB device to initiate USB enumeration. Do you see Vbus high on the downstream ports?

    6.Internal registers can be accessed through I2C or SMBUS depending on the state of the SMBUSz pin

  • Hi  Malik  

    Thanks for  these  reply , We  are able to detect  USB 2.0  port. But  we are facing issue in USB 3.0  Port  , 

    Please  let  me know  how  USB enumeration will be  performed  in case of  USB 3.0 especially  when  

    both side can support  upstream port  and  downstream port.

  • Hi,

    It appears that TUSB8044A is enumerating correctly on the USB 3 (upstream side) side from your debug log. Are you able to see the expected USB 3.0 device enumerate as a USB 2.0 device? USB 3.0 enumeration happens before USB 2.0 enumeration and starts with USB 3.0 receiver detection. If successful then the USB 3.0 link will train and the function started. If receiver detection or link training fail then device should drop to USB 2.0. Best way to debug is to take a USB trace with a protocol analyzer. Is this possible? 

  • Hi  Malik  

    Thanks  for  reply.

    Today we  connected  USB type  C to  USB2.0  adapter  (  passive)  and  can able  to successfully  enumerate and  detect  USB2.0  Pendrive and  SD  card  over 1 device out  of  3  which  we  tested .

    If I am trying  to  probe  clock  signa of  faulty devices,  my  other  two  USB 2.0  ports  are  getting  disconnected  and I need  to  do active  RESET  once  again to  get  those  ports  UP.

    We  don't  have  USB  protocol  analyzer. :(

    Can you  suggest  me some  good  document  for  enumerations .

      

  • Hi,

    If you are probing on the USB lines directly you will need to use a high impedance probe to prevent any interference with the bus. It sounds if you may be using a 50 ohm probe with will cause issues as you describe. 

    Without protocol analyzer we will need to probe the DP and DM lines at device insertion to understand what is happening on the bus. You can share the waveforms and go from there. We do not have a document that summarizes the enumeration process. Your best resource would be to reference the USB 2/3 spec directly. See below for a summarized flow of USB enumeration.

    For USB 3 devices connected to a Type-A port:

    • USB device looks for Vbus present on the connector.
    • Once Vbus is detected both device and host enter RX Detect to see the port partners USB 3 RX terminations
    • Once detected, LFPS poling is done to align both host and device state and enter link training 
    • USB 3 link will attempt to train a 5G link then 10G link.
    • If successful then port function is started (normal operation)

    If USB 3 RX detect or LFPS polling reaches its designated timeout or Link training fails USB 2 enumeration will start (expect for USB Hubs where both USB 2 and USB 3 enumeration occurs)

    • DP pullup enabled to start USB 2 enumeration
    • Host and Devices go through a J/K state chirp sequence
    • During the chirp sequence HS terminations are enabled
    • If chirp sequence is with the squelch range then HS data is transmitted on the bus.