From: p15692025051 <846603105@qq.com> Date: Thu, 6 Jul 2023 10:19:51 +0000 (+0800) Subject: 充电逻辑修改 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=db986322aeab7c92074d79788e42c31902f8a622;p=mirrors%2FASR3603_Z5.git 充电逻辑修改 --- diff --git a/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_charger.c b/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_charger.c index 4222fc4b..3bdd08a3 100644 --- a/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_charger.c +++ b/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_charger.c @@ -60,6 +60,7 @@ extern UINT8 charger_present; extern BOOL Battery_charge_full; PMIC_CHARGE_EVENT_T charger_event; PMIC_CONFIG_T* g_pmicConfig = NULL; +UINT32 g_pmicChargeCycleStartTime = 0; PMIC_BATTERY_LEVEL_CFG* g_bat_level_cfg = NULL; extern unsigned int pm813_charge_full_cnt; extern U32 GetChargeStatus(void); @@ -601,6 +602,8 @@ void ChargerManager(void) charger_event = PMIC_CHARGE_TIMER; if(Pmic_is_pm813s() || Pmic_is_pm813_a3()) g_pmicChargerHighTemperatureCheckFlag = TRUE; + + g_pmicChargeCycleStartTime = mHAL_timer_count_read(MHAL_TS_TIMER_ID); break; case PMIC_CHARGE_TIMER: if (nextState == PMIC_CHARGER_UNKNOWN || @@ -627,6 +630,14 @@ void ChargerManager(void) nextState = PMIC_CHARGER_FAST_CHARGE; } } + + if(Pmic_is_pm803() && (nextState != PMIC_CHARGER_FULL_CHARGE) + && (pmic_GetGpadcBatteryLevel() < g_pmicConfig->BatteryDischarger_table[0]) + && ((mHAL_timer_count_read(MHAL_TS_TIMER_ID) - g_pmicChargeCycleStartTime) > PMIC_CHG_TIMEOUT)) + { + PMIC_TRACE("PMIC_CHG_TIMEOUT !!!!!!\n"); + nextState = PMIC_CHARGER_TIMED_OUT; + } // Get current battery voltage if(!Pmic_is_pm813s() && !Pmic_is_pm803()) { diff --git a/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_mmi.c b/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_mmi.c index 6869bc8d..7aa4b635 100644 --- a/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_mmi.c +++ b/2.sdk/sdk/product/craneg_modem/framework/hal/chip/charger/power_mmi.c @@ -144,6 +144,7 @@ Battery_Callback Send_battery_status = NULL; extern PMIC_CONFIG_T* g_pmicConfig; UINT16 ChangeVoltageToBatteryRate(UINT8 * pPercent); +extern UINT32 g_pmicChargeCycleStartTime; BOOL ChargerCallbackRegister(Usb_PlugCallback Usb_charger_status,Sim_CallCallback get_call_status,Battery_Callback battery_status) { @@ -709,6 +710,16 @@ PRIVATE INT pm_GetStableBatteryLevel(UINT8 * pPercent) #endif } break; + case PMIC_CHARGER_TIMED_OUT: + { + if (batLevel > 4050) + { + g_pmBatteryStable.stable = g_pmBatteryStable.avg; + g_pmBatteryStable.precent = 100; + bcl = 100; + } + } + break; default: break; } @@ -859,10 +870,27 @@ VOID pm_ChargerHandler(void) UOS_ResumeTask((TASK_HANDLE*)get_usb_mon_task()); #endif #endif + g_pmicChargeCycleStartTime = mHAL_timer_count_read(MHAL_TS_TIMER_ID); + { + if(Pmic_is_pm803() && (!GetChargerEnableGpioStatus())){ + ForceChargerFinished(FALSE); + } + } }else{ charger_event = PMIC_CHARGE_DC_OFF; status = PMIC_CHARGER_UNPLUGGED; charger_present = 0; + + /* + use Magnetic contact USB cable produce Instantaneous overvoltage when it contact pin, + when usb open, extern charger ic should disabled. + when usb close, extern charger ic must Delayed open in order to overvoltage + */ + { + if(Pmic_is_pm803() && GetChargerEnableGpioStatus()){ + ForceChargerFinished(TRUE); + } + } #ifndef CONFIG_MINIPHONE if(DM_IsPowerOnByCharger()) { @@ -1291,6 +1319,12 @@ BOOL pm_BatteryInit(VOID) if(get_usb_connect_status()){ pm_ChargerHandler(); } + else{ + //extern charger ic is enalbe at default status + if(Pmic_is_pm803()){ + ForceChargerFinished(TRUE); + } + } #endif if(startup_is_silent_reset() && !get_usb_connect_status()) silent_reset_usb_monitor_called_first = 1; @@ -1460,7 +1494,7 @@ UINT16 ChangeVoltageToBatteryRate(UINT8 * pPercent) if(uVoltage >= g_pmicConfig->BatteryDischarger_table[0]) { #ifdef PM_BAT_CUSTOM_CHANGES - if (charger_present) + if (charger_present && Pmic_is_pm803()) { PMIC_DEBUG_TRACE("FullCharging status = %d, LastRate = %d, Count = %d\r\n", pmic_GetChargerStatus(), g_LastBatteryRate, uVolFullCount); if ((g_LastBatteryRate > 0) && (g_LastBatteryRate < 99))