Xavier NX changing pin function

I’m a littile bit confused about how should I modify a pin configuration.
I’m using Xavier NX development kit, and I want to use 2 SPI interfaces by changing the pin configuration from GPIO to SPI.
What have I done so far is:

  1. Edited the xlsm file.
  2. Generated 3 dtsi files from the xlsm file.
  3. Created 2 cfg files (one for PINMUX and GPIO and another for PAD VOLTAGES) according to the readme file in Linux_for_Tegra/kernel/pinmux/t19x

I saw this guide https://docs.nvidia.com/jetson/l4t/#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/mb1_platform_config_xavier.html#wwpID0E0H50HA
But it’s not so clear how to continue.

I have a few questions regarding the next steps:

  1. What should I do with the cfg files? Should they have a specific name?
  2. What should I do with the 3 dtsi files I’ve generated from the xlsm file?
  3. How should I generate the new dtb file? I’m familiar with the dtc tool to compile the device tree files but should I somehow include the generated dtsi files into the directory of the dts sources located in directory Linux_for_Tegra/sources/hardware/nvidia/platform/t19x/jakku/kernel-dts
    and after that run the dtc?
  4. How should I flash cfg files?
    a. Will the following command flash the cfg files to the board?
    sudo ./flash.sh -r -k bpmp-fw-dtb jetson-xavier-nx-devkit mmcblk0p1
    b. If I run from nvme should it be as following?
    sudo ./flash.sh -r -k bpmp-fw-dtb jetson-xavier-nx-devkit nvme0n1
    I would like to keep the rootfs contant and not to do full flash.
  5. Should I change anything in the device tree sources in order to change pin function?

Please help me to understand this issue


hello boris16,

you should copy those dtsi file to your local x86 host machine and re-compile the device tree blob (i.e. *.dtb)
the generated *.cfg file used by the flashing process, you need to perform the full flash to apply the changes correctly.

Hi JerryChang,

Thanks for the reply.
I still have few questions:

Which names should I give to cfg and dtsi files?

Should I copy the dtsi files to Linux_for_Tegra/sources/hardware/nvidia/platform/t19x/jakku/kernel-dts/common directory? And how to be sure that those files are compiled, should I edit one of the dts files and include my dtsi files there?

Thanks for your help

hello boris16,

please check the flash messages for the actual binary and configure files that burning to the target.
for example,

[   4.0498 ] Parsing config file :tegra19x-mb1-pinmux-p3668-a01.cfg
[ 464.1538 ] Writing partition kernel-dtb with tegra194-p3668-all-p3509-0000_sigheader.dtb.encrypt
[ 464.1617 ] [................................................] 100%
1 Like

Hi Jerry,
I still didn’t understand the whole workflow of changing the pinmux.
I saw the Pinmux Changes section in Nvidia guid:

But it is not clear what to do with the generated dtsi and cfg files.

dtsi sources are located in directory
How should I include the generated dtsi files?

Should I copy the cfg files into the following directory?
Should the generated cfg files have a specific name or they should replace some of the existing files?


please check this thread, Custom carrier board with NX module for reference, thanks

Thanks, I still don’t understand how to integrate the generated dtsi file into the device tree sources


hello boris16,

please access Jetson Linux | NVIDIA Developer and download the BSP sources package.
you should also refer to developer guide for Building the NVIDIA Kernel.

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