summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2012-08-03 11:30:15 +0800
committerRandall Spangler <rspangler@chromium.org>2012-08-03 16:54:34 -0700
commit88bbe4e6c91dcee5bac6c37b28441a8d4f4a0872 (patch)
tree1b7448535b3d7e98960bd644e53509fda653e788
parentc1bcb14e84e1252a0313cd14b0df7666778fae0d (diff)
downloadchrome-ec-88bbe4e6c91dcee5bac6c37b28441a8d4f4a0872.tar.gz
Notify kernel when charge_full changes
This way kernel always know the current value of charge_full. BUG=chrome-os-partner:11248 TEST=Check charge_full is updated when it changes Original-Change-Id: I623d84a4d6e556097b9214672e016b0c2e6cfdb9 (cherry picked from commit 0083ce5bea953e7b29519585e6ee13d395e64354) Change-Id: Ia3e78aaa058cd470cc914c9586869edd94a1dc6e Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/29220
-rw-r--r--common/charge_state.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/common/charge_state.c b/common/charge_state.c
index ba666e965e..177eaeedba 100644
--- a/common/charge_state.c
+++ b/common/charge_state.c
@@ -202,6 +202,15 @@ static int state_common(struct power_state_context *ctx)
if (rv)
curr->error |= F_BATTERY_STATE_OF_CHARGE;
+ if (batt->state_of_charge != prev->batt.state_of_charge) {
+ rv = battery_full_charge_capacity(&d);
+ if (!rv && d != *(int*)host_get_memmap(EC_MEMMAP_BATT_LFCC)) {
+ *(int*)host_get_memmap(EC_MEMMAP_BATT_LFCC) = d;
+ /* Notify host to re-read battery information */
+ host_set_single_event(EC_HOST_EVENT_BATTERY);
+ }
+ }
+
/* Prevent deep discharging */
if (!curr->ac)
if ((batt->state_of_charge < BATTERY_LEVEL_SHUTDOWN &&