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);
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 ||
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())
{
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)
{
#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;
}
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())
{
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;
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))