GPIO Pull-Up Configuration Not Taking Effect on Jetson Orin

We’re configuring GPIO01 using devmem on Jetson Orin. According to the TRM, writing 0x008 to 0x02430068 should enable the default pull-up:
sudo busybox devmem 0x02430068 w 0x008
However, the GPIO does not default to high as expected. We’d like to confirm if this is the correct approach or if any additional configuration is required.
The model is “Jetson Orin NX 16G”

Thanks.

*** Please note that this reply is generated by LLM automatically ***

To address your question, we need to delve into the specifics of GPIO configuration on the Jetson Orin platform, specifically focusing on GPIO01 and the approach you’ve taken as per the Technical Reference Manual (TRM).

Understanding GPIO Configuration on Jetson Orin

The Jetson Orin series, like other NVIDIA Jetson modules, utilizes a complex GPIO system that allows for a high degree of configurability. This includes setting up pull-up or pull-down resistors, configuring GPIOs for specific functions, and controlling the direction of GPIO pins.

The Role of the TRM in GPIO Configuration

The Technical Reference Manual (TRM) is a comprehensive document that provides detailed information about the hardware components of the Jetson Orin, including GPIO configuration. It outlines the memory-mapped registers used to control GPIO functions, such as setting pull-up or pull-down resistors, and changing the direction of GPIO pins.

Your Approach to Configuring GPIO01

You’ve attempted to configure GPIO01 by writing to a specific memory address (0x02430068) using the devmem command, with the intention of enabling the default pull-up resistor. The command you’ve used is:

sudo busybox devmem 0x02430068 w 0x008

This approach is based on the information provided in the TRM, which suggests that writing to this address with the specified value should enable the pull-up resistor for GPIO01.

Troubleshooting the Issue

Given that the GPIO does not default to high as expected after executing the command, several factors could be contributing to this issue:

  1. Incorrect Address or Value: Double-check the address and value used in the devmem command against the TRM to ensure accuracy. A single incorrect digit could lead to writing to the wrong register or setting the wrong configuration.

  2. Additional Configuration Required: Some GPIO configurations on the Jetson Orin might require additional steps beyond simply writing to a memory address. This could include setting up the GPIO direction, configuring the GPIO for a specific alternate function, or ensuring that the GPIO is not being overridden by another configuration.

  3. Hardware or Software Interference: Other hardware components or software processes might be interfering with your GPIO configuration. For example, another device or driver might be controlling the GPIO pin, preventing your configuration from taking effect.

  4. TRM Version and Jetson Orin Revision: Ensure that the TRM version you’re referencing matches your Jetson Orin module’s revision. Different revisions might have different memory addresses or configuration requirements.

Recommendations

  • Verify TRM Details: Re-check the TRM for any specific requirements or recommendations for configuring GPIO01 on your particular Jetson Orin module.
  • Check for Additional Configuration Needs: Look into whether additional configuration steps are necessary for GPIO01, such as setting the GPIO direction or configuring for an alternate function.
  • Use Diagnostic Tools: Utilize diagnostic tools or commands available on the Jetson Orin to inspect the current state of GPIO01 and understand why it might not be behaving as expected.
  • Consult NVIDIA Forums or Support: If the issue persists, consider reaching out to NVIDIA’s support forums or official support channels for more specific guidance tailored to your Jetson Orin module and configuration.

By meticulously following these steps and ensuring that your approach aligns with the recommendations provided in the TRM and other official NVIDIA resources, you should be able to resolve the issue with GPIO01 on your Jetson Orin module.

Hi juihung_weng,

Are you using the devkit or custom board for AGX Orin?
What’s the Jetpack version in use?

This command would only take effect during the runtime. (i.e. the configuration would be reset after reboot)

You can refer to Pinmux Changes to configure it in pinmux spreadsheet as Output/Drive 0 for default high.

Please note that Internal Pull-Up is only valid for input pin.

Hi Kevin,

We’re using the devkit with Jetpack6.1. This method seems to require generating three DTSI files, copying them to the Linux source tree, compiling, and then flashing. Since we’re still in the development stage rather than production, using a script with the devmem command at boot time would be more convenient for us.

Regarding the devmem command to change the pinmux configuration in real time—did you mean that bits 3:2 (PUPD) are only applicable for input mode?

Using devmem to configure the pinmux register after bootup can only update its pinmux configurations at runtime. Those configurations will be reset after reboot.
Moreover, its default pin state can not be configured through pinmux register.
Please note that pull-up/pull-down are only valid for the input pin.

If you want a pin to act as default High, you have to use it as Output and configure it as GPIO/Output/Drive 1.