diff options
author | YongBeum Ha <ybha@samsung.com> | 2019-11-18 20:48:51 +0900 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-11-25 23:37:25 +0000 |
commit | cee4268b9d7aa6902b09556dd49117f4e4d19f1b (patch) | |
tree | 2edd150b45c7e32434913541fa011906a5262571 | |
parent | f8d38f388f485c13a38a394a50518b695064d724 (diff) | |
download | chrome-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.c | 4 | ||||
-rw-r--r-- | driver/battery/smart.c | 4 | ||||
-rw-r--r-- | include/config.h | 7 |
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 |