OSDN Git Service

qpnp-fg-gen3: smb-lib: notify userspace when SOC changes
authorNicholas Troast <ntroast@codeaurora.org>
Thu, 22 Sep 2016 18:27:04 +0000 (11:27 -0700)
committerSubbaraman Narayanamurthy <subbaram@codeaurora.org>
Fri, 30 Sep 2016 19:27:33 +0000 (12:27 -0700)
Currently the SOC in userspace is not being updated with the latest SOC
from the fuel gauge. Add power supply changed events when the delta SOC
interrupt fires, empty SOC interrupt fires, or when the charging status
changes to full.

Change-Id: I4bbf404639a97dcc443c9ecc8391623e2fff13fd
Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
drivers/power/qcom-charger/qpnp-fg-gen3.c
drivers/power/qcom-charger/smb-lib.c

index e0b1d13..7739952 100644 (file)
@@ -1408,6 +1408,9 @@ static irqreturn_t fg_delta_soc_irq_handler(int irq, void *data)
        if (chip->cyc_ctr.en)
                schedule_work(&chip->cycle_count_work);
 
+       if (is_charger_available(chip))
+               power_supply_changed(chip->batt_psy);
+
        fg_dbg(chip, FG_IRQ, "irq %d triggered\n", irq);
        return IRQ_HANDLED;
 }
@@ -1416,6 +1419,9 @@ static irqreturn_t fg_empty_soc_irq_handler(int irq, void *data)
 {
        struct fg_chip *chip = data;
 
+       if (is_charger_available(chip))
+               power_supply_changed(chip->batt_psy);
+
        fg_dbg(chip, FG_IRQ, "irq %d triggered\n", irq);
        return IRQ_HANDLED;
 }
index e0c9613..11a0f34 100644 (file)
@@ -1633,8 +1633,10 @@ irqreturn_t smblib_handle_chg_state_change(int irq, void *data)
                dev_err(chg->dev, "Couldn't get batt status type rc=%d\n", rc);
                return IRQ_HANDLED;
        }
-       if (pval.intval == POWER_SUPPLY_STATUS_FULL)
+       if (pval.intval == POWER_SUPPLY_STATUS_FULL) {
+               power_supply_changed(chg->batt_psy);
                vote(chg->pl_disable_votable, TAPER_END_VOTER, false, 0);
+       }
 
        return IRQ_HANDLED;
 }