summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2021-06-29 10:33:02 -0700
committerCommit Bot <commit-bot@chromium.org>2021-12-15 06:15:31 +0000
commit36c6136f03ea4ec3d4fe0ffa1e031265a26c6752 (patch)
tree0a7ee80b9ee8cd3de609d322ba00e7dd26fb2805
parent4863bd6683d2bbdaea58b8a12aee970fd99a2b95 (diff)
downloadchrome-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.c12
-rw-r--r--driver/battery/smart.c1
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;
}