Linux设备驱动程序编程中的哪个GPIO API更受欢迎,在什么条件下:gpio_set_value()或gpiod_set_value()?
一个采用GPIO desc作为对象,而另一个采用从设备树解析的GPIO.
对于所有新驱动程序,建议使用gpiod_ * API.旧的gpio_ * API现在被视为已弃用.
从this提交:
gpiolib: export descriptor-based GPIO interface
This patch exports the gpiod_*
family of API functions,a safer
alternative to the legacy GPIO interface. Differences between the gpiod
and legacy gpio APIs are:
- gpio works with integers,whereas gpiod operates on opaque handlers
which cannot be forged or used before proper acquisition
- gpiod get/set functions are aware of the active low state of a GPIO
- gpio consumers should now include
<linux/gpio/consumer.h>
to access
the new interface,whereas chips drivers will use
<linux/gpio/driver.h>
The legacy gpio API is now built as inline functions on top of gpiod.
有关新gpiod API的详细信息,请参阅下一链接:
> [LWN article] GPIO in the kernel: future directions
> [Kernel documentation] GPIO Descriptor Consumer Interface
(以及this提交时添加的其余gpiod内核文档)