http://bigfirebird.javaeye.com/blog/718496
/*按键驱动程序*/
/*mini2440所用到的按键资源*/
/**************************************************/
/* 按键 对应的IO寄存器 对应的中断引脚*/
/* K1 GPG0 EINT8 */
/* K2 GPG3 EINT11 */
/* K3 GPG5 EINT13 */
/* K4 GPG6 EINT14 */
/* K5 GPG7 EINT15 */
/* K6 GPG11 EINT19 */
/**************************************************/
/*要搞清楚谁是输入*/
/*在这里,按键控制对应的中断引脚,从而控制对应的IO寄存器*/
/*相当于信息从外面输入*/
/*我们要做的是根据对应的输入信息,来采取相应的响应动作*/
/*这就达到了中断响应的目的*/
/*其核心就是要检测*/
/*那么,该如何去检测呢?*/
/*通过什么来检测呢?*/
/*如何得知一个设备究竟用到哪些资源呢?*/
/*这是个非常重要的问题*/
/*我想应该看具体的电路原理图*/
/*只有看图,才能了解具体的电路连接情况*/
/*从而得知设备所需的硬件资源*/
/*厂商的原理图通常给的都比较详细*/
/*引用的头文件*/
#include <linux/module.h> /*模块有关的*/
#include <linux/kernel.h> /*内核有关的*/
#include <linux/fs.h> /*文件系统有关的*/
#include <linux/init.h> /*init*/
#include <linux/delay.h> /*delay*/
#include <linux/poll.h> /*poll*/
#include <asm/irq.h> /*中断*/
#include <linux/interrupt.h> /*linux中断*/
#include <asm/uaccess.h> /*uaccess*/
#include <asm/arch/regs-gpio.h> /*寄存器设置*/
#include <asm/hardware.h> /*hardware*/
/*定义宏*/
#define BUTTON_MAJOR 221 /*主设备号,本来是232,我改为221*/
#define DEVICE_NAME "buttons_my" /*设备名,本来是buttons,我加上了_my*/