diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2021-06-29 10:33:02 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-15 06:15:31 +0000 |
commit | 36c6136f03ea4ec3d4fe0ffa1e031265a26c6752 (patch) | |
tree | 0a7ee80b9ee8cd3de609d322ba00e7dd26fb2805 | |
parent | 4863bd6683d2bbdaea58b8a12aee970fd99a2b95 (diff) | |
download | chrome-ec-36c6136f03ea4ec3d4fe0ffa1e031265a26c6752.tar.gz |
Battery: Apply fake SoC to display charge
This patch makes the battfake command apply the fake SoC to the
display SoC as well as the raw battery SoC.
This patch also cleans up battery_compensate_params.
BUG=None
BRANCH=None
TEST=Atlas
Change-Id: Ifbdaa81204d27501df8a4f5e025c19a79d62feff
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2994748
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3340214
-rw-r--r-- | common/battery.c | 12 | ||||
-rw-r--r-- | driver/battery/smart.c | 1 |
2 files changed, 7 insertions, 6 deletions
diff --git a/common/battery.c b/common/battery.c index 50d689f0d1..7e0baf6986 100644 --- a/common/battery.c +++ b/common/battery.c @@ -577,18 +577,18 @@ void battery_compensate_params(struct batt_params *batt) { int numer, denom; int *remain = &(batt->remaining_capacity); - int *full = &(batt->full_capacity); + int full = batt->full_capacity; if ((batt->flags & BATT_FLAG_BAD_FULL_CAPACITY) || (batt->flags & BATT_FLAG_BAD_REMAINING_CAPACITY)) return; - if (*remain <= 0 || *full <= 0) + if (*remain <= 0 || full <= 0) return; /* Some batteries don't update full capacity as often. */ - if (*remain > *full) - *remain = *full; + if (*remain > full) + *remain = full; /* * EC calculates the display SoC like how Powerd used to do. Powerd @@ -611,8 +611,8 @@ void battery_compensate_params(struct batt_params *batt) * = ----------------------------------- x 1000 * full x (full_factor - shutdown_pct) */ - numer = 1000 * ((100 * *remain) - (*full * batt_host_shutdown_pct)); - denom = *full * (batt_host_full_factor - batt_host_shutdown_pct); + numer = 1000 * ((100 * *remain) - (full * batt_host_shutdown_pct)); + denom = full * (batt_host_full_factor - batt_host_shutdown_pct); /* Rounding (instead of truncating) */ batt->display_charge = (numer + denom / 2) / denom; if (batt->display_charge < 0) diff --git a/driver/battery/smart.c b/driver/battery/smart.c index c8f9f868ec..143e676ef2 100644 --- a/driver/battery/smart.c +++ b/driver/battery/smart.c @@ -320,6 +320,7 @@ static void apply_fake_state_of_charge(struct batt_params *batt) batt->state_of_charge = fake_state_of_charge; batt->remaining_capacity = full * fake_state_of_charge / 100; + battery_compensate_params(batt); batt->flags &= ~BATT_FLAG_BAD_STATE_OF_CHARGE; batt->flags &= ~BATT_FLAG_BAD_REMAINING_CAPACITY; } |