Can't set GPIO default value

Hello NVIDIA,
我遇到个问题,感觉这个GPIO默认值不受控制,我在Linux_for_Tegra\bootloader\generic\BCT\tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi 已经更改pinmux了,也在Linux_for_Tegra\bootloader\tegra234-mb1-bct-gpio-p3767-dp-a03.dtsi设置默认值了,我开机读寄存器感觉设置的不对:

希望是开机将PH.00设置输出为高,PG.06设置输出为低,都是双向高阻态
root@nv-desktop:/home/nv# busybox devmem 0x02434040
0x00000050
root@nv-desktop:/home/nv# busybox devmem 0x02434080
0x00000051
root@nv-desktop:/home/nv# gpioinfo |grep PH.00
line 43: “PH.00” unused output active-high
root@nv-desktop:/home/nv# gpioinfo |grep PG.06
line 41: “PG.06” unused output active-high
root@nv-desktop:/home/nv#
root@nv-desktop:/home/nv# cat /sys/kernel/debug/gpio|grep “PH.00”
gpio-391 (PH.00 )
root@nv-desktop:/home/nv# cat /sys/kernel/debug/gpio|grep “PG.06”
gpio-389 (PG.06 )

我用配寄存器的方式试过,必须高阻态+内部上下拉才能正确点亮熄灭

root@nv-desktop:/home/nv# busybox devmem 0x02434040 w 0x54
root@nv-desktop:/home/nv# busybox devmem 0x02434040 w 0x58

root@nv-desktop:/home/nv# busybox devmem 0x02434080 w 0x54
root@nv-desktop:/home/nv# busybox devmem 0x02434080 w 0x58

DTS config:

                        soc_gpio19_pg6 {
                                nvidia,pins = "soc_gpio19_pg6";
                                nvidia,function = "rsvd1";
                                nvidia,pull = <TEGRA_PIN_PULL_NONE>;
                                nvidia,tristate = <TEGRA_PIN_ENABLE>;
                                nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                                nvidia,lpdr = <TEGRA_PIN_DISABLE>;
                        };
                        soc_gpio21_ph0 {
                                nvidia,pins = "soc_gpio21_ph0";
                                nvidia,function = "rsvd0";
                                nvidia,pull = <TEGRA_PIN_PULL_NONE>;
                                nvidia,tristate = <TEGRA_PIN_ENABLE>;
                                nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                                nvidia,lpdr = <TEGRA_PIN_DISABLE>;
                        };

excel config:

目前的问题:

  1. 为什么dts配置后,默认值不对?
  2. gpioset也感觉不受控制,设置后,用devmem读寄存器值没变
root@nv-desktop:/home/nv# gpioset --mode=wait `gpiofind 'PG.06'`=0

root@nv-desktop:/home/nv# gpioset --mode=wait `gpiofind 'PG.06'`=1

root@nv-desktop:/home/nv# 
root@nv-desktop:/home/nv# 
root@nv-desktop:/home/nv# busybox devmem 0x02434080
0x00000451

hello liteblue,

may I know which Jetpack release version you’re working with?
and… the board SKU of your Orin NX?

My BSP package version is jetpack6.0 , r36.3.

Board ID(3767) version(301) sku(0000) revision(G.1)
Chip SKU(00:00:00:D3) ramcode(00:00:00:01) fuselevel(fuselevel_production) board_FAB(301)

please see-also Topic 301171 to apply the patch for verification.

Hi Jerry,
应用补丁后gpio工具不会导致pinmux变化了,但是gpioget好像得到的值与实际测量不同,以下set为0后,读到的是1,实际测量刚开始是0V,随后几秒后变成1.2V。
gpioget gpiofind 'PCC.01'
1

怎么读GPIO寄存器的?我可以看下是不是被正确改了

Hi Jerry,
应用补丁后gpio工具不会导致pinmux变化了,但是gpioget好像得到的值与实际测量不同,以下set为0后,读到的是1,实际测量刚开始是0V,随后几秒后变成1.2V。

gpioget `gpiofind 'PCC.01'`
1

gpioset为1后,退出gpioset程序,会在十多秒后从1.8V降到1.2V。

pinmux始终未变化

# busybox devmem 0x0c302050
0x00000041

对应GPIO寄存器怎么查找的?我可以看下是不是被正确改了

hello liteblue,

(1) please set the GPIO with --mode=wait for keeping its state.
(2) pinmux it’s the default settings of bpmp, it’s not used by kernel stage.

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