TX2 USB3.0 Port Not working

Hi,

I’ve a custom carrier board for Jetson TX2. On the custom carrier board, we’ve a 4 port usb2.0 hub which is connected to the jetson tx2 B40(USB0_D-) and B39(USB0_D+) and the A17 (USB0_EN_0C). B42(USB2_D+) and B43(USB2_D-) are connected to a U_USB to 1 GB Eth Phy chip enable using pin A10.

Two USB3.0 ports are exposed on the custom carrier board USB_SS0 [F43 F44 C43 C44] and USB_SS1 [G42 G43 D42 D43] and the A18 (USB1_EN_0C pin.

I’ve flashed the board to use config #4 lane mapping ODMDATA=0x7090000. The USB3.0 ports are still not working.

I’ve attached the pin allocation for both the USB3.0

And for the USB2.0 hub

I’ve applied the patch to make USB2.0 ports work

pinctrl@3520000 {
		vbus-0-supply = <&vdd_usb0_5v>;
		vbus-1-supply = <&vdd_usb1_5v>;
		vbus-2-supply = <&vdd_usb1_5v>;
		vbus-3-supply = <&battery_reg>;
		vddio-hsic-supply = <&battery_reg>;
		avdd_usb-supply = <&spmic_sd3>;
		vclamp_usb-supply = <&spmic_sd2>;
		avdd_pll_erefeut-supply = <&spmic_sd2>;

dmesg log here:
dmesg (64.8 KB)

Is anyone able to point me in the right direction to fixing this issue

The right direction is please refer to the adaptation guide w.r.t your software release.

Thanks for your response.

We use tegra-l4t-r32.6.1 and jetpack4.4.

We’ve been able to get the USB2.0 working.

But the USB3.0 doesn’t work. It seems to get turned off during boot up.

We use tegra-l4t-r32.6.1 and jetpack4.4.

Jetpack4.4 is rel-32.4.3. Did you mix up two different releases?

Did you ever read the adaptation guide? The device tree change is needed to add new usb lane/port. Only changing the ODMDATA is not enough.

I’ve tried to follow the instruction in https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/adaptation_and_bringup_tx2.html#wwpID0E01L0HA under Porting USB to configure the other USB, But I’ve not been successful. My Initial guess was maybe an overlay in the tegra186-quill-p3310-1000-c03-00-base.dts was overwriting my config.

There is no need to “guess” anything, just convert your dtb back to dts by using dtc tool and see if any overlay is setting the usb lane/port again.

Also, you can check /proc/device-tree after you boot into the system. This node will reveal the whole device tree loaded on your board. This one will show the final result, including the change from overlay.

I use the dtc tool to convert between dts and dtb.

There are few overlays setting the port and lane again, I’ve tried reconfiguring some of them but it seems my config turns the lane/port off somehow. I need to follow it through again.

I’ll check the /proc/device-tree after boot to show the final result.

Hi WayneWWW

I got one of the Usb3.0 port working (USB_SS0 [F43 F44 C43 C44] ). Still not sure why the other port doesn’t work.

I’ve an issue with the working port. I have a frame grabber (HDMI to USB3.0) connected to the USB3.0 port which is connected to a camera board through HDMI. If I connect the HMDI to the frame grabber with the camera board powered on before starting up the Jetson, the frame grabber is NOT listed as a usb device. But if I plug in the HDMI after the Jetson is powered on, it is listed as a usb device.

wondering if you’re able to help with this?


Image of the HDMI unplugged


Image of the HDMI plugged

I think you should focus on why other usb port cannot work but not throwing out another new issue.

Also, sharing me some picture about the frame grabber does not help anything.

Please take this as a common sense that you should share the dmesg when dealing with kernel issue.

I’m sorry about this.

bad.log (57.5 KB)
When the USB port doesn’t work

good.log (60.8 KB)
When USB port works

  1. What was your check result you said you would try on 9/10? Did you ever change your device tree?

  2. I am not hardware guy so not pretty sure about your hardware. Is your usb hub here supporting the usb3?
    Your description sounds like you have a “usb 2.0 hub” and 2x “usb3.0 ports” and these two ports are not related to that usb 2.0 hub.

  1. I’ve changed the tegra186-quill-p3310-1000-c03-00-base.dts,
    I’ve changed the pinctrl@3520000 node to this:
    vbus-0-supply = <0x26>;
    vbus-1-supply = <0x26>;
    vbus-2-supply = <0x26>;
    vbus-3-supply = <0x26>;
    vddio-hsic-supply = <0x26>

and xusb_padctl@3520000:
usb2-0 {
status = “okay”;
mode = “otg”;
vbus-supply = <0x26>;
nvidia,oc-pin = <0x0>;
};
usb2-1 {
status = “okay”;
mode = “host”;
vbus-supply = <0x26>;
nvidia,oc-pin = <0x1>;
};
usb2-2 {
status = “okay”;
mode = “host”;
vbus-supply = <0x26>;
};

This is how I got the Usb2.0 ports and one (1) Usb 3.0 port working.

  1. Yes, we’ve a usb2.0 hub which multiplexes one of the usb2.0 port on the TX2 to four port on our carrier board, and the other usb2.0 port is used for ethernet over usb connection. And the two usb3.0 from the TX2 is exposed on our carrier board.

Did you ever read the document I mentioned in the beginning? Our document indicates that every usb 3.0 port should have a usb2.0 port accompanied.

Your description here indicates you didn’t read the document clearly.

And if some ports are not existing on your board, you should remove it. For example, you said there are only 2 usb 2 ports on your board, but you just shared me a device tree with 3 usb2 enabled. This is a obvious mistake.

Here is a completed copy of the ports node:

ports {

		usb2-0 {
			status = "okay";
			mode = "otg";
			vbus-supply = <0x26>;
			nvidia,oc-pin = <0x0>;
		};

		usb2-1 {
			status = "okay";
			mode = "host";
			vbus-supply = <0x26>;
			nvidia,oc-pin = <0x1>;
		};

		usb2-2 {
			status = "okay";
			mode = "host";
			vbus-supply = <0x26>;
		};

		usb3-0 {
			status = "okay";
			nvidia,usb2-companion = <0x1>;
		};

		usb3-1 {
			status = "okay";
			nvidia,usb2-companion = <0x1>;
		};

		usb3-2 {
			status = "disabled";
		};

		hsic-0 {
			status = "disabled";
		};
	};

	prod-settings {
		#prod-cells = <0x4>;

		prod_c_bias {
			prod = <0x0 0x284 0x38 0x38>;
		};

		prod_c_hsic0 {
			prod = <0x0 0x344 0x7f 0x2d>;
		};

		prod_c_utmi0 {
			prod = <0x0 0x88 0x1fe0000 0xcc0000>;
		};

		prod_c_utmi1 {
			prod = <0x0 0xc8 0x1fe0000 0xcc0000>;
		};

		prod_c_utmi2 {
			prod = <0x0 0x108 0x1fe0000 0xcc0000>;
		};
	};
};

extracted.dts (490.3 KB)
and here attached is the dts file

I’m really a beginner at this. I’m learning and trying to get better at this.

I don’t know what you want me to say here. You should tell me what is your exact problem here but not just tell me you are a beginner. If you have any problem finding out which document to read, ask. If you don’t understand any part inside the document, please ask.

Currently, looks like even your hardware is wrong since your usb3 port is not coupled with any usb2 port.
If there is, please share the schematic of that part.

I’m sorry if this convo has been frustrating.

All I want to do is use two of the four usb2.0 ports from the usb2.0 hub on the jetson TX2. One for the usb2.0 hub on our custom board and the other for the ethernet over usb on our custom board. And Two of the three usb3.0 port from the Jetson TX2.


Would this be the schematic showing that?


Usb2.0

Hi,

Sorry again, as I said previously, I am not a hardware guy so my interpretation to your schematic may not be precise.

Please just reply me below questions. You already provided same information 3 times. I don’t see you provide any further info.

What is that “J7” from your schematic? Why does it turns out another 4 USB ports here? Is this “J7” the same usb hub you are talking about for the usb2.0 hub?

The J7 is the port termination for the four usb2.0 ports from our usb2.0 hub on the custom board and two usb3.0 ports from the tx2 usb3.0 hub.

So what does your usb3.0 port look like? A type A usb port?