Change device tree

Hello, I am using the Jetson Orin Nano with Ubuntu 20.04. I want to try modifying my device tree, and I have looked at many tutorials, but none of them provide a practical example.

The device tree I am using is:

root@ubuntu:/boot/dtb# ls
kernel_tegra234-p3767-0003-p3768-0000-a0.dtb


pwd: kernel_src/hardware/nvidia/platform/t23x/p3768/kernel-dts/tegra234-p3767-0003-p3768-0000-a0.dts
/dts-v1/;

include “tegra234-p3767-0000-p3768-0000-a0.dts”
include <t234-common-cvm/tegra234-cpufreq-pair-cooling.dtsi>
include <t234-common-cvm/tegra234-p3767-pcie-max-speed-gen3.dtsi>

/ {
nvidia,dtsfilename = FILE;
nvidia,dtbbuildtime = DATE, TIME;
compatible = “nvidia,p3768-0000+p3767-0003”, “nvidia,p3768-0000+p3767-0005”,
“nvidia,p3767-0003”, “nvidia,p3767-0005”,
“nvidia,tegra234”, “nvidia,tegra23x”;
model = “NVIDIA Orin Nano Developer Kit”;

host1x@13e00000 {
	nvdla0@15880000 {
		status = "disabled";
	};

	nvdla1@158c0000 {
		status = "disabled";
	};

	pva0 {
		status = "disabled";
	};
};

    //my addition
i2c@3160000 {
	status = "disabled";
};

};

In the kernel source, I tried to modify this DTS file and compiled the device tree using make dtbs. The i2c@3160000 node is enabled by default, and I tried to disable this node. However, after recompiling and replacing the file in the /boot/dtb path, when I used the fdtdump command on kernel_tegra234-p3767-0003-p3768-0000-a0.dtb, I see that this node is indeed disabled. Nevertheless, the i2c@3160000 node still appears in /dev and /proc/device-tree, and it remains enabled.

If there is anything else I need to do, please give me suggestions, as the existing references do not meet my needs.

Hi,

If you are using rel-36 based release, then default device tree running on the board is not from /boot/dtb. Thus, if you put your new dtb to this location, it won’t take effect by default.

You could put your new dtb to Linux_for_Tegra/kernel/dtb and reflash the whole board and then it will take effect.

If you think this waste too much time, add “FDT” field in /boot/extlinux/extlinux.conf on your Jetson and with the location of where you want to load the dtb, then this will make default DTB read from the path you need. Then you replace the file in that path.