summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce <Bruce.Wan@quantatw.com>2017-03-14 18:42:57 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2017-03-21 14:47:50 +0000
commit1361c88a88909b94cf30b83a862479da7574f3b7 (patch)
tree90dde313da41edcf2b9c63d957df1fd4ecdbcc2f
parent9c24fac50542e2a391f509dad98303667c82c655 (diff)
downloadchrome-ec-stabilize-9334.58.B.tar.gz
pyro: battery FW update tool modify for learning modestabilize-M58-9334.41.0.Bstabilize-9334.58.Brelease-R58-9334.B
Let unit can't update battery FW when battery state in learning mode. BUG=b:36372859 BRANCH=reef TEST=check unit can't update battery FW in learning mode. Change-Id: I9d69811d84fc386cda6adb51be51f1cfb4fcdf55 Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/454656 Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com> Tested-by: Keith Tzeng <keith.tzeng@quantatw.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org> (cherry picked from commit 80cb93f45d396d797a47ab478dd62f9d29be7b3b) Reviewed-on: https://chromium-review.googlesource.com/456437 Reviewed-by: YH Lin <yueherngl@chromium.org> Commit-Queue: Keith Tzeng <keith.tzeng@quantatw.com>
-rw-r--r--util/ec_sb_firmware_update.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/util/ec_sb_firmware_update.c b/util/ec_sb_firmware_update.c
index 538d575f07..54b7ff1567 100644
--- a/util/ec_sb_firmware_update.c
+++ b/util/ec_sb_firmware_update.c
@@ -72,7 +72,8 @@ enum {
F_UPDATE = 0x4, /* do firmware update */
F_NEED_UPDATE = 0x8, /* need firmware update */
F_POWERD_DISABLED = 0x10, /* powerd is disabled */
- F_LFCC_ZERO = 0x20 /* last full charge is zero */
+ F_LFCC_ZERO = 0x20, /* last full charge is zero */
+ F_BATT_DISCHARGE = 0x40 /* battery discharging */
};
struct fw_update_ctrl {
@@ -471,6 +472,20 @@ static enum fw_update_state s1_read_battery_info(
"Require AC Adapter Counnected.");
return S10_TERMINAL;
}
+
+ if ((fw_update->flags & F_BATT_DISCHARGE) &&
+ (fw_update->flags & F_AC_PRESENT)) {
+ /*
+ * If battery discharge due to battery learning mode,
+ * we can't update battery FW, because device will shutdown
+ * during FW update.
+ */
+ fw_update->rv = 0;
+ log_msg(fw_update, S1_READ_INFO,
+ "battery can't update in learning mode");
+ return S10_TERMINAL;
+ }
+
return S2_WRITE_PREPARE;
}
@@ -790,6 +805,11 @@ int main(int argc, char *argv[])
printf("AC_PRESENT\n");
}
}
+
+ if (val & EC_BATT_FLAG_DISCHARGING) {
+ fw_update.flags |= F_BATT_DISCHARGE;
+ printf("Battery is in discharge state\n");
+ }
rv = ec_readmem(EC_MEMMAP_BATT_LFCC, sizeof(val), &val);
if (rv <= 0) {
printf("EC Memmap read error:%d\n", rv);