USBSS1 Interface Not Working

I’m experiencing an issue with the USBSS1 interface on my board.

I’ve ensured that the xusb_padctl@3520000 has the usb3-1 lanes and ports with status=“okay” in the DTB file. Additionally, I’ve checked the xhci@3610000 configuration:

xhci@3610000 {
    //... (truncated for brevity)
    status = "okay";
    phys = <0x2b6 0x2b7 0x2b8 &{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
    phy-names = "usb2-1\0usb2-2\0usb3-0\0usb3-1";
    phandle = <0x464>;
};

Connecting a SS device to that port does not produce any log messages in dmesg.

Pleas share full dmesg.

Here is the dmesg
dmesg.txt (64.1 KB)

Please share the dts converted back from dtb and board schematic of usb part.

Here is the dts tegra234-p3767-0000-p3768-0000-a0.dts (428.7 KB)

Here are the provided schematics. I am aware that the port lacks USB2 signals, but my intention is to use it solely with USB3 SuperSpeed devices. I have already tested my device on a different board, with the USB2 lines disconnected, and it functioned perfectly.

HI,

This design is wrong. Every usb3 port on jetson must have a usb2 accompany to meet the spec.

I have connected the USB2-0 lines to the connector in order to ensure compliance with the USB specification. Subsequently, I modified the device tree binary (dtb) to change the USB2-0 role from OTG to host, as follows:

xusb_padctl@3520000 {
		compatible = "nvidia,tegra234-xusb-padctl";
		reg = <0x00 0x3520000 0x00 0x20000 0x00 0x3540000 0x00 0x10000>;
		reg-names = "padctl\0ao";
		interrupts = <0x00 0xa7 0x04>;
		resets = <0x02 0x72>;
		reset-names = "padctl";
		status = "okay";
		vclamp-usb-supply = <0x4e>;
		avdd-usb-supply = <0x2b3>;
		phandle = <0x2b7>;

		pads {

			usb2 {
				clocks = <0x02 0xa5>;
				clock-names = "trk";

				lanes {

					usb2-0 {
						status = "okay";
						#phy-cells = <0x00>;
						nvidia,function = "xusb";
						phandle = <0x2b8>;
					};

					usb2-1 {
						status = "okay";
						#phy-cells = <0x00>;
						nvidia,function = "xusb";
						phandle = <0x2bb>;
					};

					usb2-2 {
						status = "okay";
						#phy-cells = <0x00>;
						nvidia,function = "xusb";
						phandle = <0x2bc>;
					};

					usb2-3 {
						status = "disabled";
						#phy-cells = <0x00>;
					};
				};
			};

			usb3 {

				lanes {

					usb3-0 {
						status = "okay";
						#phy-cells = <0x00>;
						nvidia,function = "xusb";
						phandle = <0x2bd>;
					};

					usb3-1 {
						status = "okay";
						#phy-cells = <0x00>;
						nvidia,function = "xusb";
						phandle = <0x2ba>;
					};

					usb3-2 {
						status = "disabled";
						#phy-cells = <0x00>;
					};

					usb3-3 {
						status = "disabled";
						#phy-cells = <0x00>;
					};
				};
			};
		};

		ports {

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

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

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

			usb2-3 {
				status = "disabled";
			};

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

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

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

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

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

			prod {
				prod = <0x00 0x284 0x38 0x38 0x00 0x288 0x3fff000 0x51e000>;
			};
		};
	};

	usb_cd {
		compatible = "nvidia,tegra234-usb-cd";
		nvidia,xusb-padctl = <0x2b7>;
		phys = <0x2b8>;
		phy-names = "otg-phy";
		status = "disabled";
		phandle = <0x2b9>;
	};

	xudc@3550000 {
		compatible = "nvidia,tegra234-xudc";
		reg = <0x00 0x3550000 0x00 0x8000 0x00 0x3558000 0x00 0x8000>;
		reg-names = "base\0fpci";
		interrupts = <0x00 0xa6 0x04>;
		clocks = <0x02 0x109 0x02 0x115 0x02 0x113 0x02 0x110>;
		clock-names = "dev\0ss\0ss_src\0fs_src";
		power-domains = <0x02 0x0b 0x02 0x0a 0x02 0x0c>;
		power-domain-names = "dev\0ss\0host";
		nvidia,xusb-padctl = <0x2b7>;
		iommus = <0x4d 0x0f>;
		dma-coherent;
		status = "disabled";
		charger-detector = <0x2b9>;
		avdd-usb-supply = <0x2b3>;
		phys = <0x2ba>;
		phy-names = "usb3-1";
		phandle = <0x466>;
	};

	xhci@3610000 {
		compatible = "nvidia,tegra234-xhci\0nvidia,tegra234-xusb";
		reg = <0x00 0x3610000 0x00 0x40000 0x00 0x3600000 0x00 0x10000 0x00 0x3650000 0x00 0x10000>;
		reg-names = "base\0fpci\0bar2";
		interrupts-extended = <0x01 0x00 0xa3 0x04 0x01 0x00 0xa4 0x04 0x01 0x00 0xa7 0x04 0x09 0x4c 0x04 0x09 0x4d 0x04 0x09 0x4e 0x04 0x09 0x4f 0x04 0x09 0x50 0x04 0x09 0x51 0x04 0x09 0x52 0x04>;
		interrupt-names = "xhci\0mbox\0padctl\0wake0\0wake1\0wake2\0wake3\0wake4\0wake5\0wake6";
		clocks = <0x02 0x10a 0x02 0x10b 0x02 0x10c 0x02 0x10d 0x02 0x10e 0x02 0x10f 0x02 0x110 0x02 0x111 0x02 0x113 0x02 0x115 0x02 0x67 0x02 0x0e 0x02 0x64>;
		clock-names = "xusb_hs_src\0xusb_host\0xusb_core_superspeed_clk\0xusb_falcon_src\0xusb_falcon_host_clk\0xusb_falcon_superspeed_clk\0xusb_fs_src\0xusb_fs_host_clk\0xusb_ss_src\0xusb_ss\0pll_u_480m\0clk_m\0pll_e";
		power-domains = <0x02 0x0c 0x02 0x0a>;
		power-domain-names = "xusb_host\0xusb_ss";
		nvidia,xusb-padctl = <0x2b7>;
		interconnects = <0x03 0x4a 0x03 0x4b>;
		interconnect-names = "dma-mem\0dma-mem";
		iommus = <0x4d 0x0e>;
		dma-coherent;
		status = "okay";
		phys = <0x2b8 0x2bb 0x2bc 0x2bd 0x2ba>;
		phy-names = "usb2-0\0usb2-1\0usb2-2\0usb3-0\0usb3-1";
		phandle = <0x467>;
	};

The result of flashing the board is that, during the first system boot, an error is displayed (bash: cannot set terminal process group (-1): Inappropriate ioctl for device), which prevents the system from booting successfully. However, this error exposes a bash-5.0# prompt.

insmod /lib/modules/5.10.104-tegra/kernel/drivers/mtd/mtd.ko
insmod /lib/modules/5.10.104-tegra/kernel/drivers/mtd/devices/qspi_mtd.ko
[    8.394171] qspi_mtd spi6.0: MX25U51279G (65536 Kbytes)
[    8.394303] qspi_mtd spi6.0: mtd .name = spi6.0, .size = 0x4000000 (64MiB) .e                                                                         rasesize = 0x00010000 (64KiB) .numeraseregions = 0
[    8.398649] 1 fixed-partitions partitions found on MTD device spi6.0
[    8.398821] Creating 1 MTD partitions on "spi6.0":
[    8.400010] 0x000000000000-0x000004000000 : "Whole_flash0"
insmod /lib/modules/5.10.104-tegra/kernel/drivers/spi/spi-tegra210-qspi.ko
insmod /lib/modules/5.10.104-tegra/kernel/drivers/hwmon/pwm-fan.ko
[    8.993822] mmc1: SDHCI controller on 3400000.sdhci [3400000.sdhci] using ADM                                                                         A 64-bit
No known UDC device found
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.0#

At that stage, if I connect a USB 3.1 SuperSpeed device, the system successfully detects it, as indicated by the dmesg output.

  111.373375] tegra-xusb 3610000.xhci: Firmware timestamp: 2021-12-01 05:27:10 UTC, Version: 80.03 release
es[  111.638168] usb 2-2: new SuperSpeed Gen 1 USB device number 2 using tegra-xusb
[  111.664179] usb 2-2: New USB device found, idVendor=0951, idProduct=1666, bcdDevice= 1.10
[  111.664428] usb 2-2: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[  111.664653] usb 2-2: Product: DataTraveler 3.0
[  111.664779] usb 2-2: Manufacturer: Kingston
[  111.664899] usb 2-2: SerialNumber: E0D55E6CE774164129450713
[  111.665944] usb-storage 2-2:1.0: USB Mass Storage device detected
[  111.667533] scsi host0: usb-storage 2-2:1.0
g[  112.673558] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 3.0 0000 PQ: 0 ANSI: 6
[  112.675369] sd 0:0:0:0: [sda] 60538881 512-byte logical blocks: (31.0 GB/28.9 GiB)
[  112.675711] sd 0:0:0:0: [sda] Write Protect is off
[  112.675980] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
 [  112.697353]  sda: sda1
[  112.698537] sd 0:0:0:0: [sda] Attached SCSI removable disk "

Then on the same port a USB2.0 only device

[  129.721834] usb 2-2: USB disconnect, device number 2
[  129.923155] tegra-xusb 3610000.xhci: entering ELPG done
[  135.410072] tegra-xusb 3610000.xhci: Firmware timestamp: 2021-12-01 05:27:10 UTC, Version: 80.03 release
[  135.645619] usb 1-1: new high-speed USB device number 3 using tegra-xusb
[  135.800771] usb 1-1: New USB device found, idVendor=8086, idProduct=0b3a, bcdDevice=50.c7
[  135.801022] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  135.801240] usb 1-1: Product: USB Camera
[  135.801438] usb 1-1: Manufacturer: USCam
[  135.810220] hid-generic 0003:8086:0B3A.0001: hiddev96,hidraw0: USB HID v1.10 Device [Intel(R) RealSense(TM) Depth Camera 435i Intel(R) RealSense(TM) Depth Camera 435i] on usb-3610000.xhci-1/input5
[  139.931325] usb 1-1: USB disconnect, device number 3
[  140.091011] tegra-xusb 3610000.xhci: entering ELPG done

It appears that the system is recognizing the USB devices properly initially; however, upon rebooting, the system successfully boots up to the Ubuntu login screen, but fails to recognize any devices connected to that particular USB port.

Hi,

Initrd flash process needs usb device mode enabled to flash. Mentioned in this document.

https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/SD/FlashingSupport.html?highlight=initrd%20flash#bringing-up-the-jetson-module-for-the-initrd-flash-tool

The document is talking about we need 2-phase flash to make it work.

Step 1, create an image. This image will contain the dtb which put usb2-0 as host mode.
Step 2, the flash script will use a board config to flash the image created from step 1. But this board config needs to enable usb2-0 as device mode.

That solves the problem, Thanks

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