Problem with creating a Device Tree for custom board with Xavier module using SDK 4.5.1

Under the SDK 4.5.1 we have populated the changes for the AGX Xavier module (32GB) which correspond to the custom board in the spreadsheet Jetson_AGX_Series_DevKit_Pinmux_Configuration (version 1.06) and generated the three dtsi files;

tegra19x-jetson_agx_devkit-gpio-default.dtsi
tegra19x-jetson_agx_devkit-pinmux.dtsi
tegra19x-jetson_agx_devkit-padvoltage-default.dtsi

From the above files we ran the script pinmux-dts2cfg.py using python3, reported the following ERRORs to stderr;

Ubuntu@os_build:~/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/kernel/pinmux/t19x$ python ./pinmux-dts2cfg.py --pinmux addr_info.txt gpio_addr_info.txt por_val.txt --mandatory_pinmux_file mandatory_pinmux.txt …/…/…/…/…/…/…/Downloads/DevKit_builds/pinmux_for\ adel-345/tegra19x-jetson_agx_devkit-pinmux.dtsi …/…/…/…/…/…/…/Downloads/DevKit_builds/pinmux_for\ adel-345/tegra19x-jetson_agx_devkit-gpio-default.dtsi 1.0 > custom_board.cfg
ERROR: pin eqos_rd3_pf1(0x00022470) field nvidia,lpbk(0x00000020) is not matching, val = 0x01 expected = 0x00
ERROR: pin eqos_sma_mdio_pf4(0x00022440) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin sdmmc4_cmd(0x00002440) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin soc_gpio10_pg6(0x00000410) field nvidia,tristate(0x00000010) is not matching, val = 0x01 expected = 0x00
ERROR: pin soc_gpio13_ph1(0x00000411) field nvidia,tristate(0x00000010) is not matching, val = 0x01 expected = 0x00
ERROR: pin gp_pwm2_px2(0x00000410) field nvidia,tristate(0x00000010) is not matching, val = 0x01 expected = 0x00
ERROR: pin gp_pwm3_px3(0x00000410) field nvidia,tristate(0x00000010) is not matching, val = 0x01 expected = 0x00
ERROR: pin uart2_tx_px4(0x00000400) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin uart2_rx_px5(0x00000450) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin uart2_rts_px6(0x00000400) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin uart2_cts_px7(0x00000450) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin usb_vbus_en0_pz1(0x00000404) field nvidia,enable-input(0x00000040) is not matching, val = 0x00 expected = 0x01
ERROR: pin uart1_tx_pr2(0x00000400) field nvidia,pull(0x0000000c) is not matching, val = 0x00 expected = 0x02
ERROR: pin pex_l0_clkreq_n_pk0(0x00000578) field nvidia,pull(0x0000000c) is not matching, val = 0x02 expected = 0x00
Ubuntu@os_build:~/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/kernel/pinmux/t19x$

NB: attempts have been made to fix these the above errors, but issues for uart2 and sdmmc4 could not be resolved by changing pin configurations with the Jetson_AGX_Series_DevKit_Pinmux_Configuration spreadsheet.

We also created a device tree dts file using the above dtsi files.

The top-level dts file create consists of the following dtsi files;

/*

  • Top level DTS file for CVM:P2888-0004 and CVB:P2822-0000/custom board.

*/
#include <dt-bindings/version.h>
#include “common/tegra194-p2888-0001-p2822-0000-common.dtsi”
#include “common/tegra194-p2822-camera-modules.dtsi”
#include “t19x-common-modules/tegra194-camera-plugin-manager.dtsi”
#include “t19x-common-modules/tegra19x-jetson_agx_devkit-gpio-default”
#include “t19x-common-modules/tegra19x-jetson_agx_devkit-padvoltage-default.dtsi”
#include “t19x-common-modules/tegra19x-jetson_agx_devkit-pinmux.dtsi”
#include “common/tegra19x_jetson_agx_devkit-usb_spi.dtsi”

The tegra19x_jetson_agx_devkit-usb_spi.dtsi contains device tree changes for usb which were identified by the HW engineers as being required.

The bootup of the Linux kernel gets into trouble when processing the changes in the gpio
within the generated tegra19x-jetson_agx_devkit-pinmux.dtsi in the device tree when bootup a standard Linux Image built for SDK 4.5.1.

We do get the Linux kernel to boot up on the Xavier module when attached to the DevKit or
custom board when the all GPIO changes are commented out.

We also can get USB3 working on UPHY11 (pins D13,D12 and H13,H12) on the DevKit, but not on the custom board when running the same image and device tree. The schematics for UPHY11 on the custom board match the schematics of the DevKit and should be operational.

hello SDBarad001,

please exclude below from your command line to check whether the error gone.
i.e. --mandatory_pinmux_file mandatory_pinmux.txt …

please also disassembler the dtb file into text file to examine you’re having correct device tree settings applied.
for example, $ dtc -I dtb -O dts -o output.txt tegra194-p2888-0001-p2822-0000.dtb
thanks

I excluded the option “–mandatory_pinmux_file mandatory_pinmux.txt” from the command and no errors were seen on stderr.

I have also attached a disassembled dtb file (custom-board.dts) is attached. It is the changes in the pinmux that cause the issues during the kernel boot. The introduction of changes in the device tree for gpio-defaults and padvoltage-default did not prevent the Linux kernel to boot on the custom-board or the DevKit. Commenting out the changes to the GPIO changes (corresponding to the generated pinmux changes within in the tegra19x-jetson_agx_devkit-pinmux.dtsi file ) in the pinmux@2430000 { } section of the device tree allows the Linux kernel to boot.
custom-board.dts (398.1 KB)