Tiny210V2SDK开发板那个总共有8个用户按键,他们均从cpu芯片s5pv210的引脚直接引出
GPIO口与对应的中断(摘自:Smart210用户手册.pdf 39页)
如果是纯linux系统,那么drivers/char/mini210_buttons.c是这些gpio按键对应的驱动程序
如果是android系统,那么
arch/arm/mach-s5pv210/mach-mini210.c是这些gpio按键的platform device
drivers/input/keyboard/gpio_keys.c是gpio按键的platform driver以及给android文件系统提供的input_event driver
struct gpio_keys_platform_data结构体中可以看到gpio按键的定义以及给android系统提供的键值。
一旦系统跑的是android,那么底层的linux driver是不能使用这8个gpio的,因为已经被android占用了,可以在内核中配置让android不使用这些gpio按键
Device Drivers --->
Input device support --->
[*] keyboard --->
<> GPIO button
如上,去掉GPIO button的配置,这样android系统就不使用这8个gpio按键了。这时linux driver可以使用任意一个gpio按键了。
在linux driver安装gpio中断函数
static irqreturn_t button_interrupt(int irq, void *dev_id) { return IRQ_HANDLED; } u32 irq = gpio_to_irq(S5PV210_GPH2(0)); ret = request_irq(irq, button_interrupt, IRQ_TYPE_EDGE_RISING, "KEY0", NULL); if (ret) { printk(KERN_ERR "install irq %d failed!\n", irq); goto err2; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-05 16:39:15