GPIO 相关文件
相关文件 | 作用 | 举例提供的结构,函数 |
---|---|---|
linux/gpio/driver.h | gpio的结构体相关定义细节 | struct gpio_chip基础结构 |
drivers/gpio/gpiolib.h | 定义了 struct gpio_desc (设备描述)基础结构体,提供了很多宏操作 | struct gpio_desc; struct gpio_device; |
linux/gpio/consumer.h | 定义了struct gpio_descs; 以及enum类型的gpio_flags,操作gpio的多种函数 | 关键结构体为gpio_desc,该文件很多函数的返回值类型均为struct gpio_desc |
driver/gpio/gpiolib.c | 定义了gpio_chip 以gpio_chip和gpio_desc为基础抽象了各种操作函数; 提供了lineevent 等方便操作的函数,支持poll,完成了copy_to_user等操作。 | struct gpio_desc *gpio_to_desc(unsigned gpio); struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip, u16 hwnum); static long lineevent_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) |
driver/gpio/gpiolib_of.c | 提供给设备树解析的文件 | struct gpio_desc *of_get_named_gpiod_flags(struct device_node *np, const char *propname, int index, enum of_gpio_flags *flags) |
driver/gpio/gpiolib_sysfs.c | 在文件系统中的显示 | int gpiochip_sysfs_register(struct gpio_device *gdev); |
driver/gpio/gpiolib-legacy.c | 提供gpio_free/request 函数 | void gpio_free(uint32_t gpio); gpio_request(uint32_t gpio, const char *lable); |
gpio 相关结构体
重要函数
文件 gpiolib.c
作用 | 函数 |
---|---|
获取gpiochip的数据 | void *gpiochip_get_data(struct gpio_chip *chip) |
向gpiolib注册 | int gpiochip_add_data(struct gpio_chip *chip, void *data); int devm_gpiochip_add_data(struct device *dev, struct gpio_chip *chip,void *data) |
删除一个gpiochip | void gpiochip_remove(struct gpio_chip *chip) |
查找gpiochip | struct gpio_chip *gpiochip_find(void *data, int (*match)(struct gpio_chip *chip, void *data)) |
设备获取平台数据 | static inline void *dev_get_platdata(const struct device *dev) |
特别应用 | static inline int gpio_to_irq(unsigned int gpio) |
设置方向,输入 | gpio_direction_input() |