All,
I wanted to take a moment to quickly (hopefully) summarize my understanding of the pinmux process for the Tegra TX2 and have people comment back.
The overall pinmux and padvoltage configuration is achieved through a cascading / overwriting process where changes on the first step can be overwritten by the last dtb load. For example:
Power On ----> 1. Boot Room (MB1) ----> 2. uBoot DTB ----> 3. kernel DTB
-
From reading NVIDIA Tegra Linux Driver Package documentation the first pinmux configurations are achieved through the early stage boot loaders, specifically the MB1. The method for modifying pinmux at this stage is to modify an excel spreadsheet, use an excel macro to generate a DTSI file, then use python in Linux to convert the DTSI file to a pinmux.cfg file. This pinmux cfg file is copied to a particular directory which a flash tool can be used to flash it to the Tegra in recovery mode.
-
Uboot itself has a DTB file that it can load and configure the pinmux as needed. I have not dug much into this option.
-
Before Uboot goes away it will load a DTB file from the boot partition based on it’s findings in extlinux.conf under the /boot folder in rootfs. In extlinux.conf you can specify a line with FDT and the path to a .dtb file. Uboot loads this DTB and configures hardware peripherals including pinmux configurations.
In my past I have only messed with #3 for the TX1. I wanted to put this out there and have the experts pick it apart or add to.