Linux GPIO概览

GPIO 相关文件
相关文件作用举例提供的结构,函数
linux/gpio/driver.hgpio的结构体相关定义细节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_chipgpio_chipgpio_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)
删除一个gpiochipvoid gpiochip_remove(struct gpio_chip *chip)
查找gpiochipstruct 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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值