Hello. We are having issues with getting the USB 3.X to work on our custom carrier board for the AGX/Xavier. USB 2.0 works as intended - but devices never get enumerated/assigned the USB 3.X root hub.
lsusb -t output with a USB-C SanDisk flash drive (verified on dev-kit to appear as USB3.X) in the port:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
dmesg output from inserting flash drive (leading to it being recognized and enumerated as USB 2.0/high-speed):
[ 1006.884868] tegra-xusb 3610000.xhci: exiting ELPG
[ 1006.892554] tegra-xusb 3610000.xhci: Firmware timestamp: 2020-09-11 16:55:03 UTC, Version: 60.09 release
[ 1006.894174] tegra-xusb 3610000.xhci: exiting ELPG done
[ 1006.897288] usb usb1: usb_suspend_both: status 0
[ 1007.629146] usb 1-3: new high-speed USB device number 3 using tegra-xusb
[ 1007.653868] usb 1-3: New USB device found, idVendor=0781, idProduct=55a4
[ 1007.654244] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1007.654308] usb 1-3: Product: SanDisk 3.2Gen1
[ 1007.654367] usb 1-3: Manufacturer: USB
[ 1007.654437] usb 1-3: SerialNumber: 0401093c3094021efa8c07340a5bbbbdf07e724a777dfdbc97718b7fd68388ca7a8200000000000000000000dfc6fa8cff076e18a455810796acebd4
[ 1007.664341] usb-storage 1-3:1.0: USB Mass Storage device detected
[ 1007.665254] scsi host0: usb-storage 1-3:1.0
[ 1008.492596] usb usb2: usb_suspend_both: status 0
[ 1008.680160] scsi 0:0:0:0: Direct-Access USB SanDisk 3.2Gen1 1.00 PQ: 0 ANSI: 6
[ 1008.681851] sd 0:0:0:0: [sda] 60125184 512-byte logical blocks: (30.8 GB/28.7 GiB)
[ 1008.683078] sd 0:0:0:0: [sda] Write Protect is off
[ 1008.683199] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 1008.683685] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn’t support DPO or FUA
[ 1008.695977] sda: sda1
[ 1008.698942] sd 0:0:0:0: [sda] Attached SCSI removable disk
For simplicity (just to get it working), only one USB port (1 USB2.0 + 1 USB3.X combo) is used for now.
USB 3.X pins used: B16, B17, K16, K17 (UPHY_RX6 and UPHY_TX6)
USB 2.0 pins used: A10, A11 (USB2_P and USB2_N)
This leads to: usb3-0 and usb2-2
DTS:
xusb_padctl: xusb_padctl@3520000 {
status = “okay”;pads { usb2 { lanes { /* EXT USB-C (PORT 2) */ usb2-2 { nvidia,function = "xusb"; status = "okay"; }; }; }; usb3 { lanes { /* EXT USB-C (PORT 2) */ usb3-0 { nvidia,function = "xusb"; status = "okay"; }; }; }; }; ports { /* EXT USB-C (PORT 2) */ usb2-2 { mode = "host"; vbus-supply = <&battery_reg>; status = "okay"; }; /* EXT USB-C (PORT 2) */ usb3-0 { mode = "host"; nvidia,usb2-companion = <0x02>; status = "okay"; }; };
};
tegra_xhci: xhci@3610000 {
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>;
phy-names = “usb2-2”, “usb3-0”;
nvidia,xusb-padctl = <&xusb_padctl>;
status = “okay”;
};
USB PD Controller is verified to take care of flip correctly etc.
Any clear mistakes so far, or more information you would be helped by?
Thanks