Correct PinMux Spreadsheet to use

I have seen in various form posts that there are issues with the Jetson Nano pinmux datasheet.

I am on LT r32.3.1, but the downloads for pinmux 1.01 say that it works only with r32.2… but I don’t see any for r32.3.1?

Also, what is the difference for the Nano vs Nano Dev kit ones?

For others: The non-developer kit one seems best to use, as it claims to also be compatible with the other one, and claims to work on developer kits.

Open issues:

  • I am still unsure given the assumption of 32.2.x notated, whereas the recommendation is to be on 32.3.x now.
  • I am seeing the DTSI exports, even with defaults, changes many things from the versions in the source tree (p3450-porg…a02). Without changing anything in the spreadsheet, there should be – I presume – no changes… this concerns me as it’s unclear what/why they change.

Hi,

There are two kinds of nano modules.
If you are using devkit module, then you can only use the pinmux spreadsheet of devkit version.

The non-devkit version is for those who have their own custom carrier board and their module is the production module.

  • I am still unsure given the assumption of 32.2.x notated, whereas the recommendation is to be on 32.3.x now.

You could use the r32.2.x version on 32.3 release first. Please let us know if you hit any issue.

*I am seeing the DTSI exports, even with defaults, changes many things from the versions in the source tree (p3450-porg…a02). Without changing anything in the spreadsheet, there should be – I presume – no changes… this concerns me as it’s unclear what/why they change.

What is “p3450-porg…a02”? Is that pinmux from uboot? Actually, after rel-32.3, there is no need to modify pinmux in uboot. The only pinmux setting is in dtb.

Thanks @WayneWWW.

The note in the module pinmux (non-devkit version) specifically says it works on both:

Miscellaneous changes to align default configurations in this Jetson Nano module pinmux spreadsheet to match developer kit usage, e.g., configured SDMMC1 for microSD card slot on developer kit module.  This pinmux spreadsheet will work for any Jetson Nano module, whether production module or devkit module, regardless of PCB revision.			

Is this incorrect in the documentation?

I am seeing the spreadsheet defines all the same pins as what is checked in, but has significant changes in values from the original. I have written a diff script to help show these, and here are the differences. This is the difference between the tegra210 pinmux for the 0000-b00.dts file in the source tree (as I am using a DevKit module currently till it works at all, and then I’ll move to my own carrier board that is waiting) and an export of the pinmux from a totally non-modified NV_Jetson_Nano_Module_Pinmux_Config_Template.xlsm file. I would expect no differences, yet there are significant ones as you will see:

nfc_int_pi1
	nvidia,tristate     :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
aud_mclk_pbb0
	nvidia,pull         :	TEGRA_PIN_PULL_DOWN 	!=	TEGRA_PIN_PULL_UP   
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi2_mosi_pb4
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi2_miso_pb5
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi2_sck_pb6
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi2_cs0_pb7
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi2_cs1_pdd0
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
pe6
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
cam_af_en_ps5
	nvidia,pull         :	TEGRA_PIN_PULL_DOWN 	!=	TEGRA_PIN_PULL_UP   
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
lcd_te_py2
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
lcd_bl_pwm_pv0
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
pz0
	nvidia,pull         :	TEGRA_PIN_PULL_DOWN 	!=	TEGRA_PIN_PULL_UP   
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
dap4_din_pj5
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
dap4_dout_pj6
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
dap4_fs_pj4
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
dap4_sclk_pj7
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
uart2_rts_pg2
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
uart2_cts_pg3
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi1_mosi_pc0
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi1_miso_pc1
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi1_sck_pc2
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi1_cs0_pc3
	nvidia,pull         :	TEGRA_PIN_PULL_DOWN 	!=	TEGRA_PIN_PULL_UP   
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    
spi1_cs1_pc4
	nvidia,pull         :	TEGRA_PIN_PULL_DOWN 	!=	TEGRA_PIN_PULL_UP   
	nvidia,tristate     :	TEGRA_PIN_ENABLE    	!=	TEGRA_PIN_DISABLE   
	nvidia,enable-input :	TEGRA_PIN_DISABLE   	!=	TEGRA_PIN_ENABLE    

Noted that we don’t need to modify uBoot pinmux anymore, and I will not update and create the .h file for that. Thanks for this info.

1 Like

I used my diff tool to minimize the differences by editing the standard spreadsheet to better match the original a02.dts file. The only thing I don’t know how to change to make match is nvidia,tristate as the original DTS often has that set to TEGRA_PIN_ENABLE and the spreadsheet exports as disable on a number of pins.

1 Like