From d430da6679b923bd993a4f8c78204a7db242c8e9 Mon Sep 17 00:00:00 2001 From: Nicholas Troast Date: Thu, 22 Sep 2016 11:27:04 -0700 Subject: [PATCH] qpnp-fg-gen3: smb-lib: notify userspace when SOC changes 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 --- drivers/power/qcom-charger/qpnp-fg-gen3.c | 6 ++++++ drivers/power/qcom-charger/smb-lib.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/power/qcom-charger/qpnp-fg-gen3.c b/drivers/power/qcom-charger/qpnp-fg-gen3.c index e0b1d13ca8bf..7739952f3254 100644 --- a/drivers/power/qcom-charger/qpnp-fg-gen3.c +++ b/drivers/power/qcom-charger/qpnp-fg-gen3.c @@ -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; } diff --git a/drivers/power/qcom-charger/smb-lib.c b/drivers/power/qcom-charger/smb-lib.c index e0c961314398..11a0f3423932 100644 --- a/drivers/power/qcom-charger/smb-lib.c +++ b/drivers/power/qcom-charger/smb-lib.c @@ -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; } -- 2.11.0