相逢一醉是前缘
前言
大多数的PMIC不支持硬件延时开机功能,例如目前我这边使用的PMIC,测量开机时序只有1MS,容易形成误触开机,需要做延时功能
核心逻辑
不同的平台实现的逻辑大体相似,在系统初始化阶段,做按键判断,在设定时间范围内读出的按键状态是否是按开机键,如果是则进行开机流程,否则进行关机处理,例如PMIC通过I2C连接,可以读对应寄存器进行此时的按键状态进行判断
示例代码
#define EXTON1Y_PRESS (0x02)
#define BOOT_DELAY (5) //500ms
int boot_delay = (int)BOOT_DELAY;
if(reason == SYS_BR_CHARGE){
while(boot_delay--){
if(get_extern1() != EXTON1Y_PRESS){
printf("goto powerdown");
powerdown(1);
}else{
udelay(1000*100);
}
}
}
#endif