/***************************************************************************** 函 数 名 : power_off_timeout_isr 功能描述 : 开机定时器处理,检测C核状态 输入参数 : 输出参数 : 无 返 回 值 : 调用函数 : 被调函数 : *****************************************************************************/ static int power_on_timeout_isr( void ) { c_power_st_e status = POWER_OS_OK; DRV_RUN_MODE run_mode = get_run_mode(); pr_dbg("power_on_timeout_isr, system had been powered one minute ago\n "); #if (MBB_CHARGE == FEATURE_ON) if(chg_is_powdown_charging()) { pr_dbg("CHG:no need to check c core status!\n "); return 0; } #endif /*MBB_CHG_PLATFORM_V7R2*/ if(RUN_MODE_NORMAL == run_mode) { /* 读取C核启动状态 */ status = power_on_c_status_get(); #if defined(DRV_BUILD_SEPARATE) /* C核异常,设置normal模式启动失败 */ if(status < POWER_BSP_OK) #else if(status < POWER_MSP_OK) #endif { pr_dbg("c core power on fail!\n "); /* 进入recovery模式 */ bsp_drv_power_reboot(); /* coverity[no_escape] */ for(;;) ; } } else if(RUN_MODE_RECOVERY == run_mode){ /* for test */ #if 0 bsp_drv_power_reboot(); /* 等待系统重启 */ while(1); #endif } pr_dbg("system power on ok!\n "); /* clear warm boot cnt */ power_on_wdt_cnt_set(); (void)bsp_softtimer_free(&power_item_info.on_timer); return 0; }
/***************************************************************************** 函 数 名 : power_on_mode_get 功能描述 : 获取开机模式 输入参数 : 输出参数 : 无 返 回 值 : 调用函数 : 被调函数 : *****************************************************************************/ static void power_on_mode_get( void ) { DRV_START_MODE mode = DRV_START_MODE_NORMAL; DRV_RUN_MODE boot_mode = get_run_mode(); DRV_CHARGING_MODE pwd_flag = get_pd_charge_flag(); if((RUN_MODE_NORMAL == boot_mode)){ mode = DRV_START_MODE_NORMAL; } else if((RUN_MODE_RECOVERY == boot_mode) && ((POWER_DOWN_CHARGING_MODE == pwd_flag))) { mode = DRV_START_MODE_CHARGING; } else if((RUN_MODE_RECOVERY == boot_mode) && ((NORMAL_CHARGING_MODE == pwd_flag))) { mode = DRV_START_MODE_UPDATE; } power_item_info.mode = mode; }
/***************************************************************************** 函 数 名 : power_on_mode_get 功能描述 : 获取开机模式 输入参数 : 输出参数 : 无 返 回 值 : 调用函数 : 被调函数 : *****************************************************************************/ static void power_on_mode_get( void ) { DRV_START_MODE mode = DRV_START_MODE_NORMAL; DRV_RUN_MODE boot_mode = get_run_mode(); DRV_CHARGING_MODE pwd_flag = get_pd_charge_flag(); #if (FEATURE_ON == MBB_DLOAD) if((RUN_MODE_NORMAL == boot_mode) && (POWER_DOWN_CHARGING_MODE != pwd_flag)) { /* 正常模式 */ mode = DRV_START_MODE_NORMAL; } else if((RUN_MODE_NORMAL == boot_mode) && ((POWER_DOWN_CHARGING_MODE == pwd_flag))) { /* 关机充电模式 */ mode = DRV_START_MODE_CHARGING; } else if(RUN_MODE_RECOVERY == boot_mode) { /* 升级模式 */ mode = DRV_START_MODE_UPDATE; } #else if((RUN_MODE_NORMAL == boot_mode)){ mode = DRV_START_MODE_NORMAL; } else if((RUN_MODE_RECOVERY == boot_mode) && ((POWER_DOWN_CHARGING_MODE == pwd_flag))) { mode = DRV_START_MODE_CHARGING; } else if((RUN_MODE_RECOVERY == boot_mode) && ((NORMAL_CHARGING_MODE == pwd_flag))) { mode = DRV_START_MODE_UPDATE; } #endif power_item_info.mode = mode; }