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.

TUSB7340: Linux/TUSB7340: USB2.0 enumeration failure / Xilinx MicroBlaze / PCIe root / xhci-hcd Linux driver

Part Number: TUSB7340


We are experiencing issues with enumerating USB2.0 peripherals attached to the TUSB7340 host controller ports. The hardware platform is a custom board based on the KCU105/MicroBlaze with the PCIe root complex enabled (x1 link at 5 Gb/s). The TUSB7340 PCIe interface enumerates correctly (we believe), but the USB devices fail enumeration. The Linux kernel version is v5.4.0 (xilinx rel-2020.2) with xhci-hcd driver used for USB3.0 host.

USB 2.0 Enumeration error:

usb 1-2: new high-speed USB device number 9 using xhci_hcd
usb 1-2: device descriptor read/64, error -71
usb usb1-port2: unable to enumerate USB device

Output from dmesg | grep pci:

xilinx-pcie 10000000.axi-pcie: PCIe Link is UP
xilinx-pcie 10000000.axi-pcie: host bridge /amba_pl/axi-pcie@10000000 ranges:
xilinx-pcie 10000000.axi-pcie: MEM 0x60000000..0x7fffffff -> 0x60000000
xilinx-pcie 10000000.axi-pcie: PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [bus 00-ff]
pci_bus 0000:00: root bus resource [mem 0x60000000-0x7fffffff]
pci 0000:00:00.0: [10ee:8134] type 01 class 0x060400
pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x000007ff pref]
pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
pci 0000:01:00.0: [104c:8241] type 00 class 0x0c0330
pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0000ffff 64bit]
pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x00001fff 64bit]
pci 0000:01:00.0: supports D1 D2
pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot
pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
pci 0000:00:00.0: BAR 8: assigned [mem 0x60000000-0x600fffff]
pci 0000:00:00.0: BAR 6: assigned [mem 0x60100000-0x601007ff pref]
pci 0000:01:00.0: BAR 0: assigned [mem 0x60000000-0x6000ffff 64bit]
pci 0000:01:00.0: BAR 2: assigned [mem 0x60010000-0x60011fff 64bit]
pci 0000:00:00.0: PCI bridge to [bus 01]
pci 0000:00:00.0: bridge window [mem 0x60000000-0x600fffff]
pcieport 0000:00:00.0: enabling device (0000 -> 0002)
pcieport 0000:00:00.0: AER: enabled with IRQ 6
pci 0000:01:00.0: enabling device (0000 -> 0002)

Output from lspci and lsusb tools is provided below:

root@kcu105_speculate_petalinux_v2:~# lspci -v
00:00.0 PCI bridge: Xilinx Corporation Device 8134 (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0, IRQ 6
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00000000-00000fff [size=4K]
Memory behind bridge: 60000000-600fffff [size=1M]
Prefetchable memory behind bridge: 00000000-000fffff [size=1M]
[virtual] Expansion ROM at 60100000 [disabled] [size=2K]
Capabilities: [c0] Express Root Port (Slot-), MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [128] Vendor Specific Information: ID=0000 Rev=0 Len=038 <?>
Capabilities: [200] Vendor Specific Information: ID=0002 Rev=0 Len=038 <?>
Kernel driver in use: pcieport

01:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) (prog-if 30 [XHCI])
Flags: bus master, fast devsel, latency 0, IRQ 6
Memory at 60000000 (64-bit, non-prefetchable) [size=64K]
Memory at 60010000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [150] Device Serial Number 08-00-28-00-00-20-00-00
Kernel driver in use: xhci_hcd

root@kcu105_speculate_petalinux_v2:~# lsusb -vvv
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0003

Previous forum posts indicate this may be a hardware-related issue.  For those willing to help, we can share schematics via PM.  Thanks in advance for any help.