TX2 config#4 for USB LANE MAPPING

Please try more OTG cables as some might have no swapped Tx/Rx lines.

The OTG cable is ok on other type board, so this problem is not cause by OTG cable.

Hi,
Can you please check if your cable complies with below ECN?

usb_30_spec_031813\ECN & Errata\ECN 017 USB3.0 MicroAB Connector.pdf

In the ECN it swaps Tx/Rx. We have noticed some cables on market follow old spec and trigger the issue.

Can you attached 《ECN 017 USB3.0 MicroAB Connector.pdf》 and I will check it.

Did you check the pin assignment of other board? Is the device mode OK too on that board?

Please confirm your OTG cable pin assignment is compatible to TX2, if not, you can use other cable for this.

Please refer to “USB Legacy Cable and Connector\USB 3.1 Legacy Cable and Connector Revision 1.0.pdf” in http://www.usb.org/developers/docs/usb_32_030818.zip

ECN 017 corrects pin #6 #7 to be TX- TX+, and #9 #10 to be RX- RX+

ECN 017 USB3.0 MicroAB Connector.pdf (41.2 KB)

I known, but I have two type MicroB OTG USB3.0 wire, they are both failed on TX2. So can you suggest a website to buy a cable compatible to TX2, thanks!

This one should be good https://www.amazon.com/UGREEN-Adapter-Female-Android-Samsung/dp/B00LN3AXWI

Also can you try your two cables on Samsung S5 or Levono ThinkPad8?

I got an idea to test this MicroB OTG wire. You can refer to the attached picture.I connect the MicroB OTG wire with a USB 3.0 wire(which is test ok on TX2), and find Port A and Port B are pin to pin shorted.

Can this experiment prove the MicroB OTG wire is ok?

I also bought a MicroB 3.0 otg wire which is suit for Thinkpad 8, and test on TX2 is fail.

So I think the MicroB 3.0 otg wire is not the problem.

You have verified swapping TX/RX can make OTG work, so you only need to find a correct cable which TX/RX meets the board.

As previous said, please confirm your OTG cable pin assignment is compatible to TX2.

Hi Trumany & DaneLLL:

I don’t agree with you. At first MicroB USB3.0 device function is ok, but MicroB OTG USB3.0 is fail, the experiment to swap TX/RX can make OTG work give a clue to find the solution. So you say this may caused by OTG pin assignment, but I proved the OTG wire pin assignment is suit for 《ECN 017 USB3.0 MicroAB Connector.pdf》 #9 #10 to be RX- RX+. So I think you should check TX2 software configuration.

It seems this problem may cause by TX2 core board software configuration not cause by the OTG wire which is suit for 《ECN 017 USB3.0 MicroAB Connector.pdf》, and the OTG wire can also work ok on other type devices.

Hi guohoujin2006, your connector pin assignment on board has no problem, but the OTG cable you used might be earlier USB3.0 OTG cable design which violated latest USB3.0/3.1 spec with wrong TX/RX lines assignment. Please check the cable and update the status, thanks.

After we use the right TX/RX line assignment USB3.0 OTG cable, this problem is resolved. thanks a lot!

Hi Trumany:

Thanks for your help of last year when porting Jetpack3.2 on our carrier board. We need to porting Jetpack 4.2 on the same carrier board. I modified according to this topic, but my three USB port don’t work.

My modification on Jetpack4.2 is

diff --git a/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dts b/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dts
index 8afcaea..3d7a0ce 100644
--- a/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dts
+++ b/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dts
@@ -120,8 +120,11 @@
                status = "okay";
                phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
                        <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
-                       <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
-               phy-names = "usb2-0", "usb2-1", "usb3-1";
+                       <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
+                       <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>,
+                       <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>,
+                       <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-2}>;
+               phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0", "usb3-1", "usb3-2";
        };
 #else
        xhci@3530000 {
@@ -195,6 +198,12 @@
                                vbus-supply = <&vdd_usb1_5v>;
                                nvidia,oc-pin = <1>;
                        };
+                       usb2-2 {
+                               status = "okay";
+                               mode = "host";
+                               vbus-supply = <&battery_reg>;
+                               nvidia,oc-pin = <1>;
+                       };
                        usb3-1 {
                                nvidia,usb2-companion = <1>;
                                status = "okay";
@@ -239,29 +248,29 @@
                                nvidia,lanes = "otg-2";
                                nvidia,function = "xusb";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
-                               status = "disabled";
+                               status = "okay";
                        };
 
                        e3325-usb3-std-A-SS {
                                nvidia,lanes = "usb3-0";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
-                               status = "disabled";
+                               status = "okay";
                        };
                };
        };
        pcie-controller@10003000 {
                status = "okay";
                pci@1,0 {
-                       nvidia,num-lanes = <2>;
+                       nvidia,num-lanes = <1>;
                        status = "okay";
                };
                pci@2,0 {
                        nvidia,num-lanes = <1>;
-                       status = "disabled";
+                       status = "okay";
                };
                pci@3,0 {
                        nvidia,num-lanes = <1>;
-                       status = "okay";
+                       status = "disabled";
                };
        };
diff --git a/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi b/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.d
tsi
index f604a60..36bb831 100644
--- a/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi
+++ b/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi
@@ -106,8 +106,8 @@
        pinctrl@3520000 {
                vbus-0-supply = <&vdd_usb0_5v>;
                vbus-1-supply = <&vdd_usb1_5v>;
-               vbus-2-supply = <&vdd_usb2_5v>;
-               vbus-3-supply = <&battery_reg>;
+               vbus-2-supply = <&battery_reg>;
+               vbus-3-supply = <&vdd_usb2_5v>;
                vddio-hsic-supply = <&battery_reg>;
                avdd_usb-supply = <&spmic_sd3>;
                vclamp_usb-supply = <&spmic_sd2>;

our carrier board connect as follows:
[USB3 typeA]
USB1_D (A38, A39)
USB_SS (G39, G40, D39, D40)
[USB3 typeA]
USB2_D (B42, B43)
USB_SS (G42, G43, D42, D43)
[USB3 MicroUSB3.0]
USB0_D (B39, B40)
USB_SS (F43, F44, C43, C44)

The modification on Jetpack3.2 as attached file, while the three USB port work ok on our carrier board.
t18x_quill_patch.txt (2.61 KB)
t18x_common_patch.txt (4.43 KB)

Hi,
Please check

You have to configure xhci@3530000 and xusb_padctl@3520000.
https://devtalk.nvidia.com/default/topic/1057885/jetson-tx2/usb-not-working-in-jetson-tx2-r32-2/post/5364464/#5364464
Besides, vbus-supply is moved into xusb_padctl@3520000. This need to be carefully configured .