输入子系统实现按键中断

内核input_dev.c驱动程序#include <linux/init.h>#include <linux/module.h>#include <linux/input.h>#include <linux/interrupt.h>#include <mach/gpio.h>#include <asm/gpio.h&g...
摘要由CSDN通过智能技术生成

内核input_dev.c驱动程序

#include <linux/init.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <mach/gpio.h>
#include <asm/gpio.h>
#include <asm/io.h>

#define GPBASE_ADDR 0X11000000 //K1按键对应的GP寄存器基地址
#define GPX3CON GPBASE_ADDR + 0X0C60 //K1按键对应的控制寄存器物理地址
void *gpx3con = NULL; //存放K1按键对应的虚拟地址

int irqnum; //K1按键对应的中断号码
struct input_dev *wx_inputdev; //输入子系统对应的结构体(描述输入设备信息)


/*中断处理函数
	irqnum:中断号码
	buf:注册中断时最后一个参数
*/
irqreturn_t keyfun_handler(int irqnum, void *buf)
{
	printk("-----------%s-----------\n", __FUNCTION__);

	//gpx3con + 4为K1按键对应的数据寄存器(判断相应的位是0还是1得到按键抬起还是落下)
	if((readl(gpx3con + 4) & (1<<2)) != 0){ 
		input_event(wx_inputdev, EV_KEY, KEY_POWER, 0);//由输入子系统向用户层传输标志或数据
		input_sync(wx_inputdev);
	}else if(0 == (readl(gpx3con + 4) & (1<<2))){
		input_event(wx_i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值