AGX Orin cannot properly request the GPIO3_PCC.02 pin for GPIO use under JetPack 6.0

I tried to configure the PCC.02 pin in the device tree, and I also used it in the obc_cam_sync node, as shown in the configuration below:
image


After adding the driver, I found that the PC.02 pin was registered, but this is not the pin I intended to use.

Could you please help me resolve this issue? Thank you!

Hi FANYX,

It seems you configured the wrong GPIO controller for sync-out-gpios.
Please use the following configuration instead. (i.e. use &gpio_aon instead of &gpio)

sync-out-gpios = <&gpio_aon SYNC_OUT GPIO_ACTIVE_HIGH>;

Thank you very much for your suggestions — I have successfully made the modification.
However, I noticed in the pinmux spreadsheet that the pin is set as input by default, but I need it to be output.
c1fe7698296c7e5efe26440a5c0e489
So I modified the pinmux spreadsheet and generated three .dtsi files.


I’m still using the AGX Orin platform. Could you please tell me which files in the official package I should replace with these three files to make my configuration take effect?

Please configure it as Output/Drive 0 in pinmux spreadsheet.

I would suggest checking the flash log to identify the exact file used for pinmux in your case. (pinmux_config)
Please put pinmux dtsi to <Linux_for_Tegra>/bootloader/generic/BCT and gpio dtsi to <Linux_for_Tegra>/bootloader/.
You may check the board config(p3701.conf.common) to know what is specified for PINMUX_CONFIG .

Please also refer to Jetson AGX Orin Platform Adaptation and Bring-Up — NVIDIA Jetson Linux Developer Guide 1 documentation for details.

Okay, I have successfully verified it. I’m currently testing the use of the busybox tool to configure the GPIO direction (input/output). I found the offset address for GPIO3_PCC.02.


So I read the value of register 0x02430028 and modified it to set the pin as an output and also changed its pull-up/down configuration.

However, I noticed that the output level of the GPIO doesn’t change, and I’m not sure what the issue is. I would appreciate your help with this.

Pinmux register is used to configure the pin’s capability and use case rather than control high/low.
GPIO default state should be configured in gpio dtsi.

Please simply run the following command to check if it could be controlled.

# gpioset --mode=wait `gpiofind "PCC.02"`=1
# gpioset --mode=wait `gpiofind "PCC.02"`=0

I think you may have misunderstood my point. I used the official flashing package to update the system, and now I’m trying to change the GPIO direction (input/output) by directly modifying registers. However, it seems that writing to the registers doesn’t take effect — that’s the actual issue I’m facing. I would appreciate your help in figuring out why modifying registers using busybox is not working. Thank you!

How do you verify that “writing to the registers doesn’t take effect”?

As my understanding, you just use scope to check its pin state (high/low).

I’ve pointed out that pinmux register is not used to control the GPIO.
If you want to control the GPIO high/low state, you should use DRA instead.

First, I wrote 0x04 to register address 0x02430070 to configure the pin as GPIO output mode.


Then, I tried to pull the GPIO high and low using the following commands, and measured the voltage with a multimeter.
image


However, I found that the GPIO remained at a high level.

This is the verification process I followed, so I suspect that the register configuration did not take effect.If there’s anything wrong with my verification approach, please kindly point it out. Thank you!

Thanks for your clarification for your verification steps.

0x02430070 seems the pinmux register for PQ.06 rather than PCC.02
From your screenshot, I don’t know why you used 0x02430028 .

If you want to control PCC.02, please configure pinmux register 0x0c302028 instead and run the same gpioset command to control it.

Thank you, I have already resolved my issue.