微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > KE发生后,实现PMIC完全掉电重启

KE发生后,实现PMIC完全掉电重启

时间:10-02 整理:3721RD 点击:

正常KE重启,pMIC没有掉电,但有些特殊应用场景下,KE后要求PMIC完全掉电。
但此种方式重启后,WDT寄存器复位,无法获取KE分析的DB文件,所以此方法仅适合作为暂时的workaround方法。

解决方法:
1.bootable\bootloader\preloader\platform\MT6755\src\drivers\rtc.c

  1. rtc_save_2sec_stat()
  2. { …
  3. if (reboot & RTC_BBPU_2SEC_EN) {
  4. … }
  5. print("RTC_AL_MTH 0x%x\n", RTC_Read(RTC_AL_MTH));
  6. if (RTC_Read(RTC_AL_MTH) & 0x100) {
  7. print("Force SPAR power on\n");
  8. RTC_Write(RTC_AL_MTH, RTC_Read(RTC_AL_MTH) & (~0x100)); /* clear PMIC shutdown reboot
  9. status */
  10. g_rtc_2sec_stat = true;
  11. }
  12. }

复制代码


2.bootable/bootloader/preloader/custom/{project}/inc/cust_rtc.h

  1. #define RTC_2SEC_REBOOT_ENABLE 1

复制代码


3.wdt_arch_reset()函数及其C文件添加如下代码

  1. #include <mach/upmu_hw.h>
  2. #include <mt_plat/upmu_common.h>
  3. u32 result = 0;
  4. pmic_set_register_value(PMIC_RG_WDTRSTB_MODE, 1);
  5. pmic_set_register_value(PMIC_WDTRSTB_STATUS, 1);
  6. pmic_set_register_value(PMIC_RG_WDTRSTB_FB_EN, 1);
  7. pmic_read_interface(0x4000, &result, 0xffff, 0x0);
  8. result &= 0xF7;
  9. result |= 0x4300;
  10. pmic_config_interface(0x4000, value, 0xffff, 0x0); /* Clear AUTO */
  11. pmic_config_interface(0x4018, 0x5,0x7,0x6); /*Force enable SPAR */
  12. pmic_config_interface(0x4022, 0x1,0x1,0x8); /* Set PMIC shutdown reboot status */
  13. pmic_config_interface(0x403c, 0x1,0x1,0x0); /*write trigger */
  14. /* wait for writing done */
  15. do {
  16. pmic_read_interface(0x4000, &result, 0x1, 0x6);
  17. } while (result != 0);

复制代码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top