这里以一个按键程序为例进行简单说明
首先是驱动程序,基本和之前3.16.57版本的一样的,唯一不同就是增加了of_match_table 的一个和设备树节点的匹配表而已
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/gpio.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <linux/irqreturn.h> /* 中断函数的返回值用到 */
#include <linux/interrupt.h> /* 中断req和free用到 */
#include <linux/input.h>
#include <linux/timer.h>
#include <linux/platform_device.h>
#define NUM_KEY 1
struct pin_desc {
int irq;
char *name;
int pin;
int pin_val;
};
static struct pin_desc pins_desc[NUM_KEY];
//中断处理函数
static irqreturn_t gpio_keys_irq_isr(int irq, void *dev_id)
{
//打印中断号和中断函数名字
printk(KERN_INFO"gpio_keys_irq_isr %d\n", irq);
return IRQ_HANDLED;
}
static int button_probe(struct platform_device *pdev)
{
int error = 0;
struct resource *res;