Jetson Tx2i : USB stops working in config #1

To enable PCIe on my Jetson TX2 module, I modified the file p2771-0000.conf.common with ODMDATA=0x90000 (Config #1 as explained in the Platform Adaptation guide) and then flashed the OS -
sudo ./flash.sh jetson-tx2 mmcblk0p1
After this my PCIe module got detected and worked as expected.

I needed to do the same with Jetson TX2i. However, with TX2i, as soon as I configured ODMDATA to config #1 and flashed the OS, usb (keyboard/mouse) stopped working. What may be the reason for that? Any suggestions?
Thanks

Here is the dmesg output specific to usb:
[ 0.301219] usbcore: registered new interface driver usbfs
[ 0.301285] usbcore: registered new interface driver hub
[ 0.301413] usbcore: registered new device driver usb
[ 0.365928] vdd-usb0-5v: 5000 mV
[ 0.366093] vdd-usb1-5v: 5000 mV
[ 0.378228] vdd-usb2-5v: 5000 mV
[ 2.633858] usbcore: registered new interface driver r8152
[ 2.633907] usbcore: registered new interface driver asix
[ 2.633963] usbcore: registered new interface driver ax88179_178a
[ 2.633990] usbcore: registered new interface driver cdc_ether
[ 2.634041] usbcore: registered new interface driver smsc75xx
[ 2.634070] usbcore: registered new interface driver net1080
[ 2.634098] usbcore: registered new interface driver cdc_subset
[ 2.634133] usbcore: registered new interface driver zaurus
[ 2.634192] usbcore: registered new interface driver cdc_ncm
[ 2.634657] tegra-xotg xotg: usb2 phy is not available yet
[ 2.635241] usbcore: registered new interface driver cdc_acm
[ 2.635290] usbcore: registered new interface driver usb-storage
[ 2.635393] usbcore: registered new interface driver usbserial
[ 2.635415] usbcore: registered new interface driver cp210x
[ 2.635434] usbserial: USB Serial support registered for cp210x
[ 2.635457] usbcore: registered new interface driver ftdi_sio
[ 2.635474] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 2.635495] usbcore: registered new interface driver option
[ 2.635511] usbserial: USB Serial support registered for GSM modem (1-port)
[ 2.635544] usbcore: registered new interface driver pl2303
[ 2.635560] usbserial: USB Serial support registered for pl2303
[ 2.635775] tegra-usb-cd usb_cd: otg phy is not available yet
[ 2.638211] tegra-xudc-new 3550000.xudc: usb2 phy is not available yet
[ 3.637055] usbcore: registered new interface driver gspca_zc3xx
[ 3.644498] usbcore: registered new interface driver usbhid
[ 3.644499] usbhid: USB HID core driver
[ 3.841145] xhci-tegra 3530000.xhci: can’t get usb3-0 phy (-22)
[ 3.909060] vdd-usb0-5v: disabling
[ 3.909062] vdd-usb1-5v: disabling
[ 3.909080] vdd-usb2-5v: disabling
[ 3.910650] tegra-usb-cd usb_cd: notification status (0x0, 0x1)
[ 3.910652] tegra-usb-cd usb_cd: set current 0ma
[ 8.461046] usb0: HOST MAC fe:91:bc:f5:e1:ee
[ 8.461118] usb0: MAC fa:33:48:e9:2f:8d
[ 8.461492] usb1: HOST MAC a2:d6:ac:ab:a2:84
[ 8.461536] usb1: MAC 12:25:11:6e:63:15
[ 8.701229] device usb0 entered promiscuous mode
[ 8.711907] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[ 8.715443] device usb1 entered promiscuous mode
[ 8.719042] IPv6: ADDRCONF(NETDEV_UP): usb1: link is not ready
[ 8.719047] l4tbr0: port 2(usb1) entered forwarding state
[ 8.719058] l4tbr0: port 2(usb1) entered forwarding state
[ 8.941790] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
[ 8.941846] l4tbr0: port 1(usb0) entered forwarding state
[ 8.941881] l4tbr0: port 1(usb0) entered forwarding state
[ 8.947554] IPv6: ADDRCONF(NETDEV_CHANGE): usb1: link becomes ready
[ 23.722607] l4tbr0: port 2(usb1) entered forwarding state
[ 23.978612] l4tbr0: port 1(usb0) entered forwarding state

Hi FM2461,
The issue is more like in DTB file because TX2 and TX2i flash different DTBs.
https://elinux.org/Jetson/TX2_DTB#TX2

Thank You DaneLLL.

In the device tree for Tx2i, found a block -

fragment-500-e3325-pcie {
	enable-override-on-all-matches;
	ids = ">=3489-0000-200";
	odm-data = "enable-pcie-on-uphy-lane0";
	---
	---
	override@1 {
		target = <0x9d>;

		_overlay_ {
			usb3-std-A-port2 {
				status = "disabled";
			};
		};
	};
	---
	---
}

I changed the status above to “okay” and after flashing the updated device tree, usb started to work. I’m not an expert at device trees, can you confirm this change would not have any other implication ? Thanks again!

Hi FM2461,
It looks not right because for config #1, there should not have any USB3 port enabled. Can you double confirm you use config #1?

Hi DaneLLL,
Yes I think I’m using config #1. Here are some messages from dmesg which probably confirms that -

dmesg | grep pci
[ 0.140887] node /plugin-manager/fragment-500-e3325-pcie match with board >=3489-0000-200
[ 0.140904] node /plugin-manager/fragment-500-e3325-pcie match with odm-data enable-pcie-on-uphy-lane0
[ 0.257273] GPIO line 459 (pcie-lane2-mux) hogged as output/low
[ 0.260531] iommu: Adding device 10003000.pcie-controller to group 50
[ 7.538466] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[ 7.550173] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[ 7.559428] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[ 7.561610] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes

Let me know if I can check something else to confirm the config #1 state.

Currently, I can access my pcie device and after making the above change to enable ‘usb3-std-A-port2’ in device tree, I can use usb ports too (both the micro usb port and USB A port on the devkit board).
I understand from looking at the platform adaptation doc that in Config #1, usb3 port will not be enabled. But in my case once I enabled config #1, I was not able to use any usb port and the above change to device tree helped. So not sure either what is going on.

Hi FM2461,
It should be config #2 if you want to enable USB Type A port on devkit.

Hi DaneLLL
It was config #2 by default. I changed it to config #1 to enable PCIe (m.2).

Back to my original point - With TX2 in config #1 - both PCIe and USB (Type A and micro USB) worked fine. With Tx2i, both the USB ports stopped working in conig #1. Updating the device tree as above was the only thing that helped. Still not sure what to conclude from this. Thanks

Hi FM2461,
In HW perspective, PEX1 and USB_SS0 share same pins and if it detects a PCIe device at PEX1, it should not be able to run USB3 at USB_SS0. But anyway, if it works well in your case, it should be fine.

Hi ,

In my case usb3 is not working even after updating following dtb modifications

How should I use keyboard and mouse in-case of config #1 ??

Hi shrinathchoudhary,

Please open a new topic for your issue. Thanks