summaryrefslogtreecommitdiff
path: root/drivers/power/supply/axp288_fuel_gauge.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2022-01-06 12:06:07 +0100
committerSebastian Reichel <sebastian.reichel@collabora.com>2022-02-01 14:29:34 +0100
commit30abb3d07929137bf72327560e1595508a692c4e (patch)
tree3d4825a7e9ab10cd836726e17897a9a2fb25c490 /drivers/power/supply/axp288_fuel_gauge.c
parent05972f53a12fe97ac2bb4d56dfed730e93040d89 (diff)
power: supply: axp288_fuel_gauge: Take lock before updating the valid flag
The valid flag is protected by the mutex, so code clearing it should take the mutex before cleating the valid flag. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Diffstat (limited to 'drivers/power/supply/axp288_fuel_gauge.c')
-rw-r--r--drivers/power/supply/axp288_fuel_gauge.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/power/supply/axp288_fuel_gauge.c b/drivers/power/supply/axp288_fuel_gauge.c
index f7dce029266a..53d0e82bbb3e 100644
--- a/drivers/power/supply/axp288_fuel_gauge.c
+++ b/drivers/power/supply/axp288_fuel_gauge.c
@@ -476,7 +476,9 @@ static irqreturn_t fuel_gauge_thread_handler(int irq, void *dev)
dev_warn(info->dev, "Spurious Interrupt!!!\n");
}
+ mutex_lock(&info->lock);
info->valid = 0; /* Force updating of the cached registers */
+ mutex_unlock(&info->lock);
power_supply_changed(info->bat);
return IRQ_HANDLED;
@@ -486,7 +488,9 @@ static void fuel_gauge_external_power_changed(struct power_supply *psy)
{
struct axp288_fg_info *info = power_supply_get_drvdata(psy);
+ mutex_lock(&info->lock);
info->valid = 0; /* Force updating of the cached registers */
+ mutex_unlock(&info->lock);
power_supply_changed(info->bat);
}