Problem to implement two USB3.0 port on Customized carrier board for Jetson TX2

Hi,
My package is L4T R32.4.3
.My USB config was #4.Now all USB2-x and USB3-0 did work except USB3-2.
~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M

ODMDATA was modified as 0x7090000.

~ ls -l /proc/device-tree/chosen/plugin-manager/odm-data/
-r–r--r-- 1 root root 4 12月 19 11:35 enable-denver-wdt
-r–r--r-- 1 root root 4 12月 19 11:35 enable-pcie-on-uphy-lane4
-r–r--r-- 1 root root 4 12月 19 11:35 enable-sata-on-uphy-lane5
-r–r--r-- 1 root root 4 12月 19 11:35 enable-xusb-on-uphy-lane0
-r–r--r-- 1 root root 4 12月 19 11:35 enable-xusb-on-uphy-lane1
-r–r--r-- 1 root root 4 12月 19 11:35 enable-xusb-on-uphy-lane2
-r–r--r-- 1 root root 9 12月 19 11:35 name

~ sudo busybox devmem 0x2540284
0x00000200

~$ xxd /proc/device-tree/xusb_padctl@3520000/ports/usb3-2/status
00000000: 6f6b 6179 00 okay.

But
$ xxd /proc/device-tree/xhci@3530000/phy-names
00000000: 7573 6232 2d30 0075 7362 322d 3100 7573 usb2-0.usb2-1.us
00000010: 6232 2d32 0075 7362 332d 3000 b2-2.usb3-0.

I had changed the device tree as x2, x1, x1 like

pci@1,0 {

nvidia,num-lanes = <2>;

status = “okay”;

}
pci@2,0 {

nvidia,num-lanes = <1>;

status = “disable”;

}
pci@3,0 {

nvidia,num-lanes = <1>;

status = “okay”;

}

What should I need to modify in any dts file?
Thanks!

This is the dmesg output.
dmesg1223.txt (65.1 KB)
This is the log from serial console.
data1223.txt (18.7 KB)

Hi,
Device tree programming is different between r28 and r32. For r32 releases, please refer to the topics with examples:

Hi,
I had read the guide and some posts.My DTS file is attached.
TX2’s USB SS0(port#0) and USB2-2 share a Type A connector. TX2’s USB SS1(port#2) and USB2-1 share a Type A connector.USB2-0 is OTG and connect a micro-USB connector.
A USB3.0 mobile disk could emulated if connecting with USB3.0 port#0 The disk failed to emulated as USB3.0 device if connecting with USB3.0 port#2 but as USB2.0 device.
The USB power switch for USB3.0 port#0 is always enable.The power switch for USB3.0 port#2 is controlled by TX2’s USB_VBUS_EN1.
I couldn’t figure out why only one USB3.0 port could work.Kindly would you pls. help to check my dts file or give any suggestion?Thanks!

tegra186-quill-p3310-1000-a00-00-base-buaa.dts (8.8 KB)

Hi,
The usb2-1 + usb3-2 looks OK. The usb2-2 + usb3-0 may not work properly. We have seen issue in always-on VBUS pin. Some related topics:
USB1 and Installing kernel modules for LTE modem
USB2 B43/B42 not working on TX1 with R28.2

And nvidia,oc-pin = <2>; is not right. We only have two oc-pin 0(A17) and 1(A18).

After booting to desktop, you can execute xxd to check correctness of device tree. One possible rootcause is that device tree is overwritten by plugin manager.

Hi,
But in my case USB2-1+USB3-2 didn’t work properly but usb2-2 + usb3-0 did.
And to run xxd
~$ xxd /proc/device-tree/xusb_padctl@3520000/ports/usb3-2/status
00000000: 6f6b 6179 00 okay.
The status was OKAY.
I’ve comment out some part in plugin manager .dtsi file which was attached

tegra186-quill-p3310-1000-a00-plugin-manager.dtsi (8.6 KB)

Hi,
For the USB2-1+USB3-2 port, does it work in USB2 enumeration? In some cases, USB2 works and USB3 enumeration does not work. If even USB2 fails, it looks to be an issue in VBUS supply. Yo may check if the 5V is actually turned on.

Hi,
Yes USB2 works.

Hi,
USB2 works and USB3 enumeration does not work for the USB2-1+USB3-2 port.Any suggestion?Thanks!

Hi,

We would suggest do compliance test. To make sure the signal quality is good. Please refer to
http://developer.nvidia.com/embedded/dlc/tx2-series-interface-tuning-compliance-testing-guide

Hi,
I thought the enumeration failure was not caused by compilance issue.
The result to run lsusb was:
$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M

If the software was OK,the command should list two 5000M device no matter the USB 3.0 devices were plugged or not.I didn’t know if there was error in the device tree?

Hi,
Do you observe the issue if you plugin in the device to TX2 developer kit and boot?

We would suggest perform compliance test on custom board. The parameters for TX2 developer kit may need to be fine tuned for the custom board.

Hi,
I didn’t know what you mean the device was.
If you mean the device is my USB3.0 portable disk.
My USB3.0 portable disk could emulate as USB3.0 device if to plug it in the connector of USB3-0 on my custom carrier board.It emulated as USB2.0 device if to plug it in the connector of USB3-2 on the same custom carrier board.So why do I need to plug in the device to TX2 dev. kit?The disk is good.

Hi,
Since the device tree look good, the failure in USB3 enumeration may be due to signal quality. The parameters by default are tuned per TX2 developer kit. For custom board, suggest do compliance test.