How to enable otg on J39 usb port?

Hi, nv team:
My device is Orin Devkit, [JetPack 5.1 SDK][ Jetson Linux 35.2.1]。
J40 is ok, both on host mode and device mode.

But J39 is not work on device mode。
(I modify the “ucsi_ccg@8”, “xusb_padctl@3520000”, “xudc@3550000”, “usb_cd” nodes in the tegra234-p3737-0000-a04.dtsi,tegra234-soc-base.dtsi )

root@ubuntu:/root# cat /proc/device-tree/chosen/ids    
3701-0000-500 3737-0000-500 

root@ubuntu:/root# i2cdump -y 0 0x50
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 00 00 00 00 00    ?.?.............
10: 00 00 00 0a 36 39 39 2d 31 33 37 30 31 2d 30 30    ...?699-13701-00
20: 30 30 2d 35 30 30 20 4c 2e 30 00 00 00 00 00 00    00-500 L.0......
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 b4 98 a4 2d b0 48 31 34 32 33 35 32    ....???-?H142352
50: 32 30 32 31 37 33 35 00 00 00 00 00 00 00 00 00    2021735.........
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 4e 56 43 42 00 00 4d 31 00 00    ......NVCB..M1..
a0: 00 00 00 00 00 00 00 00 00 00 00 00 b4 98 a4 2d    ............???-
b0: b0 48 0a 00 00 00 00 00 00 00 00 00 00 00 00 00    ?H?.............
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 25    ...............%
root@ubuntu:/root# 

root@ubuntu:/root# i2cdump -y 0 0x56
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 00 00 00 00 00    ?.?.............
10: 00 00 00 0a 36 39 39 2d 31 33 37 33 37 2d 30 30    ...?699-13737-00
20: 30 30 2d 35 30 30 20 44 2e 30 00 00 00 00 00 00    00-500 D.0......
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 00 00 31 34 32 33 32 32    ..........142322
50: 32 30 34 39 39 30 32 00 00 00 00 00 00 00 00 00    2049902.........
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 4e 56 43 42 00 00 4d 31 00 00    ......NVCB..M1..
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 00 00 00 00 00 00 36 37 35 2d 31 33 37 33    ........675-1373
d0: 30 2d 30 30 30 30 2d 30 30 31 00 00 00 31 34 32    0-0000-001...142
e0: 33 32 32 32 30 36 39 31 32 38 00 00 00 00 00 00    3222069128......
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bf    ...............?

just for test, I config J40 as host mode , J39 as otg mode:

--- ./Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/concord/kernel-dts/cvb/tegra234-p3737-0000-a04.dtsi 2023-01-22 10:52:03.000000000 +0800
+++ ./hardware/nvidia/platform/t23x/concord/kernel-dts/cvb/tegra234-p3737-0000-a04.dtsi 2023-02-18 11:35:15.764697252 +0800
@@ -118,18 +118,18 @@
                        ccg_typec_con0: connector@0 {
                                compatible = "usb-c-connector";
                                label = "USB-C";
-                               data-role = "host";
-                       };
-                       ccg_typec_con1: connector@1 {
-                               compatible = "usb-c-connector";
-                               label = "USB-C";
                                data-role = "dual";
                                port {
-                                       ucsi_ccg_p1: endpoint {
+                                       ucsi_ccg_p0: endpoint {
                                                remote-endpoint = <&usb_role_switch0>;
                                        };
                                };
                        };
+                       ccg_typec_con1: connector@1 {
+                               compatible = "usb-c-connector";
+                               label = "USB-C";
+                               data-role = "host";
+                       };
                };

                ncp_12v_pcie_supply: ncp81599@74 {
@@ -184,19 +184,19 @@

                ports {
                        usb2-0 {
+                               mode = "host";
+                               status = "okay";
+                       };
+                       usb2-1 {
                                mode = "otg";
                                usb-role-switch;
                                status = "okay";
                                port {
                                        usb_role_switch0: endpoint {
-                                               remote-endpoint = <&ucsi_ccg_p1>;
+                                               remote-endpoint = <&ucsi_ccg_p0>;
                                        };
                                };
                        };
-                       usb2-1 {
-                               mode = "host";
-                               status = "okay";
-                       };
                        usb2-2 {
                                mode = "host";
                                status = "okay";
@@ -222,9 +222,9 @@

        tegra_xudc: xudc@3550000 {
                status = "okay";
-               phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
+               phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
                        <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
-               phy-names = "usb2-0", "usb3-1";
+               phy-names = "usb2-1", "usb3-1";
                nvidia,xusb-padctl = <&xusb_padctl>;
                nvidia,boost_cpu_freq = <1200>;
        };


--- ./Linux_for_Tegra/source/public/hardware/nvidia/soc/t23x/kernel-dts/tegra234-soc/tegra234-soc-base.dtsi   2023-01-22 10:52:04.000000000 +0800
+++ ./hardware/nvidia/soc/t23x/kernel-dts/tegra234-soc/tegra234-soc-base.dtsi   2023-02-18 11:35:25.475340663 +0800
@@ -622,7 +622,7 @@
        tegra_usb_cd: usb_cd {
                compatible = "nvidia,tegra234-usb-cd";
                nvidia,xusb-padctl = <&xusb_padctl>;
-               phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>;
+               phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>;
                phy-names = "otg-phy";
                status = "okay";
        };

Sorry for the late response, have you managed to get issue resolved or still need the support? Thanks

still need the support. Thanks

please try with this patch.

diff --git a/cvb/tegra234-p3737-0000-a00.dtsi b/cvb/tegra234-p3737-0000-a00.dtsi
index 27d3985..93d150b 100644
--- a/cvb/tegra234-p3737-0000-a00.dtsi
+++ b/cvb/tegra234-p3737-0000-a00.dtsi
@@ -87,7 +87,12 @@
 			ccg_typec_con0: connector@0 {
 				compatible = "usb-c-connector";
 				label = "USB-C";
-				data-role = "host";
+				data-role = "dual";
+				port {
+					ucsi_ccg_p0: endpoint {
+						remote-endpoint = <&usb_role_switch0>;
+					};
+				};
 			};
 			ccg_typec_con1: connector@1 {
 				compatible = "usb-c-connector";
@@ -95,7 +100,7 @@
 				data-role = "dual";
 				port {
 					ucsi_ccg_p1: endpoint {
-						remote-endpoint = <&usb_role_switch0>;
+						remote-endpoint = <&usb_role_switch1>;
 					};
 				};
 			};
@@ -149,14 +154,20 @@
 				usb-role-switch;
 				status = "okay";
 				port {
-					usb_role_switch0: endpoint {
+					usb_role_switch1: endpoint {
 						remote-endpoint = <&ucsi_ccg_p1>;
 					};
 				};
 			};
 			usb2-1 {
-				mode = "host";
+				mode = "otg";
+				usb-role-switch;
 				status = "okay";
+				port {
+					usb_role_switch0: endpoint {
+						remote-endpoint = <&ucsi_ccg_p0>;
+					};
+				};
 			};
 			usb2-2 {
 				mode = "host";
@@ -184,8 +195,10 @@
 	tegra_xudc: xudc@3550000 {
 		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-0}>,
 			<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
-		phy-names = "usb2-0", "usb3-1";
+		phy-names = "usb2-0", "usb2-1", "usb3-0", "usb3-1";
 		nvidia,xusb-padctl = <&xusb_padctl>;
 		nvidia,boost_cpu_freq = <1200>;
 	};

OK. Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.