USB 2.0 Functionality

Hi,

I am designing a carrier board for JETSON nano module. As mentioned in product design guide, I can understand that the USB0 2.0 port can be used only in device mode for USB Recovery mode.

I am planning to use the USB 3.0 port for Wi-Fi dongle and using/terminating USB1 2.0 port there in the USB 3.0 host connector.

Now, I need to have another USB 2.0 port to work in host mode to connect pendrives/devices. Can we use USB1 2.0 port for this function?
Note that we don’t use M.2 key E slot as used in NANO carrier board.

Also, I need to know whether USB OTG support is available in NANO module? Please clarify soon.

Advace thanks for your support.

Thanks,
Arun

Hi,
With proper hardware design , it should work. We have hardware guidance in
https://developer.nvidia.com/embedded/dlc/jetson-nano-product-design-guide
https://developer.nvidia.com/jetson-nano-carrier-board-design-files
You may refer to the default carrier board and design your custom board.

In software, device tree has to be modified accordingly. Please refer to adaptation guide:

Hi,

I have reffered to the adaptation guide you have provided. In that document it is shown that, the GPIO_PZ1 is used as ID pin.

But the same pin seems to be not taken to the SOM module connector to use the ID functionality in the carrier board. Can you please explain how the USB can be used as OTG in the carrier board.

Thanks,
Arun kumar

Hi,
Please check Table 3. GPIO states and corresponding output cable states
ID pin is logical high so EXTCON_STATE is in 0x0 (EXCON_NONE) or 0x1 (EXTCON_USB). VBUS_DETECT pin decides the mode. With a Type B plug connected VBUS_DETECT is logical low because VBUS is provided from an external power supply.

Hi,

Yes,I have gone through the guide and what you are saying is true. My question is there is no dedicated ID pin taken out of the Nano SOM to the carrier board. Can I use any GPIO as the ID pin instead of “GPIO_PZ1” pin as mentioned in Adaption guide and implement the OTG function using the modification provided in the Adaption guide?

Thanks in advance.

Hi,

Yes, with proper hardware design and configuring extcon states correctly, this should work as expected.

Hi Dane,

    We have implemented the hardware design mentioned in the Product Design Guide and also implemented the device tree changes mentioned in the Tegra_Linux_Driver_Package_Nano_Adaptation_Guide but when we try to connect a pendrive in the Micro USB port there is no prints that tell the core usb sub-system has recognised the USB device and when we attempt to remove the USB device we are facing the following error.
root@nvidia-desktop:/home/nvidia# [  746.471211] extcon-gpio-states extcon:extcon@1: Cable state:1, cable id:2
[  746.484470] tegra-xusb 70090000.xusb: exiting ELPG
[  746.494619] tegra-xusb 70090000.xusb: Firmware timestamp: 2019-05-08 09:42:10 UTC, Version: 50.22 release
[  746.504742] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 0
[  746.511708] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 1
[  746.518641] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 2
[  746.526214] tegra-xusb 70090000.xusb: exiting ELPG done
[  749.171253] tegra-xusb 70090000.xusb: entering ELPG
[  749.177970] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 0, speed 0
[  749.186015] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 1, speed 3
[  749.193962] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 2, speed 0
[  749.206259] tegra-xusb 70090000.xusb: entering ELPG done
[  771.023152] extcon-gpio-states extcon:extcon@1: Cable state:0, cable id:0
[  771.030024] tegra-xusb 70090000.xusb: exiting ELPG
[  771.035164] unbalanced disables for vdd-usb-vbus
[  771.039843] ------------[ cut here ]------------
[  771.044459] WARNING: CPU: 3 PID: 7559 at /home/arvind/econ/projects/code42/tasks/nano/quickstart/nvidia_kernel/e-camNANO_Kernel/kernel/kernel-4.9/drivers/regulator/core.c:20
[  771.062773] Modules linked in: bnep fuse zram overlay nvgpu spidev ar1335(O) bluedroid_pm ip_tables x_tables
[  771.072829] 
[  771.074354] CPU: 3 PID: 7559 Comm: kworker/3:1 Tainted: G        W  O    4.9.140 #6
[  771.082022] Hardware name: NVIDIA Jetson Nano Developer Kit (DT)
[  771.088075] Workqueue: events tegra_xusb_otg_vbus_work
[  771.093244] task: ffffffc0f7c05400 task.stack: ffffffc0e1fa0000
[  771.099180] PC is at _regulator_disable+0x10c/0x1a0
[  771.104071] LR is at _regulator_disable+0x10c/0x1a0
[  771.108961] pc : [<ffffff80086b2784>] lr : [<ffffff80086b2784>] pstate: 00400045
[  771.116367] sp : ffffffc0e1fa3c60
[  771.119709] x29: ffffffc0e1fa3c60 x28: 0000000000000000 
[  771.125095] x27: 0000000000000000 x26: ffffff8009e4d5d0 
[  771.130475] x25: 0000000000000000 x24: 0000000000000001 
[  771.135863] x23: 0000000000000000 x22: 0000000000000000 
[  771.141234] x21: ffffffc0f9616868 x20: ffffffc0f9616800 
[  771.146609] x19: ffffffc0f9616800 x18: 0000000000000010 
[  771.151976] x17: 0000000000000000 x16: 0000000000000000 
[  771.157345] x15: 0000000000000006 x14: ffffff808a113a82 
[  771.162719] x13: ffffff800a113a90 x12: 0000000000000008 
[  771.168091] x11: ffffffc0e1fa3910 x10: 0000000005f5e0ff 
[  771.173466] x9 : 00000000000003ce x8 : 0000000000000037 
[  771.178841] x7 : ffffff8009e84318 x6 : ffffffc0fefebbf0 
[  771.184214] x5 : ffffffc0fefebbf0 x4 : 0000000000000000 
[  771.189587] x3 : ffffffc0feff17f8 x2 : ffffffc0f7c05400 
[  771.194962] x1 : ffffffc0f7c05400 x0 : 0000000000000024 
[  771.200331] 
[  771.201853] ---[ end trace d904de56bcd58c35 ]---
[  771.206494] Call trace:
[  771.208984] [<ffffff80086b2784>] _regulator_disable+0x10c/0x1a0
[  771.214968] [<ffffff80086b2870>] regulator_disable+0x58/0x88
[  771.220717] [<ffffff80084941c0>] tegra210_xusb_padctl_vbus_power_off+0x1f0/0x3d0
[  771.228192] [<ffffff80084945b4>] tegra210_xusb_padctl_otg_vbus_handle+0x74/0xf0
[  771.235571] [<ffffff800848d624>] tegra_xusb_otg_vbus_work+0x84/0x90
[  771.241927] [<ffffff80080d4e58>] process_one_work+0x1e8/0x490
[  771.247751] [<ffffff80080d5158>] worker_thread+0x58/0x4c0
[  771.253225] [<ffffff80080dbb28>] kthread+0xd8/0xf0
[  771.258097] [<ffffff8008083850>] ret_from_fork+0x10/0x40
[  771.264104] tegra-xusb-padctl 7009f000.xusb_padctl: disable usb2-0 vbus failed -5
[  771.274628] tegra-xusb 70090000.xusb: Firmware timestamp: 2019-05-08 09:42:10 UTC, Version: 50.22 release
[  771.284596] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 0
[  771.291614] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 1
[  771.298443] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 2
[  771.306121] tegra-xusb 70090000.xusb: exiting ELPG done
[  774.003369] tegra-xusb 70090000.xusb: entering ELPG
[  774.010097] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 1, speed 3
[  774.018168] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 2, speed 0
[  774.033934] tegra-xusb 70090000.xusb: entering ELPG done

I have also attached the entries that i have added/modified to support OTG.

extcon {
		vbus_id_gpio_extcon: extcon@1 {
			compatible = "extcon-gpio-states";
			reg = <0x1>;
			extcon-gpio,name = "VBUS_ID";
			extcon-gpio,wait-for-gpio-scan = <0>;   
            extcon-gpio,cable-states = <0x3 0x0
                                        0x0 0x2
                                        0x1 0x2
                                        0x2 0x1>;
						
			gpios = <&gpio TEGRA_GPIO(CC, 4) 0
                     &gpio TEGRA_GPIO(T, 0) 0 >;
			extcon-gpio,out-cable-names = <EXTCON_USB EXTCON_USB_HOST EXTCON_NONE>;
			#extcon-cells = <1>;
		};
	};

	xusb@70090000 {
		extcon-cables = <&vbus_id_gpio_extcon 1>;
		extcon-cable-names = "id";
        phys = <&{/xusb_padctl@7009f000/pads/usb2/lanes/usb2-0}>;
        phy-names = "usb2-0";
        nvidia,xusb-padctl = <&xusb_padctl>;
        status = "okay";

	};

	xudc@700d0000 {
        extcon-cables = <&vbus_id_gpio_extcon 0>;
        extcon-cable-names = "vbus";
        #extcon-cells = <1>;
        phys = <&{/xusb_padctl@7009f000/pads/usb2/lanes/usb2-0}>;
             phy-names = "usb2";
        nvidia,xusb-padctl = <&xusb_padctl>;
        status = "okay";
	};


diff --git a/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi b/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi
index 6bb1a4d..d57d338 100644
--- a/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi
+++ b/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi
@@ -664,7 +664,8 @@
 
                                lanes {
                                        usb2-0 {
-                                               status = "disabled";
+                                               status = "okay";
+                        nvidia,function = "xusb";
                                                #phy-cells = <0>;
                                        };
                                        usb2-1 {
@@ -752,7 +753,9 @@
 
                ports {
                        usb2-0 {
-                               status = "disabled";
+                               status = "okay";
+                mode = "otg";
+                vbus-supply = <&p3449_vdd_usb_vbus>;
                        };
                        usb2-1 {
                                status = "disabled";

We have used CAM1_PWDN pin for ID pin. We are getting the values of ID pin and VBUS_DETECT as follows:

  1. No USB - ID PIN HIGH - VBUS DETECT HIGH
  2. Host mode - ID PIN LOW - VBUS DETECT HIGH
  3. Device mode - ID PIN HIGH - VBUS DETECT LOW

and according to the Adaptation guide, these are normal behavior.But USB devices(Pendrive) is not getting enumerated. Is there any issue with configuring the extcon entries that you can recognize? Please help us isolate the issue.Thanks

Hi,
Please remove TEGRA_GPIO(T, 0) from gpio-output-low and try again.

Hi,
I removed the TEGRA_GPIO(T,0) from gpio-output-low gpios in the gpio@6000d000 entry as given below.

gpio-output-low = <
                                TEGRA_GPIO(S, 7)
-                               TEGRA_GPIO(T, 0)
                                TEGRA_GPIO(Z, 3)
                                TEGRA_GPIO(H, 0)
                                TEGRA_GPIO(H, 3)

but it didn’t solve my issue.
and I found that I wasn’t providing VBUS supply to the USB for working in host mode and when I provided VBUS. I got some USB prints but the enumeration process was not successful.

[ 1160.290913] tegra-xusb 70090000.xusb: exiting ELPG
[ 1160.307388] tegra-xusb 70090000.xusb: Firmware timestamp: 2019-05-08 09:42:10 UTC, Version: 50.22 release
[ 1160.321425] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 0
[ 1160.328390] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 1
[ 1160.335200] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 2
[ 1160.342666] tegra-xusb 70090000.xusb: exiting ELPG done
[ 1161.363860] tegra-xusb-padctl 7009f000.xusb_padctl: power on UTMI pads 0
[ 1161.598805] usb 1-1: new full-speed USB device number 12 using tegra-xusb
[ 1161.607070] usb 1-1: Device not responding to setup address.
[ 1161.819794] usb 1-1: Device not responding to setup address.
[ 1162.030872] usb 1-1: device not accepting address 12, error -71
[ 1162.154910] usb 1-1: new full-speed USB device number 13 using tegra-xusb
[ 1162.163339] usb 1-1: Device not responding to setup address.
[ 1162.375763] usb 1-1: Device not responding to setup address.
[ 1162.586814] usb 1-1: device not accepting address 13, error -71
[ 1162.593550] usb usb1-port1: attempt power cycle
[ 1164.700023] usb usb1: usb_suspend_both: status 0
[ 1164.705323] tegra-xusb 70090000.xusb: entering ELPG
[ 1164.712080] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 0, speed 0
[ 1164.721359] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 1, speed 3
[ 1164.729207] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 2, speed 0
[ 1164.741952] tegra-xusb-padctl 7009f000.xusb_padctl: power down UTMI pad 0
[ 1164.753695] tegra-xusb 70090000.xusb: entering ELPG done

Hardware setup:

In our Nano devkit, we wired the ID pin (pin 4 from Micro-B connector available in devkit) to the CAM1_PWDN pin and pulled the pin-up to 1.8V, so that when the OTG device is connected the pin will be pulled low. We have connected 5V to the “VDD_5V_USB” domain in the Nano devkit.

Hi,
Suggest you add prints in driver and see if the states are changed as expected:

kernel-4.9/drivers/extcon/extcon-gpio-states.c

Hi,

We get extcon state(cstate) changes from 0 (EXTCON_NONE) to 2 (EXTCON_USB_HOST) in the gpio_extcon_scan_work() of kernel-4.9/drivers/extcon/extcon-gpio-states.c when we connect an USB Pendrive and i believe this is the right behaviour. I have provided the prints that come when USB pendrive is connected.

root@nvidia-desktop:/home/nvidia# [ 1144.982167] extcon-gpio-states extcon:extcon@1: Cable state:1, cable id:2 cstate: 2 gstate 0 
[ 1144.991680] tegra-xusb 70090000.xusb: exiting ELPG
[ 1145.001508] tegra-xusb 70090000.xusb: Firmware timestamp: 2019-05-08 09:42:10 UTC, Version: 50.22 release
[ 1145.011364] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 0
[ 1145.018107] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 1
[ 1145.024841] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 2
[ 1145.032264] tegra-xusb 70090000.xusb: exiting ELPG done
[ 1146.282104] usb 1-1: new full-speed USB device number 22 using tegra-xusb
[ 1146.290200] usb 1-1: Device not responding to setup address.
[ 1146.296100] the set address has failed devnum 22 retval : -71 
[ 1146.511078] usb 1-1: Device not responding to setup address.
[ 1146.517112] the set address has failed devnum 22 retval : -71 
[ 1146.730167] usb 1-1: device not accepting address 22, error -71
[ 1146.854128] usb 1-1: new full-speed USB device number 23 using tegra-xusb
[ 1146.862135] usb 1-1: Device not responding to setup address.
[ 1146.868103] the set address has failed devnum 23 retval : -71 
[ 1147.083056] usb 1-1: Device not responding to setup address.
[ 1147.089086] the set address has failed devnum 23 retval : -71 
[ 1147.302126] usb 1-1: device not accepting address 23, error -71
[ 1147.308875] usb usb1-port1: attempt power cycle
[ 1149.414845] usb usb1: usb_suspend_both: status 0
[ 1149.419897] tegra-xusb 70090000.xusb: entering ELPG
[ 1149.426533] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 0, speed 0
[ 1149.434483] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 1, speed 3
[ 1149.442914] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 2, speed 0
[ 1149.455415] tegra-xusb-padctl 7009f000.xusb_padctl: power down UTMI pad 0
[ 1149.463510] tegra-xusb 70090000.xusb: entering ELPG done

The following prints can be seen when removing the USB pendrive

root@nvidia-desktop:/home/nvidia# [ 1185.384604] tegra-xusb 70090000.xusb: exiting ELPG
[ 1185.391368] tegra-xusb-padctl 7009f000.xusb_padctl: power on UTMI pads 0
[ 1185.404037] tegra-xusb 70090000.xusb: Firmware timestamp: 2019-05-08 09:42:10 UTC, Version: 50.22 release
[ 1185.413906] extcon-gpio-states extcon:extcon@1: Cable state:0, cable id:0 cstate: 0 gstate 2 
[ 1185.422491] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 0
[ 1185.422518] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 1
[ 1185.422543] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 2
[ 1185.423271] tegra-xusb 70090000.xusb: exiting ELPG done
[ 1185.448848] unbalanced disables for vdd-usb-vbus
[ 1185.453516] ------------[ cut here ]------------
[ 1185.458213] WARNING: CPU: 1 PID: 7536 at /home/arvind/econ/projects/code42/tasks/nano/quickstart/nvidia_kernel/e-camNANO_Kernel/kernel/kernel-4.9/drivers/regulator/core.c:20
[ 1185.476597] Modules linked in: bnep fuse zram overlay nvgpu spidev ar1335(O) bluedroid_pm ip_tables x_tables
[ 1185.487023] 
[ 1185.488618] CPU: 1 PID: 7536 Comm: kworker/1:1 Tainted: G        W  O    4.9.140 #9
[ 1185.496358] Hardware name: NVIDIA Jetson Nano Developer Kit (DT)
[ 1185.502527] Workqueue: events tegra_xusb_otg_vbus_work
[ 1185.507787] task: ffffffc0f51e0000 task.stack: ffffffc0f97a4000
[ 1185.513809] PC is at _regulator_disable+0x10c/0x1a0
[ 1185.518774] LR is at _regulator_disable+0x10c/0x1a0
[ 1185.523734] pc : [<ffffff80086b26ac>] lr : [<ffffff80086b26ac>] pstate: 00400045
[ 1185.531200] sp : ffffffc0f97a7c60
[ 1185.534587] x29: ffffffc0f97a7c60 x28: 0000000000000000 
[ 1185.540072] x27: 0000000000000000 x26: ffffff8009e4d5d0 
[ 1185.545547] x25: 0000000000000000 x24: 0000000000000001 
[ 1185.551015] x23: 0000000000000000 x22: 0000000000000000 
[ 1185.556483] x21: ffffffc0f95fe868 x20: ffffffc0f95fe800 
[ 1185.561948] x19: ffffffc0f95fe800 x18: 0000000000000010 
[ 1185.567413] x17: 0000000000000000 x16: 0000000000000000 
[ 1185.572877] x15: 0000000000000006 x14: ffffff808a113a82 
[ 1185.578342] x13: ffffff800a113a90 x12: 0000000000000008 
[ 1185.583805] x11: ffffffc0f97a7910 x10: 0000000005f5e0ff 
[ 1185.589269] x9 : 00000000000005b2 x8 : 0000000000000037 
[ 1185.594733] x7 : ffffff8009e84318 x6 : ffffffc0fefb9bf0 
[ 1185.600198] x5 : ffffffc0fefb9bf0 x4 : 0000000000000000 
[ 1185.605658] x3 : ffffffc0fefbf7f8 x2 : ffffffc0f51e0000 
[ 1185.611121] x1 : ffffffc0f51e0000 x0 : 0000000000000024 
[ 1185.616514] 
[ 1185.618039] ---[ end trace 5289ff21fbdfa58b ]---
[ 1185.622684] Call trace:
[ 1185.625181] [<ffffff80086b26ac>] _regulator_disable+0x10c/0x1a0
[ 1185.631139] [<ffffff80086b2798>] regulator_disable+0x58/0x88
[ 1185.636840] [<ffffff80084941c0>] tegra210_xusb_padctl_vbus_power_off+0x1f0/0x3d0
[ 1185.644304] [<ffffff80084945b4>] tegra210_xusb_padctl_otg_vbus_handle+0x74/0xf0
[ 1185.651697] [<ffffff800848d624>] tegra_xusb_otg_vbus_work+0x84/0x90
[ 1185.658068] [<ffffff80080d4e58>] process_one_work+0x1e8/0x490
[ 1185.663907] [<ffffff80080d5158>] worker_thread+0x58/0x4c0
[ 1185.669393] [<ffffff80080dbb28>] kthread+0xd8/0xf0
[ 1185.674274] [<ffffff8008083850>] ret_from_fork+0x10/0x40
[ 1185.680406] tegra-xusb-padctl 7009f000.xusb_padctl: disable usb2-0 vbus failed -5
[ 1187.954183] tegra-xusb 70090000.xusb: entering ELPG
[ 1187.961063] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 1, speed 3
[ 1187.969379] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 2, speed 0
[ 1187.979806] tegra-xusb 70090000.xusb: entering ELPG done

To help with the debugging i found some information, from the usb prints that I get when USB Pendrive is connected and from the kernel source, I can see that the hub_set_address() call fails. Would this be indicative of any wrong software configuration or hardware setting?

Hi,
Looks like device tree is good and ready. Please look at compliance guide and tune eye diagram:
https://developer.nvidia.com/jetson-nano-interface-tuning-and-compliance-guide-application-note

Hi,

This is Arun kumar. Arvind and I are working together in the same issue i.e. bring-up the USB OTG mode in Jetson NANO dev kit.

Please find the hardware details of the setup we have made here in the attached image.We have not wired the USB signals instead we have connected a USB OTG pendrive to the Micro-B port in the Jetson NANO devkit itself.

Can you please provide a tuned eye diagram values for this configuration (i.e,SB OTG mode), so that we can use the tuned values and verify the working of USB OTG.

Thanks,
Arun

Hi,
You need to do the tuning by your self. We only have devkit and it works in device mode only.

Hi,

Thanks for your support. We have successfully tested OTG mode in Jetson Nano and the problem was that the SOM we were using had some problem with the Nano SOM we were using,(we are yet to diagnose the issue) which caused it to not even work in device mode. So with the current OTG changes as I have specified below, we switched the SOMs and found OTG mode to be perfectly working.

To summarise i have provided the changes performed below.

Software Changes:

diff --git a/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-extcon-p3448-0000-a00.dtsi b/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-extcon-p3448-0000-a00.dtsi
index 3f29b58..32dc259 100644
--- a/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-extcon-p3448-0000-a00.dtsi
+++ b/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-extcon-p3448-0000-a00.dtsi
@@ -18,27 +18,38 @@
                vbus_id_gpio_extcon: extcon@1 {
                        compatible = "extcon-gpio-states";
                        reg = <0x1>;
-                       extcon-gpio,name = "VBUS";
-                       extcon-gpio,cable-states = <
-                                               0x0 0x1
-                                               0x1 0x0>;
-                       gpios = <&gpio TEGRA_GPIO(CC, 4) 0>;
+                       extcon-gpio,name = "VBUS_ID";
+                       extcon-gpio,wait-for-gpio-scan = <0>;
+            extcon-gpio,cable-states = <0x3 0x0
+                                        0x0 0x2
+                                        0x1 0x2
+                                        0x2 0x1>;
+
+                       gpios = <&gpio TEGRA_GPIO(CC, 4) 0
+                     &gpio TEGRA_GPIO(S, 7) 0 >;
                        extcon-gpio,out-cable-names = <EXTCON_USB EXTCON_USB_HOST EXTCON_NONE>;
-                       wakeup-source;
+                       //wakeup-source;
                        #extcon-cells = <1>;
-                       nvidia,pmc-wakeup = <&tegra_pmc
-                               PMC_WAKE_TYPE_GPIO 54 PMC_TRIGGER_TYPE_NONE>;
+                       //nvidia,pmc-wakeup = <&tegra_pmc
+                       //      PMC_WAKE_TYPE_GPIO 54 PMC_TRIGGER_TYPE_NONE>;
                };
        };
 
        xusb@70090000 {
                extcon-cables = <&vbus_id_gpio_extcon 1>;
                extcon-cable-names = "id";
+        //phys = <&{/xusb_padctl@7009f000/pads/usb2/lanes/usb2-0}>;
+        phy-names = "usb2-0";
+        nvidia,xusb-padctl = <&xusb_padctl>;
+        status = "okay";
+
        };
 
        xudc@700d0000 {
-               extcon-cables = <&vbus_id_gpio_extcon 0>;
-               extcon-cable-names = "vbus";
+        extcon-cables = <&vbus_id_gpio_extcon 0>;
+        extcon-cable-names = "vbus";
+        #extcon-cells = <1>;
+        status = "okay";
        };
 
 };
diff --git a/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0000-a02.dtsi b/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0000-a02.dtsi
index 6acdc55..0354eb0 100755
--- a/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0000-a02.dtsi
+++ b/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0000-a02.dtsi
@@ -62,7 +62,6 @@
                                TEGRA_GPIO(CC, 4)
                                >;
                        gpio-output-low = <
-                               TEGRA_GPIO(S, 7)
                                TEGRA_GPIO(T, 0)
                                TEGRA_GPIO(Z, 3)
                                TEGRA_GPIO(H, 0)
diff --git a/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi b/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi
index 6bb1a4d..d57d338 100644
--- a/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi
+++ b/nvidia/soc/t210/kernel-dts/tegra210-soc/tegra210-soc-base.dtsi
@@ -664,7 +664,8 @@
 
                                lanes {
                                        usb2-0 {
-                                               status = "disabled";
+                                               status = "okay";
+                        nvidia,function = "xusb";
                                                #phy-cells = <0>;
                                        };
                                        usb2-1 {
@@ -752,7 +753,9 @@
 
                ports {
                        usb2-0 {
-                               status = "disabled";
+                               status = "okay";
+                mode = "otg";
+                vbus-supply = <&p3449_vdd_usb_vbus>;
                        };
                        usb2-1 {
                                status = "disabled";

Hardware Change:

wired the ID pin (pin 4 from Micro-B connector available in devkit) to the CAM0_PWDN pin and pulled the pin-up to 1.8V, so that when the OTG device is connected the pin will be pulled low. We have connected 5V to the “VDD_5V_USB” domain in the Nano devkit.

Thank you for your time.

2 Likes