接下来开始分析platform_driver(位于driver/input/keyboard/gpio.keys.c),看看是如何注册按键和实现唤醒的.
4.分析driver/input/keyboard.../gpio.keys.c
4.1该文件里有常用的函数有
static int gpio_keys_probe(struct platform_device *pdev);
设置按键和input_dev...struct gpio_button_data *bdata,const struct gpio_keys_button *button);
设置GPIO,设置input结构体支持的按键值,设置中断,设置防抖动机制...,如果有防抖动,则延时并退出,否则通过schedule_work()来调用gpio_keys_gpio_work_func()一次
static void gpio_keys_gpio_timer(unsigned...long _data);
定时器超时处理函数,用来实现防抖动,里面会通过schedule_work()来调用一次gpio_keys_gpio_work_func();
static void gpio_keys_gpio_work_func