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.

[参考译文] AM625:是否有任何好的方法可以在内核驱动程序中按名称控制 GPIO?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1517606/am625-is-there-any-good-way-to-control-gpio-by-name-in-kernel-driver

器件型号:AM625

工具/软件:

是否有与 libgpiod 类似的内核层以名称运行 GPIO?

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

    尊敬的 Stephen:

    否、内核不按名称使用 GPIO。

    在内核器件树中、根据 GPIO 器件树绑定指定 GPIO 引脚、例如:

       VDD_SD_DV:稳压器4{
         ...
           GPIO =<&MAIN_GPIO0 31 GPIO_ACTIVE_HIGH>;
       };

    然后、内核驱动程序使用内核 gpiod 框架 API 来初始化和使用 GPIO 引脚。

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

    尊敬的 Bin:

    我们的工程包含许多使用传统方法(使用 module_inti 和 module_exit)的字符设备驱动程序。 我尝试使用 devm_gpiod_get 来访问器件树中定义的 GPIO 节点、但无法获取 GPIO。

    后来,我发现 可能有必要将驱动程序转换为平台驱动程序模型,以便使用 gpiod 框架。

    这是真的吗? 使用传统方法实现的驱动程序能否直接利用 gpiod 框架?

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

    尊敬的 Stephen:

    不,您不必将驱动程序转换为平台驱动程序,即可使用 gpiod API。 您可以直接使用 gpiod_*在 gpiolib.c 中实现的函数、例如 gpiod_get ()、gpiod_get_optional ()或 gpiod_get_index_optional ()等

    在内核驱动程序/目录中搜索任何示例。