diff options
author | Jeffy Chen <jeffy.chen@rock-chips.com> | 2017-11-02 15:57:19 +0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2017-11-02 22:43:08 +0000 |
commit | 80dd77188c06d97ed02d462d72b2b69e92ee525c (patch) | |
tree | 10984c28c9e3ca16dfd198ea5452f2bce813d869 | |
parent | b42eebb9531f4ad58af6bc71abfe16601dc3a661 (diff) | |
download | chrome-ec-80dd77188c06d97ed02d462d72b2b69e92ee525c.tar.gz |
bob: Don't override charge profile if battery is in ship mode
Port changes cl/414610 to bob.
Form cl/414610
We must apply voltage / current to the battery to pull it out of
disconnect / ship mode, so don't force discharge if the battery happens
to be fully charged and in ship mode.
BUG=b:68498722
BRANCH=gru
TEST=build and boot
Change-Id: Ia020e28bf275890c6231c4a242086f092f3a7ece
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/750532
Commit-Queue: BoChao Jhan <james_chao@asus.com>
Tested-by: BoChao Jhan <james_chao@asus.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r-- | board/bob/battery.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/board/bob/battery.c b/board/bob/battery.c index 060e53abe9..53d54d8669 100644 --- a/board/bob/battery.c +++ b/board/bob/battery.c @@ -47,6 +47,8 @@ int board_cut_off_battery(void) return rv ? EC_RES_ERROR : EC_RES_SUCCESS; } +static int battery_not_disconnected; + enum battery_disconnect_state battery_get_disconnect_state(void) { uint8_t data[6]; @@ -58,9 +60,7 @@ enum battery_disconnect_state battery_get_disconnect_state(void) * This assumes the battery will not go to disconnect state during * runtime. */ - static int not_disconnected; - - if (not_disconnected) + if (battery_not_disconnected) return BATTERY_NOT_DISCONNECTED; if (extpower_is_present()) { @@ -74,7 +74,7 @@ enum battery_disconnect_state battery_get_disconnect_state(void) if (rv || (~data[3] & (BATTERY_DISCHARGING_DISABLED | BATTERY_CHARGING_DISABLED))) { - not_disconnected = 1; + battery_not_disconnected = 1; return BATTERY_NOT_DISCONNECTED; } @@ -95,7 +95,7 @@ enum battery_disconnect_state battery_get_disconnect_state(void) /* No safety fault, battery is disconnected */ return BATTERY_DISCONNECTED; } - not_disconnected = 1; + battery_not_disconnected = 1; return BATTERY_NOT_DISCONNECTED; } @@ -116,7 +116,8 @@ int charger_profile_override(struct charge_state_data *curr) curr->state = ST_IDLE; now_discharging = 0; /* Don't start charging if battery is nearly full */ - } else if (curr->batt.status & STATUS_FULLY_CHARGED) { + } else if (curr->batt.status & STATUS_FULLY_CHARGED && + battery_not_disconnected) { curr->requested_current = curr->requested_voltage = 0; curr->batt.flags &= ~BATT_FLAG_WANT_CHARGE; curr->state = ST_DISCHARGE; |