Tiny210 android系统中的gpio按键

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;
}



 

你可能感兴趣的:(alsa子系统)