Issues Applying Custom Pinmux DTBO on Jetson Orin Nano (L4T 35.3.1 / JetPack 5.1.1)

Hi @KevinFFF,

Quick update:

  • SPI is working now. The root cause was pin direction: I had SCK configured as input. Once I set SCK/MOSI/CS as outputs and MISO as input in the pinmux, transfers started working at least on the logic analyzer. I had assumed the driver would auto-set directions when the SPI function is selected (as on other platforms), but that doesn’t seem to be the case here.

Remaining issue – extlinux overlay not applied:
I’m trying to disable cam_i2cmux at boot (it grabs GPIO331). I’m pointing to my DTB and adding an overlay, but it’s not taking effect.

/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
       FDT /boot/dtb/kernel_tegra234-p3767-0003-p3768-0000-a0_custom_rec.dtb
       OVERLAYS /boot/overlays/cam_i2cmux-disable.dtbo
       APPEND ${cbootargs} extdtb=TEST_P3767_A0 testflag=hello
 
 LABEL JetsonIO
         MENU LABEL Custom Header Config: <HDR40 User Custom [2024-06-17-224303]>
         LINUX /boot/Image
         FDT /boot/kernel_tegra234-p3767-0003-p3768-0000-a0-user-custom.dtb
         INITRD /boot/initrd
         APPEND ${cbootargs} extdtb=TEST_P3767_A0 testflag=hello

/boot/overlays/cam_i2cmux-disable.dtbo decompiled:

 **** 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>
 
 /dts-v1/;
 // magic:               0xd00dfeed
 // totalsize:           0xda (218)
 // off_dt_struct:       0x38
 // off_dt_strings:      0xbc
 // off_mem_rsvmap:      0x28
 // version:             17
// last_comp_version:   16
 // boot_cpuid_phys:     0x0
 // size_dt_strings:     0x1e
 // size_dt_struct:      0x84
 
 / {
     compatible = "nvidia,tegra234";
     fragment@0 {
         target-path = "/cam_i2cmux";
         __overlay__ {
             status = "disabled";
         };
     };
 };

But after reboot the node /proc/device-tree/cam_i2cmux is still present and active.

Questions:

  1. Is OVERLAYS supported by UEFI on R35.3.1? If yes, where can I see logs confirming it parsed/applied the .dtbo?
  2. Any required naming/header specifics for Orin overlays beyond /plugin/ and compatible = "nvidia,tegra234"?
  3. If OVERLAYS isn’t honored on R35.3.1, what’s the recommended way to disable cam_i2cmux?
  4. How to disable “special” ports??. The spreadsheet only generates pinmux/gpio/padvoltage .dtsi. It doesn’t touch camera/I²C muxes (e.g. cam_i2cmux / i2c-mux-gpio).

Thanks for your support!

I’ve not tried this with r35.3.1. We add the overlay with r36.x
Maybe you can check the full serial console log to confirm if it has been applied correctly.

Have you tried to decompile this DTB and disable cam_i2cmux node directly and reboot to check?