A20+209待机时,209会把A20的功耗做到10mA左右,因为供电是5V,这样功耗是0.05W。
从待机到起来的动作是由209控制的,由于待机时A20不工作,所以IR遥控是不能唤醒的。
但从正常运行到待机的过程,就可以通过IR遥控来触发。它的流程是A20检测到power key,弹出对话款给用户确认关机,用户确认,系统执行power off流程,系统通过iic总线控制209的寄存器,通知209关闭电源,进入待机状态。
也可以通过io按键来控制209进入待机,io口是209的power pin,不是A20的io口,所以如果电源键被按下,A20不是直接知道的,而是A20通过iic读取209的寄存器获取的。在system_config.fex文件里,关于pmu的设置有这方面的设定。一般来说,假如A20没有死机的情况下,它会不断查询这个电源按键的状态,假如用户长按,就会有long press的事件上报,然后由A20发出关机命令给209。但假如A20系统死机了,就不可能主动读取到电源键的按下。这种情况下,209会有一个最大等待时间,比如10秒钟,假设电源键按下10秒之后还没有收到A20的关机命令,则它会强制把电源关闭,实现硬关机。
电源方面的驱动代码是处于drivers/power/axp_power/axp_20sply.c。
调试中遇到的问题:
在开机时,按键无法关机,但IR遥控可以。原因是内核配置不对,没有选择AXP209的驱动,而是选择了AXP159的,由于AXP159不兼容AXP209,所以不能检测到按键动作。解决办法是重新配置内核选项并更新内核。