KE发生后,实现PMIC完全掉电重启
时间:10-02
整理:3721RD
点击:
正常KE重启,pMIC没有掉电,但有些特殊应用场景下,KE后要求PMIC完全掉电。
但此种方式重启后,WDT寄存器复位,无法获取KE分析的DB文件,所以此方法仅适合作为暂时的workaround方法。
解决方法:
1.bootable\bootloader\preloader\platform\MT6755\src\drivers\rtc.c
- rtc_save_2sec_stat()
- { …
- if (reboot & RTC_BBPU_2SEC_EN) {
- … }
- print("RTC_AL_MTH 0x%x\n", RTC_Read(RTC_AL_MTH));
- if (RTC_Read(RTC_AL_MTH) & 0x100) {
- print("Force SPAR power on\n");
- RTC_Write(RTC_AL_MTH, RTC_Read(RTC_AL_MTH) & (~0x100)); /* clear PMIC shutdown reboot
- status */
- g_rtc_2sec_stat = true;
- }
- }
2.bootable/bootloader/preloader/custom/{project}/inc/cust_rtc.h
- #define RTC_2SEC_REBOOT_ENABLE 1
3.wdt_arch_reset()函数及其C文件添加如下代码
- #include <mach/upmu_hw.h>
- #include <mt_plat/upmu_common.h>
- u32 result = 0;
- pmic_set_register_value(PMIC_RG_WDTRSTB_MODE, 1);
- pmic_set_register_value(PMIC_WDTRSTB_STATUS, 1);
- pmic_set_register_value(PMIC_RG_WDTRSTB_FB_EN, 1);
- pmic_read_interface(0x4000, &result, 0xffff, 0x0);
- result &= 0xF7;
- result |= 0x4300;
- pmic_config_interface(0x4000, value, 0xffff, 0x0); /* Clear AUTO */
- pmic_config_interface(0x4018, 0x5,0x7,0x6); /*Force enable SPAR */
- pmic_config_interface(0x4022, 0x1,0x1,0x8); /* Set PMIC shutdown reboot status */
- pmic_config_interface(0x403c, 0x1,0x1,0x0); /*write trigger */
- /* wait for writing done */
- do {
- pmic_read_interface(0x4000, &result, 0x1, 0x6);
- } while (result != 0);