【FAQ】全志R系列Tina-Linux4.9部分平台唤醒源配置
- 
					
					
					
					
 【背景】 Tina 休眠唤醒框架一直处于不断迭代,向内核标准配置过渡的过程,因此唤醒源配置也从自己实现的接口向内核配置接口过度,因此本文简要说明,Linux4.9部分平台MR813,R818,R329,R311,MR133,R328平台唤醒源配置说明。 【简介】 在Linux-4.9中, 存在两种配置配置唤醒源 - 
策略1:向内核声明wakeup-source,由内核保证唤醒中断使能。 
- 
策略2:本质上是设置一个全局标志位,然后通过参数传递给底层休眠接口,并在休眠流程末,由平台注册的休眠函数重新使能标记中断。 
 其中,策略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的复用功能,上下拉状态配置正确。
- 
内部唤醒源和外部唤醒源 
 内部唤醒源是指: 具有独立中断号的核内外设配置的唤醒源,如 lradc按键,RTC闹钟等
 外部唤醒源是指: 需要借助GPIO中断实现唤醒的外部设备,如WIFI唤醒,TP唤醒等
 
- 
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号