This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM62L-Linux-SDK:Linux 驱动程序中的 GPIO/中断/唤醒早期实现。

Guru**** 2933630 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1654345/am62l-linux-sdk-gpio-interrupt-wakeup-early-implementation-in-linux-driver

器件型号: AM62L-Linux-SDK

您好:

我在内核映像中静态编译了一个驱动程序。 驱动程序配置了 GPIO、该中断用于 检测电源故障和唤醒中断、以将器件从深度睡眠状态唤醒。 驱动程序工作正常、但我想在早期启动时运行它。

我尝试使用 Subsys_initcall_sync (test_driver_init)、并在早期看到加载了驱动程序。 但问题是驱动程序无法获得 GPIO。

 

static int boot_gpio_init (void)

  结构 device_node *np;

  NP = of_find_compatible 节点 (NULL、NULL、“test、node“);
  IF(!NP)
    RETURN-ENODEV;

  INT pwr_boot_GPIO = of_get_named_GPIO (NP、“test-pin-GPIOs“、0);
  of_node_put (NP);

  IF (pwr_boot_GPIO < 0)
  {
    PR_err(“boot_GPIO_init:PWR_BOOT_GPIO %d\n“、pwr_boot_gpio);
    返回 pwr_boot_GPIO;
  }

  IF (GPIO_REQUEST (pwr_boot_GPIO、“pfail-boot“))
    return -EBUSY;

  GPIO_DIRECTION_INPUT (pwr_BOOT_GPIO);
  返回 0;
}


static int ___init test_driver_init (void)

  boot_gpio_init();
  返回 platform_driver_register (&test_driver);
}

Subsys_initcall_sync (test_driver_init);

 

输出为:
BOOT_GPIO_INIT:PWR_BOOT_GPIO –517 或 (-EPROBE_DEDER)。

我想知道是否有办法提前初始化 GPIO、中断和唤醒中断?

 

谢谢、

John Tobias

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John:

    为了让我了解正确的要求、需要将同一 GPIO 用作深度睡眠状态的唤醒源以及早期启动时的输入中断?

    为了明确期望、在 TI E2E 论坛上、我们不对客户开发的代码提供支持。  

    是否在应用中使用 SPL 引导?

    此致、

    Anshu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anshu:

    我发布了一些示例代码、以便任何人都能轻松理解该场景、我不确定我是否在正确的渠道?。  
    我的目的是尽早获取有关如何配置 GPIO 的信息、以便可以读取 GPIO 的状态。 我发布的代码显示它依赖于 pinctrl。

    如果在内核启动级别的很早阶段无法配置中断和唤醒中断、我相信无需根据 pinctrl 即可读取 GPIO。

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我在内核 bool 级别的早期阶段成功访问了 GPIO。