################### GPIO中断
芯片厂商的gpio被定义在drivers/gpio/gpio-xxx.c中
1.基于GPIO子系统的IO口控制
/*用于申请一个GPIO管脚*/
1.1 int gpio_request(unsigned gpio, const char* label)
gpio --- 要申请的gpio标号,使用of_get_named_gpio函数从设备树获取
指定的gpio信息,此函数会发挥这个GPIO标号
label --- 别名
/*用于释放管脚的空间*/
1.2 void gpio_free(unsigned gpio)
/*用于设置某个gpio输入*/
1.3 int gpio_direction_input(unsigned gpio)
/*用于设置某个gpio输出,并设置默认输出值*/
1.4 int gpio_direction_output(unsigned gpio, int value)
/*用于获取某个GPIO的值(0\1)*/
1.5 #define gpio_get_value __gpio_get_value
int __gpio_get_value(unsgined gpio)
返回值 --- 非负值:得到的GPIO值,负值:获取失败
/*gpio_set_value*/
1.6 #define gpio_set_value __gpio_set_value
void __gpio_set_value(unsigned gpio, int value)
/*从节点名找到设备节点*/
1.7 static inline struct device_node *of_find_node_by_path(const char *path)
/*从设备节点搜索gpio属性,返回GPIO编号*/
1.8 static inline int of_get_named_gpio(struct device_node *np,
const char *propname, int index)
propname --- 属性名
index --- 第index个属性
################### GPIO中断
/*通过GPIO号申请中断*/
2.1 static inline int gpio_to_irq(unsigned int gpio)
/*中断处理函数*/
2.2 static irqreturn_t myIntHandler(int irq, void *dev_id)
/*申请中断*/
2.3 request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
/*中断释放*/
2.4 const void *free_irq(unsigned int, void *);