Jetson Orin NX Pinmux Boot Overwrite

Hello NVIDIA Admin,

I have a board that I’m designing that leverages the gpio functionality of the system on boot to power up the external NVME drive that holds the rootfs of jetpack 5.1.3.

I have wired the circuit to utilize gpio07 pin 206 to power the system when enabled as HIGH. For testing I have a way to manually provide power to the system if the gpio does not boot properly.

I have since flashed it with these files included on this post but it seems that the pin will manually overwrite itself when UEFI kills itself during the boot cycle of the module. I found this by probing the connection with a multi-meter.

As a test to see if the pinmux was taken during the flash I wired an LED to pin 228 gpio13 to see if my changes took affect and it did not during the boot cycle. I did notice during the boot that the led did turn on until the UEFI killed itself… Like I mentioned in the previous statement.

I was able to toggle the led during runtime with: gpiofind PH.00 , then gpioset --mode=wait 0 43=1 which is interesting since then that would mean that the pin was set to an output state and not input that I was set by default in the original pinmux.

Any help would be appreciated!

dtsi (12.4 KB)

Hi anthonyseymour575,

It seems you are using the custom carrier board with Jetpack 5.1.3.

Is your issue about “pin 228 gpio 13” controlled during boot up?

Do you have the devkit to verify if there’s the same issue?

gpioset command may change the GPIO direction in pinmux.
Please use sysfs to check its default direction.

The issue is that I have an electrical circuit that needs to be HIGH to turn on the nvme drive I have for the ORIN system. That is controlled by pin 206 GPIO07.

When the system boots I have observed that the system outputs 3.3v till the UEFI kills itself and the ORIN goes into runtime thus killing the storage connection to the drive since It wont have power.

As a test I have wired an LED to pin 228 GPIO13 to see if the led would remain on for the duration of both boot and runtime and it remained on for boot but after the system went to runtime the led turned off.

Is there something Im missing with this? Do my files reflect the changes required for this to work?

You have to check if any drivers use/request/control the pin no matter pin 206 or pin228.
If no one use the pin, then it should act as how it be configured in pinmux.

Let’s check pin 228 first, it is configured as following by default. (Input/Pull Down)

You can configure it as following:

After applying the change, you can check its state after boot up.

$ sudo su
# cd /sys/class/gpio
# echo 391 > export
# cat PH.00/direction
# cat PH.00/value

Ok this is it listed below:

root@nvidia-desktop:/home/nvidia# cd /sys/class/gpio/
root@nvidia-desktop:/sys/class/gpio# echo 391 > export
root@nvidia-desktop:/sys/class/gpio# cat PH.00/direction 
root@nvidia-desktop:/sys/class/gpio# cat PH.00/value 
root@nvidia-desktop:/sys/class/gpio# cat PG.06/value                                                     
cat: PG.06/value: No such file or directory
root@nvidia-desktop:/sys/class/gpio# cat PG

The LED is on but GPIO07 is still not functional. It does not seem like its being used by anything. This was the same flash that I did with the changes from the start of our conversation…06/

Please export the pin number before using it.

I’ve shared the example for GPIO13, you can do the similar configuration for GPIO07.
Please run cat /sys/kernel/debug/gpio to check if it is used by any driver.