USB Failure When Modifying Device Tree

Hello,
I am using a Jetson Nano with a custom carrier board. On my carrier board, the USB2 port goes to a TI USB2046 hub IC. If I use the stock Jetpack 4.6 Kernel and DTB, then the USB port and hub works great. If I attempt to modify the device tree to add an I2C GPIO expander, then the USB port and hub stops working. The log from the terminal is attached below so you can see the error indications.

My carrier board has a PCA9555 GPIO expander on I2C0. I wish to add this to the device tree, so I do the following:

  • Edit the file tegra210-p3448-0002-p3449-0000-b00.dts
  • Added following code to that DTS file:
i2c0 {
		status = "okay";

		gpio@20 {
			status = "okay";
			compatible = "nxp,pca9555";
			reg = <0x20>;
			gpio-controller;
			#gpio-cells = <2>;
			vcc = <&battery_reg>;
			gpio-line-names = "BT-M2-WAKE-AP", "BT-M2-EN";
		};
	};
  • My complete DTS file is attached for reference
  • Place the DTS file in [jetpack]/sources/hardware/nvidia/platform/t210/porg/kernel-dts
  • Compile kernel using “make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j4”
  • Copy compiled DTB to [jetpack]/kernel/dtb
  • Flash unit using recovery mode and flash.sh script
  • Reboot

Upon reboot the USB port no longer works.
I am new to Linux and device tree modification so it’s probably something I am doing incorrectly.
The I2C device works correctly. If I boot the system using the stock kernel and DTB and use i2cdetect, I can talk to my IO expander.

I attached a snippet of the circuit so you can see the hub arrangement.

Could you point me in the right direction to solve my issue? How should I modify the device tree such that I can use I2C0 and the USB port?

tegra210-p3448-0002-p3449-0000-b00.dts (3.9 KB)
BootTerminalLog.txt (24.3 KB)

hello nluck,

please review Jetson Nano Product Design Guide to have board design,
you may disassembler the dtb file into text file to examine your dtsi modification,
for example, $ dtc -I dtb -O dts -o output.txt tegra210-p3448-0002-p3449-0000-b00.dtb

BTW,
you may have partition update instead of full flash to shorten the develop time,
i.e. $ sudo ./flash.sh -r -k DTB jetson-nano-emmc mmcblk0p1

FYI I was able to fix the issue. I had to disable USB auto-suspend in extlinux.conf:
[USB Autosuspend - NVIDIA Jetson TK1 - JetsonHacks](https://USB Auto-Suspend Disable TK1)
The link is for a TK1, but the concept is the same. As for why it worked with the stock device tree and not mine, I don’t know. But this fixed the issue for me.