,使得在休眠时,这些中断是设为开启的,当有中断来,则会退出唤醒,常见的中断源有按键,USB等.
3.以按键驱动为例(基于内核3.10.14)
在内核中,有个input按键子系统"gpio-keys"(位于...接下来开始分析platform_driver(位于driver/input/keyboard/gpio.keys.c),看看是如何注册按键和实现唤醒的.
4.分析driver/input/keyboard...,用来上报input事件,并判断按键中断源,如果是的话,则调用pm_relax(),通知pm子系统唤醒工作结束
void pm_wakeup_event(struct device *dev, unsigned...//在中断出口调用,告知结束唤醒
在中断前调用pm_stay_awake(),中断结束时再调用一次pm_relax()函数.
4.6 如果想延时唤醒,也可以使用另一种唤醒休眠,则只需要一个函数实现:
pm_wakeup_event...(),如何设置按键的(只加了重要的部分)
static int gpio_keys_setup_key(struct platform_device *pdev,