gpt4 book ai didi

c - devres 函数返回的类型是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:12 24 4
gpt4 key购买 nike

我正在调试驱动程序。并且有这些类型的语句:

/* Get the interrupt GPIO pin number */
gpiod = devm_gpiod_get_optional(dev, GOODIX_GPIO_INT_NAME, GPIOD_IN);

我读过 devres但我仍然不明白究竟返回了什么?

我知道 gpiod_direction_output 返回一个 struct gpio_desc。但它似乎不是 devm_gpiod_get_optional 的情况,因为我尝试按示例打印 gpiod->label 并且我正在获取 取消引用指针不完整类型“struct gpio_desc” 错误。

如果 gpiod 不是 stuct gpio_desc 那又是什么呢?

这些是包括:

#include <linux/kernel.h>
#include <linux/dmi.h>
#include <linux/firmware.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/input/mt.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/slab.h>
#include <linux/acpi.h>
#include <linux/of.h>
#include <asm/unaligned.h>

最佳答案

gpiod 也是指向stuct gpio_desc 的指针。

您可以从您的驱动程序源代码中验证相同的内容。所有内核驱动程序都已开始使用 gpiod_* API。如果您正在编写新驱动程序,则需要从 Kconfig 启用 GPIOLIB。

您可以使用 struct gpio_device *gdev 结构访问 GPIO 编号,该结构是 struct gpio_desc 的成员。

struct gpio_desc {
struct gpio_device *gdev;
};

您需要通过 ACPI、设备树或平台数据传递 GPIO 编号。GPIO 映射在消费者设备的节点中定义,在一个名为-gpios,驱动程序将请求的功能在哪里通过 gpiod_get()

irq-gpios = <&gpio 1 GPIO_ACTIVE_LOW>; //

请阅读 kerel 的文档部分以获得更多理解:

文档/gpio/consumer.txt
文档/gpio/board.txt

关于c - devres 函数返回的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com