summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYongBeum Ha <ybha@samsung.com>2019-11-18 20:48:51 +0900
committerCommit Bot <commit-bot@chromium.org>2019-11-25 23:37:25 +0000
commitcee4268b9d7aa6902b09556dd49117f4e4d19f1b (patch)
tree2edd150b45c7e32434913541fa011906a5262571
parentf8d38f388f485c13a38a394a50518b695064d724 (diff)
downloadchrome-ec-cee4268b9d7aa6902b09556dd49117f4e4d19f1b.tar.gz
battery : Define CONFIG_BATTERY_DEAD_UNTIL_VALUE
It takes 850ms~950ms to get valid RSOC after battery wake-up. Sometimes battery FG returns garbage data(1%) as RSOC and 0 value of desired current / voltage. Add CONFIG_BATTERY_DEAD_UNTIL_VALUE to continue charging. BUG=b:138413964 BRANCH=None TEST=build & flash, check battery charging with dead battery Change-Id: I0cbe30aa973499b0c27faf9b6da03a0344ad1065 Signed-off-by: YongBeum Ha <ybha@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1918985 Reviewed-by: Jett Rink <jettrink@chromium.org> (cherry picked from commit 89eee491e4f4744a0602d5362e39c5618cab06c1) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1932856
-rw-r--r--common/charge_state_v2.c4
-rw-r--r--driver/battery/smart.c4
-rw-r--r--include/config.h7
3 files changed, 15 insertions, 0 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index 26eeb5e0f2..826a51fc2e 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -1516,7 +1516,11 @@ void charger_task(void *u)
*/
if (curr.requested_voltage == 0 &&
curr.requested_current == 0 &&
+#ifdef CONFIG_BATTERY_DEAD_UNTIL_VALUE
+ curr.batt.state_of_charge < CONFIG_BATTERY_DEAD_UNTIL_VALUE) {
+#else
curr.batt.state_of_charge == 0) {
+#endif
/* Battery is dead, give precharge current */
curr.requested_voltage =
batt_info->voltage_max;
diff --git a/driver/battery/smart.c b/driver/battery/smart.c
index 743ebc1ee1..abc1816f36 100644
--- a/driver/battery/smart.c
+++ b/driver/battery/smart.c
@@ -380,7 +380,11 @@ void battery_get_params(struct batt_params *batt)
batt_new.state_of_charge < BATTERY_LEVEL_FULL) ||
(batt_new.desired_voltage == 0 &&
batt_new.desired_current == 0 &&
+#ifdef CONFIG_BATTERY_DEAD_UNTIL_VALUE
+ batt_new.state_of_charge < CONFIG_BATTERY_DEAD_UNTIL_VALUE)))
+#else
batt_new.state_of_charge == 0)))
+#endif
#else
batt_new.desired_voltage &&
batt_new.desired_current &&
diff --git a/include/config.h b/include/config.h
index 0d1bca56c7..a9e89d901e 100644
--- a/include/config.h
+++ b/include/config.h
@@ -358,6 +358,13 @@
#undef CONFIG_BATTERY_V2
/*
+ * Some fuel gauges in battery take some time to return valid battery params
+ * when wake form dead battery.
+ * It need to do precharge to take valid battery params.
+ */
+#undef CONFIG_BATTERY_DEAD_UNTIL_VALUE
+
+/*
* Number of batteries, only matters when CONFIG_BATTERY_V2 is used.
*/
#undef CONFIG_BATTERY_COUNT