USB not working on Jetson Nano with Linux mainline 5.10

We managed to boot the Linux 5.10 with linux mainline 5.10 on our Custom board using a modified version of the devkit device tree.

However, we could not get the USB ports to work. We keep getting the following error after the xusb.bin firmware loading.

: [ 14.998040] tegra-xusb 70090000.usb: can’t setup: -110
[ 15.003237] tegra-xusb 70090000.usb: USB bus 1 deregistered
[ 15.008915] tegra-xusb 70090000.usb: failed to add USB HCD: -110
[ 15.015712] VDD_HUB_3V3: Underflow of regulator enable count
[ 15.023154] tegra-xusb: probe of 70090000.usb failed with error -110

Things to note:

Our custom board does not use onboard USB hub (RTS5411), USB ports are connected directly to the Nano, this setup works with the Linux Tegra 4.9 but it is not working with the mainline kernel.

Below is a snippet from the device tree in use.

padctl@7009f000 {
	status = "okay";

	avdd-pll-utmip-supply = <&vdd_1v8>;
	avdd-pll-uerefe-supply = <&vdd_pex_1v05>;
	dvdd-pex-pll-supply = <&vdd_pex_1v05>;
	hvdd-pex-pll-e-supply = <&vdd_1v8>;

	pads {
		usb2 {
			status = "okay";

			lanes {
				micro_b: usb2-0 {
					nvidia,function = "xusb";
					status = "okay";
				};

				usb2-1 {
					nvidia,function = "xusb";
					status = "okay";
				};

				usb2-2 {
					nvidia,function = "xusb";
					status = "okay";
				};
			};
		};

		pcie {
			status = "okay";

			lanes {
				pcie-0 {
					nvidia,function = "pcie-x1";
					status = "okay";
				};

				pcie-1 {
					nvidia,function = "pcie-x4";
					status = "okay";
				};

				pcie-2 {
					nvidia,function = "pcie-x4";
					status = "okay";
				};

				pcie-3 {
					nvidia,function = "pcie-x4";
					status = "okay";
				};

				pcie-4 {
					nvidia,function = "pcie-x4";
					status = "okay";
				};

				pcie-5 {
					nvidia,function = "usb3-ss";
					status = "okay";
				};

				pcie-6 {
					nvidia,function = "usb3-ss";
					status = "okay";
				};
			};
		};
	};

	ports {
		usb2-0 {
			status = "okay";
			mode = "peripheral";
			usb-role-switch;

			vbus-supply = <&vdd_5v0_sys>;

			connector {
				compatible = "gpio-usb-b-connector",
					     "usb-b-connector";
				label = "micro-USB";
				type = "micro";
				vbus-gpios = <&gpio TEGRA_GPIO(CC, 4)
					      GPIO_ACTIVE_LOW>;
			};
		};

		usb2-1 {
			status = "okay";
			mode = "host";
		};

		usb2-2 {
			status = "okay";
			mode = "host";
		};

		usb3-0 {
			status = "okay";
			nvidia,usb2-companion = <1>;
			vbus-supply = <&vdd_hub_3v3>;
		};
	};
};

Any help on this issue will be greatly appreciated.

@linuxdev @xback @ruih

Thanks in Advance.

I have no way to say what is specifically going wrong. In particular, drivers or other parts of the kernel have probably changed such that the device tree content passed to them must change. The Nano was never supported for 5.x kernels, but I think if you get this to work and post the device tree, then a lot of people who experiment with this would find it very useful. Someone familiar with the USB change from a 4.x kernel to a 5.x kernel could probably answer this, because although many things are different between say a Nano and Xavier, I suspect that if the USB part of this is the same component (and it might be, at least for USB2), then device tree changes are also probably the same.

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