【发布时间】:2016-08-23 13:54:16
【问题描述】:
Linux 设备驱动程序编程中哪个 GPIO API 更可取以及在什么条件下:gpio_set_value() 或 gpiod_set_value()?
一个将 GPIO desc 作为对象,而另一个将 GPIO 从设备树中解析出来。
【问题讨论】:
标签: linux-kernel device-driver device-tree
Linux 设备驱动程序编程中哪个 GPIO API 更可取以及在什么条件下:gpio_set_value() 或 gpiod_set_value()?
一个将 GPIO desc 作为对象,而另一个将 GPIO 从设备树中解析出来。
【问题讨论】:
标签: linux-kernel device-driver device-tree
对于所有新驱动程序,建议使用gpiod_* API。旧的gpio_* API 现在被认为已弃用。
来自this 提交:
gpiolib:导出基于描述符的 GPIO 接口
此补丁导出了
gpiod_*系列 API 函数,更安全 替代传统 GPIO 接口。 gpiod之间的差异 和旧的 gpio API 是:
- gpio 处理整数,而 gpiod 处理不透明的处理程序 在正确获取之前不能伪造或使用
- gpiod get/set 函数知道 GPIO 的低电平有效状态
- gpio 消费者现在应该包含
<linux/gpio/consumer.h>以访问 新接口,而芯片驱动程序将使用<linux/gpio/driver.h>旧版 gpio API 现在构建为 gpiod 之上的内联函数。
有关新 gpiod API 的详细信息,请参阅下一个链接:
[Kernel documentation] GPIO Descriptor Consumer Interface
(以及this commit 添加的其余 gpiod 内核文档)
【讨论】: