Linux内核 GPIO操作部分API
内核中关于GPIO的操作API主要集中在<linux/of_gpio.h>和<linux/gpio.h>中,前者主要是GPIO直接与设备树相关的操作,在Linux 设备树操作API中已经记录过,后者主要是针对GPIO本身的操作,常用的有下面几个。
//linux/gpio.h
/**
* gpio_request_one - request a single GPIO with initial configuration
* @gpio: the GPIO number
* @flags: GPIO configuration as specified by GPIOF_*
* @label: a literal description string of this GPIO
*/
int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
/* 判断gpio是否有效 */
bool gpio_is_valid(int number)
/**
* 功能:设置指定gpio的工作模式为输入模式
* @gpio - 编号(要找的是那个cell)
* 失败:负数,绝对值错误码,成功:0
*/
int gpio_direction_input(unsigned gpio)
/**
* 功能:设置指定gpio的工作模式为输出模式
* gpio - 编号(要找的是那个cell)
* 失败:负数,绝对值错误码,成功:0
*/
int gpio_direction_output(unsigned gpio, int value)
/* 设置GPIO的值 */
void gpio_set_value(unsigned gpio, int value)
/* 获取GPIO的值 */
int gpio_get_value(unsigned gpio)
/* 申请软中断到GPIO引脚 */
int gpio_to_irq(unsigned int gpio)
/* 释放GPIO */
gpio_free(unsigned gpio)