Help with Jetpack 5 and Orin PinMux

HI Folks -

I am having trouble implementing the new PINMUX configuration. I have tried to follow the developers guide and the adaptation manual but I can’t seem to get the PINMUX configuration into the BCT.

Working with the Orin DevKit, We are trying to set GPIO8 and GPIO9 aka PBB.00 and PBB.01 to 1 on boot. To do this, we:

  1. generate a new set of 3 DTSI files using the spreadsheet Jetson_AGX_Orin_Pinmux_Config_Template_082422.xlsm
  2. copy the files to <l4t_top>/bootloader/BCT/t186ref
  3. Make a new board file which is a copy of the jetson-agx-orin-devkit.conf
  4. modify the board file to include:
source "${LDK_DIR}/p3701.conf.common";
PINMUX_CONFIG="Orin-jetson_agx_orin_new-pinmux.dtsi";
PMC_CONFIG="Orin-jetson_agx_orin_new-padvoltage-default.dtsi";

I think tegrabct should pick up the new DTSI files and change pins accordingly. However, there is no evidence in the flash logs or anywhere else that a new M1BCT is being built.

Is this anywhere close to the correct procedure? How do we get tegrabct_v2 to pick up the right files?

Thanks for your help!

hello waldman,

you should copy the generated pinmux.dtsi file to the <l4t_top>/bootloader/t186ref/BCT/ directory,
and, the generated gpio.dtsi file copy to <l4t_top>/bootloader/ directory.
after that,
you should perform fully image flashing, and please check the messages to ensure correct file has applied.
for example, ./tegraflash.py ... --pinmux_config Orin-jetson_agx_orin_new-pinmux.dtsi

JerryChang - thank you for the input.

We tried copying the files to the locations you mention and it still didn’t work. The problem – we think – is that we are trying to make a new board configuration alongside the standard devkit configuration. That is, we don’t want to copy over the standard tegra234-mb1-bct-pinmux-p3701-0000-a04.dtsi file. If we had copied the files to that location and overwritten the default files, it probably would work fine.

We finally got it to work without modifying the standard files, once we realized that p3701.conf.common defines functions that are then evaluated in flash.sh. Before, even when we wrote new PINMUX_CONFIG and new PMC_CONFIG variables in our configuration file, those variables were over-written by the process_chip_sku_version function call during the flash.sh execution.

To fix the problem, we further modified our board file to set variables and redefine the function. The new function does the same thing as the old function but doesn’t set PINMUX or PMC variables. We want to make sure that the PINMUX and PMC variables we set are the ones that get used. regardless of SKU or BOARD_FAB.

Dear JerryChang

Could you tell us which variable can be set for the gpio.dtsi? PINMUX_CONFIG and PMC_CONFIG seem to be for the pinmux.dtsi and padvoltage.dtsi file.
Thank you.

@sevm89,

The gpio.dtsi file gets pulled in as an include. For instance:

Linux_for_Tegra/bootloader/t186ref/BCT# head tegra234-mb1-bct-pinmux-p3701-0000.dtsi 

/*This dtsi file was generated by p3737_concord_cvm_a01.xlsm Revision: 118 */
/*
 * Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 */

/dts-v1/;
#include "pinctrl-tegra.h"
#include "tegra234-mb1-bct-gpio-p3701-0000.dtsi"

So all you have to do is put it in a place where the compiler can find it. In this case, you put it in bootloader. If you generate the file with the excel macro, the names are all OK. If you change the names after generation, you will have to change the include statement as well.

@waldman
Thank you very much.