diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2017-01-02 10:04:58 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2017-01-06 22:50:08 +0000 |
commit | dfb93dda00cb159da7e21aef1fda2f35ccfe8bb6 (patch) | |
tree | 2a231c6ae3b4301f12a4a33bf2ba72cfd4589435 | |
parent | 6aaee50cda1fceab93b5743c219d90efa99c93ac (diff) | |
download | chrome-ec-dfb93dda00cb159da7e21aef1fda2f35ccfe8bb6.tar.gz |
charger: Prevent power-on while battery is disconnected
Wait for revival of disconnected battery before allowing AP power-on.
BUG=chrome-os-partner:61462
BRANCH=gru
TEST=Manual on kevin, put battery into ship mode, verify that bd9995*
CHG_EN is set prior to AP power-on.
Change-Id: I77254535ad5d627376cb0bec2289b96e6b4fc670
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/424069
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Commit-Queue: Wonjoon Lee <woojoo.lee@samsung.com>
Tested-by: Wonjoon Lee <woojoo.lee@samsung.com>
(cherry picked from commit 03ec07d618895654f72ed66f0edda70c5b7493f2)
Reviewed-on: https://chromium-review.googlesource.com/424986
-rw-r--r-- | common/charge_state_v2.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 3835cf1bd6..782fee5a24 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -966,6 +966,7 @@ int charge_prevent_power_on(int power_button_pressed) { int prevent_power_on = 0; #ifdef CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON + int battery_disconnected = 0; struct batt_params params; struct batt_params *current_batt_params = &curr.batt; static int automatic_power_on = 1; @@ -982,11 +983,15 @@ int charge_prevent_power_on(int power_button_pressed) battery_get_params(¶ms); current_batt_params = ¶ms; } - /* 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 || + battery_disconnected = (battery_get_disconnect_state() == + BATTERY_DISCONNECTED); #endif + + /* Require a minimum battery level to power on */ + if (current_batt_params->is_present != BP_YES || + battery_disconnected || current_batt_params->state_of_charge < CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON) prevent_power_on = 1; @@ -997,7 +1002,7 @@ int charge_prevent_power_on(int power_button_pressed) * LIKELY_PD_USBC_POWER_MW since it may speak PD and provide * sufficient power once we enable PD communication. */ - if (prevent_power_on) + if (prevent_power_on && !battery_disconnected) if (charge_manager_get_power_limit_uw() >= MIN(LIKELY_PD_USBC_POWER_MW * 1000, CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW * 1000)) |