summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2017-01-02 10:04:58 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2017-01-06 22:50:08 +0000
commitdfb93dda00cb159da7e21aef1fda2f35ccfe8bb6 (patch)
tree2a231c6ae3b4301f12a4a33bf2ba72cfd4589435
parent6aaee50cda1fceab93b5743c219d90efa99c93ac (diff)
downloadchrome-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.c13
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(&params);
current_batt_params = &params;
}
- /* 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))