TX2 usb3.0 config 6 usb3-0 usb-3-1 can not connect


Looks like there is nothing wrong from both device tree and ODMDATA.

Please use /proc/device-tree to make sure your device tree is correct.

Is it a comparison one by one?

Just usb and pcie nodes.

Proc/device tree and DTS are consistent.
Is the following node correct?
What is the drive file path of usb3-1? I want to see if usb3-1 enters the probe

pinctrl@3520000 {
		compatible = "nvidia,tegra186-xusb-padctl";
		reg = <0x0 0x3520000 0x0 0x1000 0x0 0x3540000 0x0 0x1000>;
		reg-names = "padctl", "ao";
		resets = <0x10 0x37>;
		reset-names = "padctl_rst";
		clocks = <0x10 0x6f 0x10 0x215 0x10 0x87 0x10 0x86>;
		clock-names = "xusb_clk", "utmipll", "usb2_trk", "hsic_trk";
		interrupts = <0x0 0xa7 0x4>;
		mboxes = <0xb5>;
		mbox-names = "xusb";
		#phy-cells = <0x1>;
		status = "okay";
		vbus-0-supply = <0xad>;
		vbus-1-supply = <0xae>;
		vbus-2-supply = <0x26>;
		vbus-3-supply = <0x26>;
		vddio-hsic-supply = <0x26>;
		avdd_usb-supply = <0x13>;
		vclamp_usb-supply = <0x12>;
		avdd_pll_erefeut-supply = <0x12>;
		pinctrl-0 = <0xb6>;
		pinctrl-1 = <0xa9>;
		pinctrl-2 = <0xaa>;
		pinctrl-3 = <0xab>;
		pinctrl-4 = <0xac>;
		pinctrl-5 = <0xa7>;
		pinctrl-6 = <0xa8>;
		pinctrl-names = "default", "vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate", "vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough", "vbus_en0_default", "vbus_en1_default";
		linux,phandle = <0xa6>;
		phandle = <0xa6>;

		pinmux {
			linux,phandle = <0xb6>;
			phandle = <0xb6>;

			usb2-micro-AB {
				nvidia,lanes = "otg-0";
				nvidia,function = "xusb";
				nvidia,port-cap = <0x3>;
				status = "okay";

			usb2-std-A-port2 {
				nvidia,lanes = "otg-1";
				nvidia,function = "xusb";
				nvidia,port-cap = <0x1>;
				status = "okay";

			e3325-usb3-std-A-HS {
				nvidia,lanes = "otg-2";
				nvidia,function = "xusb";
				nvidia,port-cap = <0x1>;
				status = "okay";

			usb3-std-A-port2 {
				nvidia,lanes = "usb3-0";
				nvidia,function = "xusb";
				nvidia,port-cap = <0x1>;
				status = "okay";

			usb3-std-A-port3 {
				nvidia,lanes = "usb3-1";
				nvidia,function = "xusb";
				nvidia,port-cap = <0x1>;
				status = "okay";

These nodes are not needed for rel-32 code base. Only for rel-28.

The default device tree has “#if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2”, that means for rel-32.

Is there any other test method? Or is it useful to test the USB driver?

You can check the node one by one.

For example, usb3-0 device tree configuration is the default one from devkit. Thus, if the vbus and usb-2 pair are correctly set, usb3-0 should at least work on your board.

But it sounds not happened on your board. Thus, hardware side problem is also possible.

OK, let me compare devkit first,Then I’ll look at the hardware problem

left is devkit device tree, right is my device tree
I set usb3 for this PHY names, but PHY did not give the corresponding usb3. Is there a problem? I don’t know what this node does

Did you ever read the usb porting section in the adaptation guide? xudc driver is for usb device mode. Thus, nothing to do with your topic.

file: /Linux_for_Tegra/source/public/kernel/kernel-4.9/drivers/usb/host/xhci-tegra.c
func: static irqreturn_t tegra_xusb_padctl_irq(int irq, void *data)

When I insert the SS device into usb3-1, I cannot enter the interrupt function. If I insert usb2-0 into the usb3-1 port, I can enter the interrupt function Is there a way to debug why the interrupt is not obtained?

Can you also disable all pcie controller and see if any usb3 can work fine after that?


I just notice you filed lots of TX2 usb topics before. And some of them have working usb3 devices.

What is the difference now and then?

Yes, it worked normally before. We changed the design of carrier board many times, Recently ,The carrier board was redesigned and the TX2 module was purchased again. I don’t know what’s wrong with that link now。


The usb side configuration is same. If something go wrong after the carrier board change, then you should compare the hardware side instead of keeping searching in software. It does not help.

I need critical evidence to tell the hardware where there is a problem. Otherwise, others will only say that it is a software problem, because the hardware thinks it has not changed

If the device tree and odmdata are same now and then, tegra software have nothing to do with it.

You also don’t share the schematic. What you shared are just some block diagram. That cannot help.
I believe even the block diagram is same now and 6 months ago when you filed that old topic, right?

Usb3-0 works normally now.Usb3-1 is the same as before
dmesg.log (59.7 KB)

Are you taking about that your usb3-0 can only work after pcie is disabled?