遇到系统卡死的情形,我们经常长按power键10多s触发reset,强制机器重启。Pmic可以通过设置寄存器来配置不同的reset等级实现不同的效果。
13.1、reset等级(RESET_TYPE)
- warm reset:这种等级的reset将保留DDR memory以及一部分的PMIC寄存器。
- hard reset:将清空DDR memory,以及保留和warm reset一样的部分PMIC寄存器。
- dvdd hard reset:将清空DDR memory,以及保留更多的PMIC寄存器,类似拔电池并保留VCOIN的状态。
- xvdd hard reset:将清空DDR memory和PMIC寄存器。
如果想达到拔电池的reset效果,可以通过配置DVDD hard reset来实现。如果要达到拔掉纽扣电池的效果,配置XVDD hard reset。
如果要想触发reset后可以抓dump,需要warm reset。有时候本身release代码,长按电源键,默认是warm reset,我们需要改成vdd hard reset。
13.2、reset设置
如果需要配置触发reset的等级和时间,通常需要修改两处:
/*pm_sbl_boot_oem.c*/
err_flag |= pm_app_pon_reset_cfg(PM_APP_PON_RESET_SOURCE_KPDPWR, ...)
/**.dtsi*/
qcom, pon_1 {
......
qcom.s1-timer = <6720> //modify here
}