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.

TUSB7320 USB2.0 working, USB3.0 not working

Other Parts Discussed in Thread: TUSB7320, TUSB7340

Hello,

We are using the TUSB7320 in our design, and running into an issue we think is a register configuration issue on the device that is preventing the USB 3.0 mode from working.  We are trying to figure out what the correct register configuration is for our system.

 From a HW perspective, we don't have an EVM.  However, the 1.1V regulator is at level before we release the part from reset.  We didn't use the same supply that is on the EVM, but have it structured similarly.  We also followed all the guidelines provided in the layout/design guide, and also referenced the examples provided.  The total length on the pairs is very closely matched.  Right now, we don't think we have a HW issue.

On the SW side, we are using Linux 3.10.53 on an i.MX6.  

 USB2.0 appears to work perfectly on the TUSB7320 ports so we know we can communicate with the device registers and the data path.

We have tried a few different USB3 devices and our USB3 devices fail a few different ways that seem to indicate communication problems.  Some device classes don't communicate at all via USB3, but we have gotten one device to send data over the USB3 link.

 I suspected the "De-Emphasis and Swing Control Register", but I've tried a lot of variations on the PORT1/2 bits without any success or even different failure modes.  Are there any other registers we should need to adjust for this chip on our board?

Here are examples of what the software shows with different failures:

 The USB3 to gigabit ethernet mostly works and I can use it enough to get an IP, ping addresses, and even download small files.  If I use iperf which will use a lot of bandwidth though, it stalls with this:

[   37.810443] xhci_hcd 0000:01:00.0: ERROR Transfer event TRB DMA ptr not part of current TD

Eventually it will come back with the kernel crash:

[   40.061910] ------------[ cut here ]------------
[   40.066588] WARNING: at net/sched/sch_generic.c:255 dev_watchdog+0x25c/0x268()
[   40.073882] NETDEV WATCHDOG: eth2 (ax88179_178a): transmit queue 0 timed out
[   40.081007] Modules linked in: ax88179_178a smsc95xx usbnet wlcore_sdio xhci_hcd mxc_dcic
[   40.089422] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.10.53-g57d4481-dirty #27
[   40.096927] [<800147dc>] (unwind_backtrace+0x0/0xec) from [<800115d4>] (show_stack+0x10/0x14)
[   40.105567] [<800115d4>] (show_stack+0x10/0x14) from [<8002ce5c>] (warn_slowpath_common+0x54/0x6c)
[   40.114601] [<8002ce5c>] (warn_slowpath_common+0x54/0x6c) from [<8002cea4>] (warn_slowpath_fmt+0x30/0x40)
[   40.124240] [<8002cea4>] (warn_slowpath_fmt+0x30/0x40) from [<805ad1f8>] (dev_watchdog+0x25c/0x268)
[   40.133367] [<805ad1f8>] (dev_watchdog+0x25c/0x268) from [<80039eac>] (call_timer_fn.isra.30+0x24/0x88)
[   40.142841] [<80039eac>] (call_timer_fn.isra.30+0x24/0x88) from [<8003a070>] (run_timer_softirq+0x160/0x1e4)
[   40.152758] [<8003a070>] (run_timer_softirq+0x160/0x1e4) from [<80034238>] (__do_softirq+0x110/0x1ec)
[   40.162066] [<80034238>] (__do_softirq+0x110/0x1ec) from [<800343a8>] (do_softirq+0x50/0x58)
[   40.170551] [<800343a8>] (do_softirq+0x50/0x58) from [<80034644>] (irq_exit+0x9c/0xd0)
[   40.178553] [<80034644>] (irq_exit+0x9c/0xd0) from [<8000e9d0>] (handle_IRQ+0x44/0x90)
[   40.186540] [<8000e9d0>] (handle_IRQ+0x44/0x90) from [<8000852c>] (gic_handle_irq+0x2c/0x5c)
[   40.195046] [<8000852c>] (gic_handle_irq+0x2c/0x5c) from [<8000dd00>] (__irq_svc+0x40/0x70)
[   40.203451] Exception stack(0x80cd7f20 to 0x80cd7f68)
[   40.208589] 7f20: 80cd7f68 3b9aca00 532a838a 00000009 80ce44e8 80ce44e8 81db81a8 00000000
[   40.216833] 7f40: 52b82114 00000009 80cd6000 00000000 00000017 80cd7f68 00000009 804b50a0
[   40.225077] 7f60: 000f0013 ffffffff
[   40.228626] [<8000dd00>] (__irq_svc+0x40/0x70) from [<804b50a0>] (cpuidle_enter_state+0x54/0xe4)
[   40.237487] [<804b50a0>] (cpuidle_enter_state+0x54/0xe4) from [<804b51ec>] (cpuidle_idle_call+0xbc/0x154)
[   40.247130] [<804b51ec>] (cpuidle_idle_call+0xbc/0x154) from [<8000ed04>] (arch_cpu_idle+0x10/0x54)
[   40.256880] [<8000ed04>] (arch_cpu_idle+0x10/0x54) from [<80066aa4>] (cpu_startup_entry+0x100/0x14c)
[   40.266100] [<80066aa4>] (cpu_startup_entry+0x100/0x14c) from [<80c7facc>] (start_kernel+0x33c/0x348)
[   40.275390] ---[ end trace f848206ac8c05c61 ]---


The USB3 thumb drive is constantly reset:

[   35.692285] usb 4-1: new SuperSpeed USB device number 3 using xhci_hcd
[   35.713520] usb 4-1: Parent hub missing LPM exit latency info.  Power management will be impacted.
[   35.726353] usb-storage 4-1:1.0: USB Mass Storage device detected
[   35.733291] scsi2 : usb-storage 4-1:1.0
[   36.733330] scsi 2:0:0:0: Direct-Access     SanDisk  Extreme          0001 PQ: 0 ANSI: 6
[   36.744168] sd 2:0:0:0: [sda] 122544516 512-byte logical blocks: (62.7 GB/58.4 GiB)
[   36.753036] sd 2:0:0:0: [sda] Write Protect is off
[   36.758422] sd 2:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[   36.777031]  sda: sda1
[   36.781643] sd 2:0:0:0: [sda] Attached SCSI removable disk
[   36.922319] usb 4-1: reset SuperSpeed USB device number 3 using xhci_hcd
[   37.186716] usb 4-1: Parent hub missing LPM exit latency info.  Power management will be impacted.
[   37.196967] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep d8fca180
[   37.205464] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep d8fca1ac
[   37.392168] usb 4-1: reset SuperSpeed USB device number 3 using xhci_hcd
[   37.413423] usb 4-1: Parent hub missing LPM exit latency info.  Power management will be impacted.
[   37.423048] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep d8fca180
[   37.431421] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep d8fca1ac

Any help would be very appreciated.

Thank you

  • Hello,

    Have you tried with a different kernel version?

    Please provide a PCI Register dump of the TUSB7320.

    Can you share your schematic?

    Regards

  • Hello,

    I reviewed the schematic and it looks correct.
    Have you tried with another kernel version?
    Please provide a PCI Register dump of the TUSB7320.

    The only thing to adjust the de-emphasis and voltage swing is by using the PHY Control (see Section 7.3.1 of datasheet)

    Regards
  • Hi Jamaal_Charles,

    I am using a similar set up except that I used Kernel 3.14.38 with the TUSB7320 and TUSB7340 and I have the exact same outcome as you...I followed the guidelines as well and I don't think it's an hardware issue...
    Got a team looking into the "De-emphasis and control register" right now, but did you ever get that issue resolved? Did you find the right register setting to establish communication with the USB3 Hub...

    Thank you