summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-12-15 16:19:49 -0800
committerShawn N <shawnn@chromium.org>2016-12-16 22:43:11 +0000
commitcf006326bb4d5c6f42fe3a8aa899192c67751305 (patch)
tree29cadbe570699857e4e1b831b4b5b9a1c8564ca4
parenta5c06c28913e09e6121afa8036973842ffdb708c (diff)
downloadchrome-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.c6
-rw-r--r--common/charge_state_v2.c7
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() <