gpio_irq.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/irq.h>
#include <asm/irq.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#define GPIO_PIN2_8_NUM (2*32+8)
int gpio_drv_release(struct inode *inode, struct file *file) //卸载中断
{
free_irq(gpio_to_irq(GPIO_PIN2_8_NUM),0);
return 0;
}
static irqreturn_t buttons_irq (int irq, void *dev_id) //中断服务函数
{
printk("irq=%d\n",irq);
return IRQ_HANDLED;
}
static int gpio_drv_open(struct inode *inode, struct file *file)
{