Device tree dtbo - how does it work?

Hi! I thought that I understand how device tree is being passed on Jetson devices but got surprised another time.
It seems impossible to update device tree overlay value without reflashing QSPI.

Orin NX, BSP 36.4, using extlinux.

In the device tree overlay, we have this value:

$ fdtdump /boot/tegra234-diamond-orb.dtbo | grep line_
                            line_length = "2800";

But in /proc it’s 2880 (previous value before reflash)

$ cat /proc/device-tree/bus@0/cam_i2cmux/i2c@3/rbpcv2_ox05b1s_a@24/mode0/line_length 
2880

Files in /boot

$ ls /boot -l
total 68644
-rw-r--r-- 1 root      root 44126720 Jan  1  1970 Image
-rw-r--r-- 1 root      root  8494950 Jan  1  1970 System.map-5.15.148
-rw-r--r-- 1 root      root   256485 Jan  1  1970 config-5.15.148
drwxr-xr-x 1 root root     4096 Jan  1  1970 extlinux
-rw-r--r-- 1 root      root 17531269 Jan  1  1970 initrd.cpio.gz
-rw-r--r-- 1 root      root    17535 Jul 10 11:25 tegra234-diamond-orb.dtbo
-rw-r--r-- 1 root      root   249601 Jan  1  1970 tegra234-p3768-0000+p3767-0000-nv.dtb

extlinux.conf:

$ sudo cat /boot/extlinux/extlinux.conf 
TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      FDT /boot/tegra234-p3768-0000+p3767-0000-nv.dtb
      OVERLAYS /boot/tegra234-diamond-orb.dtbo
      INITRD /boot/initrd.cpio.gz
      APPEND root=/dev/mapper/root net.ifnames=0 ${cbootargs}

I’m aware there is a “bootloader dtb” that’s picked from Linux_for_Tegra/kernel/dtb/tegra234-p3768-0000+p3767-0000-nv.dtb, copied to Linux_for_Tegra/bootloader/ and used as UEFI dtb. And that having any value in this dtb will make it propagate to kernel and cause clash.
But this value cam_i2cmux/i2c@3/rbpcv2_ox05b1s_a@24/mode0/line_length is NOT in the bootloader dtb. It is ONLY in the .dtbo file which is not used by the bootloader.

Questions:

  1. Why the value seen by kernel is different from the value in .dtbo file?
  2. How to update it?

Hi filip.kubicz,

Are you using the devkit or custom board for Orin NX?

Please refer to DTB Support to know how device tree be loaded.

If you want to load dtb from file, the FDT entry is expected to be specified in extlinux.conf.
Is your issue about the configuration in overlay dtbo does not take effect after you’ve added above 2 lines?

Hi @KevinFFF , thank you for reply.

In this case, the problem was that in our project, the device tree .dtb and .dtbo was moved from rootfs to separate partition (A_BOOT/B_BOOT) and I had to mount this partition in order to modify it during development.

Thanks!

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