Linux GPIO子系统API
Linux GPIO子系统APIstatic inline bool gpio_is_valid(int number)该函数用来判断获取到的gpio号是否是有效的,只有有效的gpio号,才能向内核中进行申请使用,因此,当我们从设备树的设备节点获取到gpio号,可以使用该函数进行判断是否有效。int gpio_request(unsigned gpio, const char *label)该函数
Linux GPIO子系统API
static inline bool gpio_is_valid(int number)
该函数用来判断获取到的gpio号是否是有效的,只有有效的gpio号,才能向内核中进行申请使用,因此,当我们从设备树的设备节点获取到gpio号,可以使用该函数进行判断是否有效。
int gpio_request(unsigned gpio, const char *label)
该函数用于申请一个 GPIO管脚,在使用一个 GPIO之前一定要使用 gpio_request进行申请。
@gpio:要申请的 gpio标号,使用 of_get_named_gpio函数从设备树获取指定 GPIO属性信息,此函数会返回这个 GPIO的标号。
@label:给 gpio设置个名字。
@返回值: 0,申请成功;其他值,申请失败。
void gpio_free(unsigned gpio)
如果不使用某个 GPIO了,那么就可以调用 gpio_free函数进行释放。
@gpio:要释放的 gpio标号。
int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
该函数用来申请单个GPIO,但是在申请的时候可以设置flag标志,例如,该函数在申请GPIO资源的同时,直接将GPIO的方向设置为输入或者输出。
int gpio_request_array(const struct gpio *array, size_t num);
void gpio_free_array(const struct gpio *array, size_t num);
这两个函数用来向系统中申请或者释放多个GPIO资源。
int devm_gpio_request(struct device *dev, unsigned gpio, const char *label);
int devm_gpio_request_one(struct device *dev, unsigned gpio, unsigned long flags, const char *label);
void devm_gpio_free(struct device *dev, unsigned int gpio);
这3个函数也是用来向系统申请或者释放GPIO资源,但是函数带有devm_前缀,也就是说,这是带设备资源管理版本的函数,因此在使用上面的函数时,需要指定设备的struct device指针。
int gpio_direction_input(unsigned gpio)
此函数用于设置某个 GPIO为输入。
@gpio:要设置为输入的 GPIO标号。
@返回值: 0,设置成功;负值,设置失败。
int gpio_direction_output(unsigned gpio, int value)
此函数用于设置某个 GPIO为输出,并且设置默认输出值。
@gpio:要设置为输出的 GPIO标号。
@value GPIO默认输出值。
@返回值: 0,设置成功;负值,设置失败。
int __gpio_get_value(unsigned gpio)
此函数用于获取某个 GPIO的值 (0或 1)
void __gpio_set_value(unsigned gpio, int value)
此函数用于设置某个 GPIO的值
int gpio_to_irq(unsigned int gpio)
此函数用于将当前已经申请GPIO号转换为IRQ号,也就是获取当前GPIO的中断线,函数调用成功后,将返回对应的IRQ号
更多推荐
所有评论(0)