diff options
-rw-r--r-- | common/charge_manager.c | 2 | ||||
-rw-r--r-- | common/charge_state_v2.c | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/common/charge_manager.c b/common/charge_manager.c index 3d78d5874b..7ae0400262 100644 --- a/common/charge_manager.c +++ b/common/charge_manager.c @@ -904,6 +904,8 @@ void charge_manager_leave_safe_mode(void) if (left_safe_mode) return; + CPRINTS("%s()", __func__); + cflush(); left_safe_mode = 1; if (charge_manager_is_seeded()) hook_call_deferred(&charge_manager_refresh_data, 0); diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 3387ac6302..8102029c21 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -1717,12 +1717,18 @@ void charger_task(void *u) } else #endif #ifdef CONFIG_BATTERY_REVIVE_DISCONNECT - battery_seems_to_be_disconnected = 0; + /* + * Always check the disconnect state. This is because + * the battery disconnect state is one of the items used + * to decide whether or not to leave safe mode. + */ + battery_seems_to_be_disconnected = + battery_get_disconnect_state() == + BATTERY_DISCONNECTED; if (curr.requested_voltage == 0 && curr.requested_current == 0 && - battery_get_disconnect_state() == - BATTERY_DISCONNECTED) { + battery_seems_to_be_disconnected) { /* * Battery is in disconnect state. Apply a * current to kick it out of this state. @@ -1732,7 +1738,6 @@ void charger_task(void *u) batt_info->voltage_max; curr.requested_current = batt_info->precharge_current; - battery_seems_to_be_disconnected = 1; } else #endif if (curr.state == ST_PRECHARGE || |