Jetpack 6.2 Orin NX gpio pin control的問題

我在Jetpack 6.2 Orin NX做GPIO3_PZ.06(SPI1_CS0)這隻gpio pin的output control時遇到的問題, 我在suspend之前控制PZ.06這隻gpio pin為low,但當我去做suspend時這隻gpio pin會從low變成high,wakeup時又會從high回到low,請問這隻PZ.06 gpio pin是不是只能在進入OS才能控制high跟low,但在進入suspend就會不受控制變為為high,以下是我對PZ.06做的設定和電路圖

gpio@2200000 {

               gpio-init-names = "default";

               gpio-init-0 = <&gpio_main_default>;



               gpio_main_default: default {

                         gpio-input = <

                                  TEGRA234_MAIN_GPIO(B, 0)

                                  TEGRA234_MAIN_GPIO(Y, 0)

                                  TEGRA234_MAIN_GPIO(Y, 1)

                                  TEGRA234_MAIN_GPIO(Y, 2)

                                  TEGRA234_MAIN_GPIO(Y, 3)

                                  TEGRA234_MAIN_GPIO(Y, 4)

                                  TEGRA234_MAIN_GPIO(Z, 1)

                                  TEGRA234_MAIN_GPIO(Z, 3)

                                  TEGRA234_MAIN_GPIO(Z, 4)

                                  TEGRA234_MAIN_GPIO(Z, 5)

                                  //TEGRA234_MAIN_GPIO(Z, 6)

                                  TEGRA234_MAIN_GPIO(Z, 7)

                                  TEGRA234_MAIN_GPIO(P, 6)

                                  TEGRA234_MAIN_GPIO(Q, 5)

                                  TEGRA234_MAIN_GPIO(Q, 6)

                                  //TEGRA234_MAIN_GPIO(R, 4)

                                  //TEGRA234_MAIN_GPIO(R, 5)

                                  //TEGRA234_MAIN_GPIO(N, 1)

                                  TEGRA234_MAIN_GPIO(G, 0)

                                  //TEGRA234_MAIN_GPIO(G, 6)

                                  TEGRA234_MAIN_GPIO(G, 7)

                                  //TEGRA234_MAIN_GPIO(H, 0)

                                  //TEGRA234_MAIN_GPIO(H, 7)

                                  //TEGRA234_MAIN_GPIO(I, 0)

                                  //TEGRA234_MAIN_GPIO(I, 1)

                                  //TEGRA234_MAIN_GPIO(I, 2)

                                  //TEGRA234_MAIN_GPIO(AC, 6)

                                  TEGRA234_MAIN_GPIO(L, 2)

                                  >;

                         gpio-output-low = <

                                  TEGRA234_MAIN_GPIO(H, 6)

                                  TEGRA234_MAIN_GPIO(I, 5)

                                  TEGRA234_MAIN_GPIO(AC, 0)

                                  TEGRA234_MAIN_GPIO(K, 4)

                                  TEGRA234_MAIN_GPIO(K, 5)

                                  //TEGRA234_MAIN_GPIO(N, 1)

                                  //TEGRA234_MAIN_GPIO(G, 6)

                                  >;

                         gpio-output-high = <

                                  TEGRA234_MAIN_GPIO(Q, 3)

                                  TEGRA234_MAIN_GPIO(A, 0)

                                  TEGRA234_MAIN_GPIO(N, 1)

                                  TEGRA234_MAIN_GPIO(G, 6)

                                  TEGRA234_MAIN_GPIO(H, 0)

                                   >;

               };

      };

spi1_cs0_pz6 {

                                  nvidia,pins = "spi1_cs0_pz6";

                                  nvidia,function = "rsvd1";

                                  nvidia,pull = <TEGRA_PIN_PULL_DOWN>;

                                  nvidia,tristate = <TEGRA_PIN_DISABLE>;

                                  nvidia,enable-input = <TEGRA_PIN_DISABLE>;

                                  nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;

                                  nvidia,lpdr = <TEGRA_PIN_DISABLE>;

                         };

gpio {

               compatible = "gpio-leds";

               status = "okay";



               gpio-pcc01 {

                         gpios = <&gpio_aon TEGRA234_AON_GPIO(CC, 1) GPIO_ACTIVE_LOW>;

               };



               gpio-pg06 {

                         gpios = <&gpio TEGRA234_MAIN_GPIO(G, 6) GPIO_ACTIVE_LOW>;

               };



               gpio-pn01 {

                         gpios = <&gpio TEGRA234_MAIN_GPIO(N, 1) GPIO_ACTIVE_LOW>;

               };



               gpio-pz06 {

                         gpios = <&gpio TEGRA234_MAIN_GPIO(Z, 6) GPIO_ACTIVE_LOW>;

               };

              

      };

Hi laieric63,

Are you using the custom board for Orin NX?
If so, do you have custom design for this pin(different from the devkit) on your board?

How do you configure PZ.06 in pinmux spreadsheet?

我的Orin NX是用客製開發板

我在開發板上該接腳的配置是與開發套件不同如下

原配置

spi1_cs0_pz6 {
nvidia,pins = “spi1_cs0_pz6”;
nvidia,function = “rsvd1”;
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};

gpio@2200000 {

           gpio-init-names = "default";

           gpio-init-0 = <&gpio_main_default>;



           gpio_main_default: default {

                     gpio-input = <
                             TEGRA234_MAIN_GPIO(Z, 6)
                                >;
                 };
          };

我自己的配置
spi1_cs0_pz6 {
nvidia,pins = “spi1_cs0_pz6”;
nvidia,function = “rsvd1”;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};

gpio@2200000 {

           gpio-init-names = "default";

           gpio-init-0 = <&gpio_main_default>;



           gpio_main_default: default {

                     gpio-input = <
                             //TEGRA234_MAIN_GPIO(Z, 6)
                                >;
                 };
          };

gpio {
compatible = “gpio-leds”;
status = “okay”;

               gpio-pcc01 {
                         gpios = <&gpio_aon TEGRA234_AON_GPIO(CC, 1) GPIO_ACTIVE_LOW>;
               };

               gpio-pg06 {
                         gpios = <&gpio TEGRA234_MAIN_GPIO(G, 6) GPIO_ACTIVE_LOW>;
               };

               gpio-pn01 {
                         gpios = <&gpio TEGRA234_MAIN_GPIO(N, 1) GPIO_ACTIVE_LOW>;
               };

               gpio-pz06 {
                         gpios = <&gpio TEGRA234_MAIN_GPIO(Z, 6)                GPIO_ACTIVE_LOW>;
               };
               
      };

我把PZ,06 pin設成gpio-led然後寫程式去控制

define SYSFS_GPIO_OUTPUT “/sys/class/leds/gpio-pcc03/brightness”
define SYSFS_GPIO_VAL_H “1”
define SYSFS_GPIO_VAL_L “0”

int main(void) {
int fd;
fd = open(SYSFS_GPIO_OUTPUT, O_RDWR);
write(fd, SYSFS_GPIO_RST_VAL_H, sizeof(SYSFS_GPIO_VAL_H));
//usleep(100 * 1000);
// write(fd, SYSFS_GPIO_VAL_L, sizeof(SYSFS_GPIO_VAL_L));
return 0;
}

What’s your requirement and the expected behavior for this pin?

Do you want PZ.06 keeping high after suspend?

It seems you’ve also configured PCC.01, PG.06, PN.01. Could you also help to check if they have the similar behavior as PZ.06?

問題已解決,解決如下,用以下方式進入suspend後也能維持低電位,感謝您的回答

#suspend 前拉低 GPIO

sudo gpioset gpiofind "PZ.06"=0
sudo busybox devmem 0x0243d008 w 0x004

1 Like