diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-12-15 16:19:49 -0800 |
---|---|---|
committer | Shawn N <shawnn@chromium.org> | 2016-12-16 22:43:11 +0000 |
commit | cf006326bb4d5c6f42fe3a8aa899192c67751305 (patch) | |
tree | 29cadbe570699857e4e1b831b4b5b9a1c8564ca4 | |
parent | a5c06c28913e09e6121afa8036973842ffdb708c (diff) | |
download | chrome-ec-cf006326bb4d5c6f42fe3a8aa899192c67751305.tar.gz |
kevin: Treat batteries in disconnect as not present
For the purpose of determining whether we have enough energy to power-on
the system, batteries in disconnect should be considered not present,
because they do not provide VBAT until woken.
BUG=chrome-os-partner:60380
BRANCH=gru
TEST=Manual on kevin w/ BD99956A. Trigger battery disconnect, attach OEM
charger, verify device is revived without brownout. Repeat 10x.
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: Iae3db9527c2f6a5b6483118e7bebba4b2005735d
Reviewed-on: https://chromium-review.googlesource.com/420976
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
(cherry picked from commit 1722c48788c6fb871a5b79c7b487b4612dda1353)
Reviewed-on: https://chromium-review.googlesource.com/421225
-rw-r--r-- | board/kevin/board.c | 6 | ||||
-rw-r--r-- | common/charge_state_v2.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/board/kevin/board.c b/board/kevin/board.c index e7d4b2594d..abdc95dee9 100644 --- a/board/kevin/board.c +++ b/board/kevin/board.c @@ -208,7 +208,8 @@ int board_set_active_charge_port(int charge_port) */ if (!initialized && charge_port == CHARGE_PORT_NONE && - charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) { + (charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON || + battery_get_disconnect_state() == BATTERY_DISCONNECTED)) { CPRINTS("Bat critical, don't stop charging"); return -1; } @@ -243,7 +244,8 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma) */ if (supplier == CHARGE_SUPPLIER_PD && charge_ma < 1500 && - charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) { + (charge_get_percent() < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON || + battery_get_disconnect_state() == BATTERY_DISCONNECTED)) { CPRINTS("Using max ilim %d", max_ma); charge_ma = max_ma; } diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index e8ba63ec6c..3835cf1bd6 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -984,6 +984,9 @@ int charge_prevent_power_on(int power_button_pressed) } /* Require a minimum battery level to power on */ if (current_batt_params->is_present != BP_YES || +#ifdef CONFIG_BATTERY_REVIVE_DISCONNECT + battery_get_disconnect_state() == BATTERY_DISCONNECTED || +#endif current_batt_params->state_of_charge < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) prevent_power_on = 1; @@ -1245,6 +1248,10 @@ static int charge_command_charge_state(struct host_cmd_handler_args *args) * and external charger power. */ if ((curr.batt.is_present != BP_YES || +#ifdef CONFIG_BATTERY_REVIVE_DISCONNECT + battery_get_disconnect_state() == + BATTERY_DISCONNECTED || +#endif curr.batt.state_of_charge < CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT) && charge_manager_get_power_limit_uw() < |