请问在整个R系列里Tina-Linux4.9部分平台唤醒源配置有哪些呢,求大佬解答
本回答来源全志R系列Tina-Linux4.9部分平台唤醒源配置
【简介】
在Linux-4.9中, 存在两种配置配置唤醒源
其中,策略1 为Linux内核提供的配置方式,也是Tina日后主流推广使用的方式, 策略2是由于过度阶段,部分GPIO唤醒源未能兼容Linux配置,所做的兼容配置
【分析】
策略1: 向内核声明wakeup-source,由内核保证唤醒中断使能
常用平台有: MR813,R818,R329等
方法1: 通过device_init_wakeup申请wakup_source,然后通过dev_pm_set_wake_irq注册中断号即可
参考: linux-4.9/drivers/rtc/rtc-sunxi.c
方法2: 通过device_init_wakeup申请wakup_source,然后在suspend/resume函数中,调用enable/disable_irq_wake即可
参考: linux-4.9/drivers/input/keyboard/gpio_keys.c
策略2: 设置一个标志位,在休眠后期,由平台注册的休眠函数重新使能中断
常用平台有: R311,MR133,R328等
方法1: 通过调用 int enable_gpio_wakeup_src(int para) 函数接口配置。(para 为KERNEL对GPIO解析得到的标号)
参考: linux-4.9/drivers/bluetooth/rtl_btlpm.c
上述方法1只能支持使用GPIO中断的外部唤醒源的配置,内部唤醒源配置一般也采用策略1中的两种方法。
参考: linux-4.9/drivers/rtc/rtc-sunxi.c
参考: linux-4.9/drivers/input/keyboard/sunxi-keyboard.c
【其他】
需要注意的是,本文所指的唤醒源配置仅是指 使能中断。
例如,配置一个GPIO唤醒源,除了使能中断(配置唤醒源)外,还需驱动自己保证该IO的复用功能,上下拉状态配置正确。
内部唤醒源和外部唤醒源