De-mystifying platform adaptation process and terms for Jetson Xavier NX

Thanks for the reply.

I have read these documents, but still, the meaning of each bits of ODMDATA is unexplained.
The device tree directory /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data shows nodes from device-tree expectedly as a result of ODMDATA value, but the question remains: how to know which bits of the ODMDATA parameter (such as 0xB8190000) to change to get certain changes in the mentioned device-tree directory? I.e. what are the functions of each of these 32 bits:
1011 1000 0001 1001 0000 0000 0000 0000 (0xB8190000 as binary number)

File Tegra_Linux_Driver_Package_AGX_Xavier_Adaptation_Guide.pdf explains some of the bits for AGX Xavier, but no such table is found for the Xavier NX.

The following thread indicates that the bit 13 (mask 0x1000) stands for endpoint mode for C5 controller.
So, now only 31 bits to figure out :) Can you supply this data or point, where it can be found?

This explains the already well-documented dtsi file creation process, but the unanswered question is, in which cases the device tree sources are needed to be changed and recompiled?

Here’s an example:
If I change the bit 13 of ODMDATA from 0 to 1 (ODMDATA=0xB8191000), after complete reflashing the device and running oem-config, the data in /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data can be seen changed representing the new ODMDATA value, for example:

  • node disable-pcie-c5-endpoint = <0x1> is removed
  • node enable-pcie-c5-endpoint = <0x1> is added.
  • and some other related changes in the device tree can be seen.

The only change made to the flashing process was changing one bit in the ODMDATA value. No manual changing of device tree sources was needed.

Now, what mechanism did the change? I can figure out at least these options:

  1. bootloader manipulated the device tree that it then passed to the kernel?
  2. flash.sh manipulated the device tree that it then flashed to kernel to use?
  3. oem-config manipulated the device tree during the first boot?

To affect, this change seem to happen with complete reflashing of the device (cannot say, which partitions exactly needed to be flashed, but MB1_BCT or kernel-dtb partitions did not affect, and running oem-config was not needed). Could you explain, what really happens here?

If I now change the pinmux and pad-voltage configurations (tegra19x-mb1-pinmux-p3668-a01.cfg and tegra19x-mb1-padvoltage-p3668-a01.cfg files), do I need to apply and compile the pinmux and pad-voltage dtsi-files to the kernel device tree or will the changes be applied there by the bootloader/oem-config/flash.sh or whatever did the previous change?