Lack of USB on Jetson TX2

Hi,

I have recently run into a problem after modifying the DT (configure it to Configuration #3): the USB2.0 does not recognize a mouse/keyboard/hub. A LED on an external USB-hub was off.

Once I have applied the modifications per https://devtalk.nvidia.com/default/topic/1025513/?comment=5216015, that is:

- ./common/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi: vbus-2-supply = <&vdd_usb2_5v>;
+ ./common/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi: vbus-2-supply = <&battery_reg>;

The light on the hub went on, but yet the keyboard and mouse were not available via this hub.

BTW, I do not have access to the terminal physically - this issue is not related to the USB problem

Regards.

Please refer to adaptation guide to modify device tree to fit your custom board.
https://developer.nvidia.com/embedded/dlc/l4t-driver-package-tx2-adaptation-guide

Hi DaneLLL,

I have followed this procedure. Though I guess that my problem is the following terminal output:

[    4.430344] xhci-tegra 3530000.xhci: can't get usb3-1 phy (-22)
[    4.430419] xhci-tegra: probe of 3530000.xhci failed with error -22

I understand from xhci-tegra.c that the word usb3-1 is missing from the phy-names property.
But I do have a list of phy(s) in tegra186-quill-p3489-1000-a00-plugin-manager.dtsi file (do note that it is for the TX2i and not TX2):

fragment-p3489-A00 {
			ids = ">=3489-0000-200";
...

			override@7 {
				target = <&{/xhci@3530000}>;
				_overlay_ {
					phys =  <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
						<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
						<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
						<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>, // config #3
						<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>; // config #3
					phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1", "usb3-2";
				};

Is the phy-names is expected elsewhere too, or did I get it all wrong?
Regards.

Hi igal,
The error looks to be

#define EINVAL          22      /* Invalid argument */

So your custom board works on TX2 but fails on TX2i?

Please also check https://elinux.org/Jetson/TX2_DTB#TX2
Tx2 and TX2i flash different DTBs.

Hi DaneLLL,

You are correct EINVAL is the error.

The header of the topic is a typo it was supposed to be TX2i.

I flash the TX2i correctly per [url]Jetson/TX2 DTB - eLinux.org.

Any suggestions?

Regards.

Hi igal,
Does usb3-2 work? There are two USB3 ports in config #3. Please check if the other one works.

Also please check ODMDATA and device tree via xxd:
[url]https://devtalk.nvidia.com/default/topic/1023160/jetson-tx2/tx2-using-pcix1-instead-of-usb3-default-config-1-/post/5208073/#5208073[/url]

Hi DaneLLL,

I have flashed the device tree with the modification of the ODMDATA 0x6090000

Currently I don’t have a way to get devmem2 to the target so I only have this output from the device tree:

<b>ls /proc/device-tree/chosen/plugin-manager/odm-data -l</b>
total 0
-r--r--r-- 1 root root 4 Oct 14 13:07 android-build
-r--r--r-- 1 root root 4 Oct 14 13:07 disable-pmic-wdt
-r--r--r-- 1 root root 4 Oct 14 13:07 disable-sdmmc-hwcq
-r--r--r-- 1 root root 4 Oct 14 13:07 disable-tegra-wdt
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-debug-console
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-denver-wdt
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-pcie-on-uphy-lane0
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-xusb-on-uphy-lane2
-r--r--r-- 1 root root 9 Oct 14 13:07 name
-r--r--r-- 1 root root 4 Oct 14 13:07 no-battery
-r--r--r-- 1 root root 4 Oct 14 13:07 normal-flashed

and

<b>xxd /proc/device-tree/xhci@3530000/phy-names</b>
00000000: 7574 6d69 2d30 0075 746d 692d 3100 7574  <b>utmi-0.utmi-1.ut</b>
00000010: 6d69 2d32 0075 7362 332d 3100 7573 6233  <b>mi-2.usb3-1.usb3</b>
00000020: 2d32 00                                  <b>-2</b>.

So I guess the usb3-1 is available in the phy-names.

We currently do not utilize USB3.0 ports - we only needed the PCIe ports.

needless to say, but lsusb displays nothing.

BTW, is the order of the phys is important?

phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
		<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
		<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>,
		<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
		<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
		phy-names = "utmi-0", "utmi-1", "usb3-1", "utmi-2", "usb3-0";

Regards.

Hi igal,
Do you configure num-lanes of PCIe?
[url]https://devtalk.nvidia.com/default/topic/1021886/jetson-tx2/pcie-usb-lane-mapping/post/5203705/#5203705[/url]

If you don’t have physical USB3 ports, please disable usb3-1 and usb3-2 since the driver will check if the USB HW ports are present.

Hi DaneLLL,
Yes I set the three PCIe to x1 lane each.

When you say to disable what do you mean just remove them from the phy-names list?

Which USB HW do you mean? I thought that the USB phy(s) are implemented inside the Jetson TX2i module.

Regards.

Hi DaneLLL,

I have found the problem.

In the file tegra186-quill-p3489-1000-a00-plugin-manager.dtsi:

fragment-p3489-A00 {
			ids = ">=3489-0000-200";
...
		override@8 {
		target = <&tegra_xusb_padctl_pinmux_default>;
			_overlay_ {
				usb3-std-A-port2 {
					nvidia,lanes = "<b>usb3-0</b>"; <u><b>changed to usb3-1</b></u>
				};
				e3325-usb3-std-A-HS {
					status = "okay";
				};
			};
		};

Regards, thanks for the support.

Thanks for sharing the findings.
Update the path of TX2i to [url]Jetson/TX2 USB - eLinux.org