The dts does not take effect

Hi All:
I use 36.3 and make the following changes.

I customized the dts myself, and modified it directly based on the tegra234-p3737-0000+p3701-0000.dts file.

Why does it seem that the dts does not take effect?

device:

q@q:/boot/dtb$ fdtdump  kernel_tegra234-p3737-0000+p3701-0005-nv.dtb |grep 9546

**** fdtdump is a low-level debugging tool, not meant for general use.
**** If you want to decompile a dtb, you probably want
****     dtc -I dtb -O dts <filename>

            tca9546@70 {
                compatible = "nxp,pca9546";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/cam_0@1b";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/cam_1@1c";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@1/cam_2@1b";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@1/cam_3@1c";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@2/cam_4@1b";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@2/cam_5@1c";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@3/cam_6@1b";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@3/cam_7@1c";
        cam_out0 = "/bus@0/i2c@3180000/tca9546@70/i2c@0/cam_0@1b/ports/port@0/endpoint";
        cam_out1 = "/bus@0/i2c@3180000/tca9546@70/i2c@0/cam_1@1c/ports/port@0/endpoint";
        dser_0 = "/bus@0/i2c@3180000/tca9546@70/i2c@0/max9296_0@48";
        ser_prim_0 = "/bus@0/i2c@3180000/tca9546@70/i2c@0/max9295_prim_0@40";
        ser_0 = "/bus@0/i2c@3180000/tca9546@70/i2c@0/max9295_0@60";
        ser_1 = "/bus@0/i2c@3180000/tca9546@70/i2c@0/max9295_1@62";
        cam_out2 = "/bus@0/i2c@3180000/tca9546@70/i2c@1/cam_2@1b/ports/port@0/endpoint";
        cam_out3 = "/bus@0/i2c@3180000/tca9546@70/i2c@1/cam_3@1c/ports/port@0/endpoint";
        dser_1 = "/bus@0/i2c@3180000/tca9546@70/i2c@1/max9296_1@48";
        ser_prim_1 = "/bus@0/i2c@3180000/tca9546@70/i2c@1/max9295_prim_1@40";
        ser_2 = "/bus@0/i2c@3180000/tca9546@70/i2c@1/max9295_2@60";
        ser_3 = "/bus@0/i2c@3180000/tca9546@70/i2c@1/max9295_3@62";
        cam_out4 = "/bus@0/i2c@3180000/tca9546@70/i2c@2/cam_4@1b/ports/port@0/endpoint";
        cam_out5 = "/bus@0/i2c@3180000/tca9546@70/i2c@2/cam_5@1c/ports/port@0/endpoint";
        dser_2 = "/bus@0/i2c@3180000/tca9546@70/i2c@2/max9296_2@48";
        ser_prim_2 = "/bus@0/i2c@3180000/tca9546@70/i2c@2/max9295_prim_2@40";
        ser_4 = "/bus@0/i2c@3180000/tca9546@70/i2c@2/max9295_4@60";
        ser_5 = "/bus@0/i2c@3180000/tca9546@70/i2c@2/max9295_5@62";
        cam_out6 = "/bus@0/i2c@3180000/tca9546@70/i2c@3/cam_6@1b/ports/port@0/endpoint";
        cam_out7 = "/bus@0/i2c@3180000/tca9546@70/i2c@3/cam_7@1c/ports/port@0/endpoint";
        dser_3 = "/bus@0/i2c@3180000/tca9546@70/i2c@3/max9296_3@48";
        ser_prim_3 = "/bus@0/i2c@3180000/tca9546@70/i2c@3/max9295_prim_3@40";
        ser_6 = "/bus@0/i2c@3180000/tca9546@70/i2c@3/max9295_6@60";
        ser_7 = "/bus@0/i2c@3180000/tca9546@70/i2c@3/max9295_7@62";
q@q:/boot/dtb$

root@q:/sys/firmware/devicetree/base/bus@0/i2c@3180000# ls
'#address-cells'          clock-frequency   compatible     dmas         name            reg          '#size-cells'   tca9546@70
 assigned-clock-parents   clock-names       dma-coherent   interrupts   phandle         reset-names   status         tca9548@70
 assigned-clocks          clocks            dma-names      iommus       prod-settings   resets        tca6408@21     tca9548@77

root@q:/sys/firmware/devicetree/base/bus@0/i2c@3180000# more /boot/extlinux/extlinux.conf
TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=PARTUUID=a163bb8f-966a-473d-915a-b1e6b825c628 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0
,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0

This change also does not work, and the phenomenon is the same as above.

root@q:~$ more /boot/extlinux/extlinux.conf
TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
	  FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0005-nv.dtb
      INITRD /boot/initrd
      APPEND ${cbootargs} root=PARTUUID=5e370ecd-1e9f-4a30-a878-71897146a036 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware
fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0

dts:
dts.txt (392.8 KB)
dmesg:
dmesg.txt (64.8 KB)

Better checking if the overlay causes that in your board config.

OVERLAY_DTB_FILE="L4TConfiguration.dtbo,tegra234-p3737-0000+p3701-0000-dynamic.dtbo,tegra234-carveouts.dtbo,tegra-optee.dtbo,tegra234-p3737-camera-dual-imx274-overlay.dtbo,tegra234-p3737-camera-e3331-overlay.dtbo,tegra234-p3737-camera-e3333-overlay.dtbo,tegra234-p3737-camera-imx185-overlay.dtbo";

You can try other change in the device tree to see if this is really “FDT does not take effect” or just some specific node could not be removed.

In which file does OVERLAY_DTB_FILE appear?

As I already told, your board config file.

That one you used to flash the board.

w@w:~/flash/jp6.3/Linux_for_Tegra$ lsusb | grep NVIDIA
Bus 001 Device 112: ID 0955:7023 NVIDIA Corp.

w@w:~/flash/jp6.3/Linux_for_Tegra$ more jetson-agx-orin-devkit.conf |grep OVERLAY_DTB_FILE
OVERLAY_DTB_FILE="L4TConfiguration.dtbo,tegra234-p3737-0000+p3701-0000-dynamic.dtbo,tegra234-carveouts.dtbo,tegra-optee.dtbo";
w@w:~/flash/jp6.3/Linux_for_Tegra$

I have modified the above file and deleted the corresponding camera dts, but the dts still does not take effect.

我這邊用中文解釋一下

你可以不用太執著在camera的東西. 你想要證明dts沒有被換掉 , 就直接在device tree裡面隨便加一段字串看一下這字串有沒有出現.

這個測試可以先做一下判斷到底是有其他東西加了camera的內容 還是你的dts真的沒有被更新到…

Hi,
我想直接使用下面方式,配置camera,而不是通过overlay的方式。

對, 所以你有要試我剛才說的嗎? 先把dts讀到然後再處理你想要做的camera東西可以嗎?

另外也跟你說明一下… 到目前為止你完全沒有說到你到底想加什麼東西進dts.

你只貼了一個截圖. 那個fg96-8ch-8rgb.dtsi的內容是什麼看起來也沒有提到…

我通过下面方式读取dts:

q@q:~$ dtc -I dtb -O dts -o dts.txt /boot/dtb/kernel_tegra234-p3737-0000+p3701-0005-nv.dtb

发现这里面的内容已经是我想要的了。但是查看dmesg日志,确实没有有关对应的i2c信息,比如,pca9546的相关日志。见最上面我提供的日志。我指定dts也是这个现象。

ok 那請問現在的問題是? 到底是什麼東西沒有出來?

camera.zip (5.8 KB)

内容如上。

我把問題講的簡單一點好了…請問你的/proc/device-tree底下的東西到底有沒有符合你改的?

如果沒有, 是什麼部分不一樣…?

3180000下面没有任何设备,没有9546的信息。

信息是这样的:

我的刷机命令如下:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml --showlogs --network usb0 jetson-agx-orin-devkit internal

不是有嗎…? tca9546@70…

OK,我检查一下,添加日志验证一下!

我再澄清一下…這一條的topic只有管你的device tree讀不讀的到而已.

你的內容有沒有寫對不在我們這條討論的範圍… 如果driver的行為有問題/不如預期, 請你開一個新的討論.

OK,了解,谢谢!

1 Like

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