How to enable another USB 3.0 port to work on super speed for Tx2

Dear Sir,
My board has two usb 3.0 port, when I plug in U disk(USB3.0) to both ports ,one can be work on super speed,but another couldn’t ,Please see following log.
Would you please help me to fix this issue? Thanks!

nvidia@tegra-ubuntu:~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/3p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
nvidia@tegra-ubuntu:~$ [ 38.226256] usb 1-3.1: USB disconnect, device number 4
[ 38.266648] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
[ 38.432268] xhci-tegra 3530000.xhci: entering ELPG
[ 38.439900] xhci-tegra 3530000.xhci: entering ELPG done
[ 40.748795] xhci-tegra 3530000.xhci: exiting ELPG
[ 40.776508] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-12-07 10:50:08 UTC, Version: 55.09 release
[ 40.789422] xhci-tegra 3530000.xhci: exiting ELPG done
[ 40.789441] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
[ 41.017207] usb 2-1: new SuperSpeed USB device number 2 using xhci-tegra
[ 41.048293] usb 2-1: feature bit otg_vbus_off set
[ 41.053110] usb 2-1: New USB device found, idVendor=0951, idProduct=1666
[ 41.059956] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 41.067322] usb 2-1: Product: DataTraveler 3.0
[ 41.071914] usb 2-1: Manufacturer: Kingston
[ 41.076271] usb 2-1: SerialNumber: 08606E6B64C4F181E722FBC5
[ 41.083533] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
[ 41.093742] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 41.100542] scsi host4: usb-storage 2-1:1.0
[ 42.106023] scsi 4:0:0:0: Direct-Access Kingston DataTraveler 3.0 PQ: 0 ANSI: 6
[ 42.116713] sd 4:0:0:0: [sda] 60437492 512-byte logical blocks: (30.9 GB/28.8 GiB)
[ 42.125167] sd 4:0:0:0: [sda] Write Protect is off
[ 42.129999] sd 4:0:0:0: [sda] Mode Sense: 4f 00 00 00
[ 42.135817] sd 4:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn’t support DPO or FUA
[ 42.149928] sda: sda1
[ 42.153823] sd 4:0:0:0: [sda] Attached SCSI removable disk
[ 42.326687] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

nvidia@tegra-ubuntu:~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/3p, 5000M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M

Please check your custom board per oem design guide and modify device tree accordingly per adaptation guide.
https://developer.nvidia.com/embedded/dlc/jetson-tx2-tx2i-oem-product-designguide
https://developer.nvidia.com/embedded/dlc/l4t-driver-package-tx2-adaptation-guide

Dear DaneLLL,
Would please provide the detail changes of dts, I tried to change according to the guide ,but still unsuccess. In addition, do I need to change ODMDATA in p2771-0000.conf.common as well? If do ,what value need to set for ODMDATA? Thanks !

[url]https://devtalk.nvidia.com/default/topic/1013740/jetson-tx2/tx2-config-3-for-usb-lane-mapping/post/5213635/#5213635[/url]
ODMDATA for config #3 is 0x6090000

Example of device tree:
[url]Jetson/TX2 USB - eLinux.org

Dear DaneLLL,
I have changed ODMDATA to 0x6090000 which for config #3, and also merge dts changes according to
https://elinux.org/Jetson/TX2_USB#USB-Lane_Mapping
My dts files are as attach, please help to check.
After I apply all this patches, I found the speed of the two USB3.0 ports are exchanged, the one running on supper speed become to high speed, The other port running on high speed become to supper speed. Please help to check my changes .Thanks a lot!
tegra186-dts.rar (3.09 KB)

I changed ODMDATA in p2771-0000.conf.common file ,then running sudo ./flash.sh jetson-tx2 mmcblk0p1

Hi,
For config #3, there are PEX_RFU(G39/G40/D39/D40) and USB_SS1(G42/G43/D42/D43) being enabled. Which USB3 port does not work on your custom board?

Hi DaneLLL,
USB_SS0(F43/F44/C43/C44) can not work on super speed after making above changes

Hi,
Config #3 does not enable USB_SS0. Can you please re-check your hardware configuration?

Hi DaneLLL,
I have make two USB3.0 port work on supper speed on TX1 device, my tx1 conf (jetson-tx1.conf) content is as follows:

p2371-2180-devkit.conf: configuration for Jetson-TX1 devkit

ODMDATA=0x84000;
CHIPID=0x21;
EMMC_BCT=P2180_A00_LP4_DSC_204Mhz.cfg;
EMMC_CFG=gnu_linux_tegraboot_emmc_full.xml;
BOOTPARTSIZE=8388608;
EMMCSIZE=31276924928;
ITS_FILE=;
SYSBOOTFILE=p2371-2180-devkit/extlinux.conf;
DTB_FILE=tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb

To configure whether to use U-Boot,

do either of the following before running flash.sh:

1) Set environment variable USE_UBOOT to 0 or 1.

2) Edit the line below to set USE_UBOOT to 0 or 1.

if [ -z “${USE_UBOOT}” ]; then
USE_UBOOT=1;
fi;
ROOTFSSIZE=14GiB;
CMDLINE_ADD=“console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0”;
target_board=“t210ref”;
ROOT_DEV=“mmcblk0p1 ------------ internal eMMC.
sda1 ----------------- external USB devices. (USB memory stick, HDD)
eth0 ----------------- nfsroot via RJ45 Ethernet port.
eth1 ----------------- nfsroot via USB Ethernet interface.”;

Our TX2 mainboard is share with TX1 ,So do I need set ODMDATA to 0x84000 as well ? Is there any document about ODMDATA register description? I am confused about how to set ODMDATA value ,Thanks!

Hi,
For TX1, it does not need to change ODMDATA for USB Lane Mapping.
For TX2, please check adaptation guide in #2

Hi DaneLLL,
According to my hardware design, which config of ODMDATA is fit for me? config #4 or config #6 ?

Hi,
Beside USB_SS0(F43/F44/C43/C44), if you have PEX_RFU(G39/G40/D39/D40), it is config #6. If you have USB_SS1(G42/G43/D42/D43), it is config #4 without enabling PEX_RFU.

Hi DaneLLL,
Would you please tell me the value of ODMDATA for config #4 and #6 ?

Hi,
If you don’t have PCIe lanes, you can simply keep zeros from bit 24 to bit 28.

Hi DaneLLL,
What’s the meaning of bit 24 to bit 28, Would you please tell me which register contain ODMDATA setting configuration?

My current ODMDATA is 0x1090000 , it only contain bit 0~27 , no bit28

May I know if you download adaptation guide and check [USB Lane Mapping]? We have it well documented and please download and read.

Hi,
By default, ODMDATA is 0x1090000 = b0001 0000 1001 0000 0000 0000 0000
bit 24 is UPHY Lane 0
bit 25 is UPHY Lane 1
bit 26 is UPHY Lane 2

For config #4, it is b0111 0000 1001 0000 0000 0000 0000
bit 24 25 26 are set to 1

For config #6, it is b0011 0000 1001 0000 0000 0000 0000
bit 24 25 are set to 1

Hi DaneLLL,
Thanks a lot! I got it.