summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffy Chen <jeffy.chen@rock-chips.com>2017-11-02 15:57:19 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2017-11-02 22:43:08 +0000
commit80dd77188c06d97ed02d462d72b2b69e92ee525c (patch)
tree10984c28c9e3ca16dfd198ea5452f2bce813d869
parentb42eebb9531f4ad58af6bc71abfe16601dc3a661 (diff)
downloadchrome-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.c13
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;