OrinNX 8G 进行修改设备树适配自定义硬件板

我需要修改设备树来适配自定义的硬件版,新的硬件板有 2xUSB3.0 1xUSB2.0 2xUART。现在我应该从那里开始,有具体的修改方法没有?
以下是电路原理图:
Uploading: Snipaste_2023-10-13_17-37-41.png…
Snipaste_2023-10-13_17-42-45

關於usb的device tree請參考
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/HR/JetsonModuleAdaptationAndBringUp/JetsonAgxOrinSeries.html?highlight=universal#porting-the-universal-serial-bus

坦白說你這種線路圖完全沒有提供有用資訊 只是把jetson這端的線標出來… 接去哪,怎麼接 全部沒有提供…

那我补充一下相关的电路图



Please refer to Jetson Orin NX Series and Orin Nano Series Design Guide to tell which option you are using and list the combination of USB2 + USBSS.

个人水平有限,需要您解释一下这个图,可以嘛?

  1. Which option of #1/#2/#3 in Table 7-3 did you use in your schematic?
  2. What’s the combination of your USB2.0 port + USB3.0 port?

Option #1 #2 #3 以及 P0 P1 P2 是什么意思?

ORIN NX 不是有 3个USB2.0 3个USB3.0,为什么设备文件中有4个


You can ignore usb3-3. USB3-0~USB3-2 are mapping to the P0~P2 mentioned by above.

之前没有接触过设备树,所以有许多不大懂的地方,还望见谅。

怎么映射呢,是修改配置文件嘛?像下图这样?


下面是我修改的设备树文件
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 = "okay";
					#phy-cells = <0x00>;
					nvidia,function = "xusb";
				};

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

	ports {

		usb2-0 {
			status = "okay";
			mode = "otg";
			vbus-supply = <0x2b4>;
			usb-role-switch;

			port {

				endpoint {
					remote-endpoint = <0x2b5>;
					phandle = <0x67>;
				};
			};
		};

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

		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 = "okay";								
			nvidia,usb2-companion = <0x01>;
		};

		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 = "okay";
	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 = "okay";
	charger-detector = <0x2b9>;
	avdd-usb-supply = <0x2b3>;
	phys = <0x2b8>;
	phy-names = "usb2-0";
	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>,<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-2}>;
	phy-names = "usb2-0\0usb2-1\0usb2-2\0usb3-0\0usb3-1\0usb3-2";
	phandle = <0x467>;
};

I’m closing this topic due to there is no update from you for a period, assuming this issue was resolved.
If still need the support, please open a new topic. Thanks

Sorry for the late response, have you managed to get issue resolved or still need the support? Thanks