在内核模块中使用 GPIO

Using GPIOs within a kernel module

我在编写内核驱动程序方面还很陌生,有一些事情很困扰我。如果你能帮我找到正确的方向就太好了。

我正在为设备编写一个模块,该设备必须通过将 GPIO 置于高电平来供电。

  1. Documentation/gpio/*中是文本,说我应该使用新的基于描述符的接口 GPIO 框架。但是如何使用呢? 当我像 #include 这样的包含时 它可以编译,我可以 运行 驱动程序。但是使用 gpiod_get(...) 只是 returns ffffffffffffffffe。这在某种程度上是有道理的,因为 linux/gpio/consumer.h 中该函数的实现是

static inline struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id,enum gpiod_flags flags){ return ERR_PTR(-ENOSYS); }

函数的实现也存在于drivers/gpio/devres.c中。我该如何使用它?

在我看来,我不应该使用该实现。

我希望你能帮助我,因为它真的很烦人。

事实证明,只需要包括文件 gpio/gpiolib 以及提供额外的定义。