请教关于Android下键盘驱动问题
我在ARM9平台上移植Android,移植键盘驱动时遇上一些问题,请教一下:
1:进入中断后并且得到了键值,但是用input_report_key函数传递键值后驱动无法进入用户程序;
2:用户程序的read函数是否是这样用的:
kp = open ("/dev/event0", O_RDONLY);
.............................
read (kp, &key_value, sizeof (KEY_VALUE));
&key_value是我存放读取出来的键值的结构体指针。
static irqreturn_t vs_kp_interrupt(int irq, void *dev_id) { struct vs_kp_dev *vsKpDev = dev_id; unsigned char scancode; int tmp = 0; // printk("Occured Keyboard Interrupt,irq = %d\n",irq); scancode = readl(vsKpDev->kpBase + KEYPAD_REG); //get and invert scancode return IRQ_HANDLED; |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
给你一些思路吧:
1、你移植的这个驱动,是不是完全和你的硬件设备匹配的?
2、跟踪你按键中断,看寄存器读出来的是什么值,和你的键盘的datasheet对照一下;
3、抛开Linux系统,你能理解键盘中断到中断处理是怎么回事的么?如果明白,再结合Linux驱动的特点,彻底把它搞明白。
中断处理应该没问题的,至于硬件设备匹配方面,裸机程序是我写的,至少寄存器配置那块不会有错。
驱动已经能读出键盘的值,但是中断处理程序打印出读取的键盘值之后,返回到测试程序时出错,返回不了。我对输入子系统那块了解不是很深入。