Linux GPIO Key 驱动的加载
gpio-keys是基于input子系统实现的一个通用的GPIO按键驱动,基于platform来实现,位于drivers/input/keyboard/gpio_keys.c,这个文件是硬件无关的,而硬件有关的需要我们自己来注册.进入这个gpio_keys.c这个函数,第一步就是初始化.
static int __init gpio_keys_init(void) { return platform_driver_register(&gpio_keys_device_driver); }
然后加载这个结构体:
static struct platform_driver gpio_keys_device_driver = { .probe = gpio_keys_probe, .remove = __devexit_p(gpio_keys_remove), .driver = { .name = "gpio-keys", .owner = THIS_MODULE, #ifdef CONFIG_PM .pm = &gpio_keys_pm_ops, #endif } };
进入后会执行probe函数,进行设备的probe.当然只是注册设备,没什么必要看.还比如gpio_keys_isr就是去抖动检测,这是上半部分函数.
static irqreturn_t gpio_keys_isr(int irq, void *dev_id) { struct gpio_button_data *bdata = dev_id; struct gpio_keys_button *butto