Jetson Orin Nano – GP_PWM7 on SODIMM 206 / PG6 not reaching physical pin

I am working on a custom carrier board with a Jetson Orin Nano and JetPack 6.2.2. I need to control the backlight PWM of a Riverdi 7" HDMI display using GP_PWM7 / SODIMM 206 / SOC_GPIO19_PG6.

GPIO6 is used as the pushbutton input, and each detected button press should increment the duty cycle of the PWM output on GPIO07 (GP_PWM7), with the PWM driving the LCD backlight brightness.

The pinmux spreadsheet configuration is:

  • SODIMM: 206

  • Signal: GPIO07 (PWM)

  • Customer Usage: GP_PWM7

  • Direction: Output

  • Initial State: **Drive 0
    **
    soc_gpio19_pg6 {
    nvidia,pins = “soc_gpio19_pg6”;
    nvidia,function = “gp”;
    nvidia,pull = <TEGRA_PIN_PULL_NONE>;
    nvidia,tristate = <TEGRA_PIN_DISABLE>;
    nvidia,enable-input = <TEGRA_PIN_DISABLE>;
    nvidia,lpdr = <TEGRA_PIN_DISABLE>;
    };

    I am using: tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi

    The PWM controller corresponding to PWM7 appears as:
    pwmchip3
    32e0000.pwm
    driver: tegra-pwm

    PWM sysfs works correctly. For example:
    echo 1000000 | sudo tee /sys/class/pwm/pwmchip3/pwm0/period
    echo 100000 | sudo tee /sys/class/pwm/pwmchip3/pwm0/duty_cycle
    echo 1 | sudo tee /sys/class/pwm/pwmchip3/pwm0/enable
    sudo cat /sys/kernel/debug/pwm

    SHOWS:
    platform/32e0000.pwm, 1 PWM device pwm-0 (sysfs): requested enabled period: 1000000 ns duty: 100000 ns

    Changing the duty cycle to 800000 ns also changes the PWM controller register.

    The PADCTL register for PG6 is:

    PADCTL_G4_SOC_GPIO19_0
    0x02434080
    Current Value : 0x00000400

    I also checked the GP_PWM7 tristate-related bits referenced in the NVIDIA BCT configuration. The 0x30 bits are already clear.

    The main issue seems to be that the PWM output is not reaching SOC_GPIO19_PG6 / SODIMM 206.

    Could someone from NVIDIA please clarify the correct Tegra234 pinmux/BCT configuration for GP_PWM7 (32e0000.pwm) to drive GPIO07 / SODIMM 206 (SOC_GPIO19_PG6)?

    Since the PWM controller is working through /sys/class/pwm, but the PWM output is not reaching the physical PG6 pin, could anyone please confirm whether any additional MB1 BCT, PADCTL, pinmux, or device-tree configuration is required to establish this PWM output-to-pad routing?
    **
    **

Hi pariposhpandagre,

Your configurations look good to me.
Could you share the full dmesg and device tree for further check?

dmesg_full.txt (60.5 KB)

running_dts.txt (315.1 KB)

pwm-debug.txt (582 Bytes)

pinconf-pins.txt (4.4 KB)

pinmux-functions.txt (12.9 KB)

gpioinfo.txt (11.4 KB)

pinmux-pins.txt (10.0 KB)

Hi @KevinFFF

I have collected the full dmesg and the live device-tree dump from the target Jetson Orin Nano, along with the current pinmux, PWM, GPIO and PG6 PADCTL information.

I have attached the files for further investigation.

Thanks

Please help provide:

  1. the carrier board schematic for the routing from SODIMM 206 / PG6 to the LCD backlight PWM input
  2. sudo busybox devmem 0x02434080 before and after enabling PWM
  3. Oscilloscope capture measured directly on SODIMM 206 / PG6 while PWM is enabled

Since the PWM controller already appears enabled in pwmchip3 / /sys/kernel/debug/pwm, we would like to first confirm whether the waveform is present on the module pin itself.

Hi @KevinFFF

The issue is resolved. The Jetson configuration and code were correct; the root cause was the display hardware setup.

By default, the Riverdi HDMI display uses its internal PWM driver for brightness. To enable control from the Jetson, I had to configure the hardware pins/OSD on the back of the Riverdi module to switch from Internal PWM to External PWM mode.

Once switched to External PWM, SODIMM Pin 206 (GP_PWM7 / pwmchip3) gained full control of the backlight, resolving the issue.

Thanks for the support!