RGMII_SMA_MDIO and RGMII_SMA_MDC config as gpio but out of control

  • Basic Info:

hardware: jetson-agx-orin-devkit
JetPack : 6.2
Jetson Linux : 36.4.3

I config below two pin E7 and E6 to gpio mode, but using multimeter measure the value is low

image

also try using gpioset to pull up the pin, but using multimeter measure the pin value (TP52/ TP53) is zero voltage

gpio-381 (PF.04 |gpioset ) out hi
gpio-382 (PF.05 |gpioset ) out hi

Issue:

it seems software can control the pins, but the hardware has no respond

Does these two pins can be using as normal gpio?

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

Based on the provided context, it appears that you are experiencing issues with configuring GPIO pins on the Jetson AGX Orin developer kit. Specifically, you have configured pins E7 and E6 to GPIO mode, but when measuring the voltage using a multimeter, you are reading a low value (0V) on pins TP52 and TP53.

To troubleshoot this issue, let’s break down the possible causes:

  1. Software configuration: You have mentioned that you have configured the pins to GPIO mode, but it’s essential to ensure that the configuration is correct. Double-check that you have properly set the pin modes using the jetson-io tool or by modifying the device tree.
  2. Hardware connections: Verify that the connections between the Jetson module and the external circuitry are correct. Ensure that the pins are properly connected to the desired external components, and there are no shorts or open circuits.
  3. Pin multiplexing: The Jetson AGX Orin module has multiple functions assigned to each pin. It’s possible that the pins you are trying to use are multiplexed with other functions. Check the Jetson AGX Orin datasheet or the device tree to ensure that the pins are not multiplexed with other functions that might be interfering with your GPIO configuration.
  4. Power management: The Jetson AGX Orin module has power management features that might be affecting the pin behavior. Check the power management settings to ensure that the pins are not being powered down or put into a low-power state.

Comparing your issue with other related topics:

  • The topic “Issue with GPIO Pin Configuration Using Jetson-IO on Jetson AGX Xavier” (June 4, 2025) mentions a similar issue with GPIO pin configuration on the Jetson AGX Xavier. However, the solution provided in that topic is specific to the Xavier module and might not be directly applicable to the AGX Orin.
  • The topic “CAN configuration and suspension issues” (June 4, 2025) discusses CAN bus configuration issues on the Jetson TX2, which is a different module. However, it highlights the importance of proper device tree configuration, which might be relevant to your issue.

To further troubleshoot your issue, you can try the following:

  • Use the jetson-io tool to verify that the pin configuration is correct.
  • Check the device tree to ensure that the pins are not multiplexed with other functions.
  • Use a logic analyzer or an oscilloscope to monitor the pin activity and verify that the signals are being generated correctly.
  • Consult the Jetson AGX Orin datasheet and the device tree documentation to ensure that you are using the correct pin configurations and settings.

If you are still experiencing issues, it might be helpful to provide more details about your setup, including the exact pin configurations, device tree modifications, and any relevant code snippets.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

How did you make these pinmux changes and integrate in your SW?

Please note that MDIO has 1.5k PU to 1.8V on the AGX Orin module. No pull up on MDC

in my system the register 0x02445038 and 0x02445048 value is 0x00002041
which I think the pinmux is already config as gpio mode

what I refer to is EQOS_SMA_MDIO/MDC pin
and I check the Design Guide, same as MGBE MDIO pull up to 1.8V by 1.5kohm

so, I still don’t konw why these two pins can not be use as gpio

Have you tried toggling the GPIO? Or a GPIO external loopback from one to the other, set one GPIO (MDIO) as output and the other GPIO (MDC) as input, toggle the GPIO set as output and see if you can readback same value on the other GPIO (MDC) set as input.

Nope, never try this kind of test

But I double check the related gpio register 0x22158a0 and 0x2215880 which is 0x00000003

which means the pins are all gpio enable and output mode

and register 0x22158b0 and 0x2215890 value will change while the gpioset command trigger

for example: gpioset PF.05 = 1 will trigger 0x22158b0 value to 1 which is as expected. but using multimeter show zero voltage or using oscilloscope show no waveform

I try to use these two pin to simulate I2C signal, but see no wavefrom ( toggle gpio)

Could you apply the patch from the following thread to check if it could help for your case?
40hdr - SPI1 gpio padctl register bit[10] effect by gpiod tools in JP6 - #20 by KevinFFF

Patch the above code result is unchanged

And I also apply below patch and test again

the result is also unchanged

Any reason you need to simulate I2C signal on these GPIOs? We have multiple I2c busses available on the module. I2C is open drain signals and need external pull up to see the high logic level. The pins should be configured as bidirectional if want to simulate I2C signals and with external pull up resistors to see the high and low levels.

I am porting a ethernet switch using these two pins as SMI signal which in the driver code using these two pin as normal gpio

I can using other gpio pin to finish this job, but currently the hardware design connect these two pins

if these two pins can not be controlled as gpio, I have to cut off the line on my PCB

By the way , I have also try config these pins to bidirection, the result is also the same

Note that if using as MDIO it is open drain signal and needs external pull up. MDC is push pull signal and actively driven when used as MDC.

In the switch driver code, using these two pin as GPIO to mimic the SMI signal

for example :
gpiod_direction_output(smi->mdc, 0);
gpiod_direction_output(smi->mdio, 1);

so it need to be control as normal gpio, not MDIO signal

What’s the pin state after boot up when you’ve configured them as GPIO/Output/Drive 1 in pinmux spreadsheet?

Do you refer to the following instruction to apply the change for pinmux?
Jetson AGX Orin Platform Adaptation and Bring-Up — Pinmux Changes

The register value is below after bootup, which is same as previous post

root@tegra:~# busybox devmem 0x02445038
0x00002041
root@tegra:~# busybox devmem 0x02445048
0x00002041
root@tegra:~# busybox devmem 0x22158a0
0x00000003
root@tegra:~# busybox devmem 0x22158b0
0x00000001
root@tegra:~# busybox devmem 0x2215880
0x00000003
root@tegra:~# busybox devmem 0x2215890
0x00000001

Could you get a scope to check for their state after boot up?

These two pins are always low in scope all the bootup flow

Do you mean those 2 pins are always LOW after you’ve configured them at Output/Drive 1 in pinmux spreadsheet?
If so, could you share the detailed steps how do you apply the change?

Yes , those two pins are all low, I apply the change as the online wiki says, modify the spreadsheet and burn dtb to flash, nothing special else

It seems to be hardware issue, I found on module side, the MDIO pin short to the ground, but MDC not short to the ground, I am about to send the module back to vendor to repair

and I will try to deploy all my setup on a new 32G module to test