Jetson AGX orin CAMERA GPIO dhange to UART

Hi, I encountered the same issue as described in the topic below:

I’m using a custom board with JetPack 6.0 (R36.3). We want to configure pins L5 and L48 to UART function, and we have configured the pinmux accordingly.

image

I’m using a custom board with JetPack 6.0 (R36.3). We want to configure pins L5 and L48 to UART function, and we have configured the pinmux accordingly.

On the custom board, PH.03 and PH.04 are used as camera-control-output and regulator-vdd-3v3-pc, respectively.

image

image

image

I checked the pinctrl registers and saw that these two pins are configured as GPIOs rather than SFIO.
image

It seems the pinmux is being overwritten. I found that PH.04 is used as a GPIO in the DTS.

After disabling the regulator-vdd-12v-pcie, PH.04 became SFIO.
image

However, PH.03, which is used as CAM0_RST on the DevKit, appears in many camera DTSI files and is compiled as a DTBO. How can I disable it?

May I ask how to block the CAM0_RST and PCIe_3V3_EN related functions of the Linux S/W of Pin L4 (UART4_TX) and L48 (UART4_RX).

Thanks

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

The question is related to configuring a custom carrier board for Jetson AGX Orin to use the existing Camera GPIO function as UART instead of the camera function. The user has already configured the pinmux accordingly but is facing issues with the pinmux being overwritten.

To address this issue, we can refer to the topic “Jetson AGX orin CAMERA GPIO dhange to UART” where a similar problem was resolved. The solution involved blocking the CAM0RST and PCIe3V3EN related functions of the Linux SW.

Here are the steps to block these functions:

  1. Disable the regulator-vdd12v-pcie: This can be done by modifying the device tree file (DTS) to disable the regulator-vdd12v-pcie. This will prevent the PH04 pin from being used as a GPIO.
  2. Block the CAM0RST function: The CAM0RST function is used in many camera DTSI files and is compiled as a DTBO. To block this function, you need to modify the device tree file (DTS) to exclude the CAM0RST function.
  3. Modify the Linux SW: After blocking the CAM0RST and PCIe3V3EN functions, you need to modify the Linux SW to use the pins L4 (UART4TX) and L48 (UART4RX) as GPIOs instead of UART.

By following these steps, you should be able to configure the custom carrier board to use the existing Camera GPIO function as UART instead of the camera function.

In comparison to the original topic, the main difference is that the user is using a custom board with JetPack 6.0 R36.3, whereas the original topic was using JetPack 5.0.1. However, the solution remains the same, and the steps outlined above should still apply.

It’s also worth noting that the user has already configured the pinmux accordingly, but is facing issues with the pinmux being overwritten. This suggests that there may be other factors at play, such as conflicts with other device tree files or kernel modules. Therefore, it’s essential to carefully review the device tree files and kernel modules to ensure that there are no conflicts or overwrites.

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

Hi hanyang369,

Could you try to configure them as following in pinmux spreadsheet instead?

They’ve been used by other nodes.

It seems you’ve disabled it so that PH.04 can be used now.

Please find out which overlay dts has been included in your use case.

You can also refer to the following threads with the similar issue as yours.
Failed to do RS-232 with uartd: serial@3130000 - #18 by JerryChang
AGX-ORIN uart4 cannot work - #5 by KevinFFF

Hi KevinFFF,
Could you tell me how can I determine which dtsi I am using? Is it possible to see from the kernel log which dtbo is loaded?
Thanks

I did a test - moved all dtbo files related to camera from /boot to /data and restart the board.
However, the related GPIOs are still occupied by the camera.

image

Hi KevinFFF,

I followed the steps in the topic below:

I removed the gpio@220000 node in the tegra234-p3737-camera-modules.dtsi file and rebuilt the dtb. The left side shows the gpio node before the change, and the right side shows it after the change. The camera-control-output-low was removed.

I push the new dtb file to the board and modified extlinux.conf to use the new dtb.

However, PH.03 is still used as camera-control-output-low.

You can refer to UEFI Adaptation — NVIDIA Jetson Linux Developer Guide to know how we load DTB.
Basically, you can specify FDT entry in extlinux.conf to select the DTB used for kernel.

Please share the full dmesg and device tree for further check.

You can also run the following command to provide extracted_proc.dts.

$ sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.