38 lines
1.5 KiB
Diff
38 lines
1.5 KiB
Diff
From 07c817b8abc53b86c58171fe1f706acf466828f7 Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
|
|
Date: Tue, 14 Sep 2021 14:18:05 +0200
|
|
Subject: [PATCH 09/10] power: supply: max17042_battery: Clear status bits in
|
|
interrupt handler
|
|
|
|
The gauge requires us to clear the status bits manually for some alerts
|
|
to be properly dismissed. Previously the IRQ was configured to react only
|
|
on falling edge, which wasn't technically correct (the ALRT line is active
|
|
low), but it had a happy side-effect of preventing interrupt storms
|
|
on uncleared alerts from happening.
|
|
|
|
Fixes: 7fbf6b731bca ("power: supply: max17042: Do not enforce (incorrect) interrupt trigger type")
|
|
Cc: <stable@vger.kernel.org>
|
|
Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
|
|
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
|
---
|
|
drivers/power/supply/max17042_battery.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
|
|
index 5809ba997093..7cfbca28e703 100644
|
|
--- a/drivers/power/supply/max17042_battery.c
|
|
+++ b/drivers/power/supply/max17042_battery.c
|
|
@@ -879,6 +879,10 @@ static irqreturn_t max17042_thread_handler(int id, void *dev)
|
|
max17042_set_soc_threshold(chip, 1);
|
|
}
|
|
|
|
+ /* we implicitly handle all alerts via power_supply_changed */
|
|
+ regmap_clear_bits(chip->regmap, MAX17042_STATUS,
|
|
+ 0xFFFF & ~(STATUS_POR_BIT | STATUS_BST_BIT));
|
|
+
|
|
power_supply_changed(chip->battery);
|
|
return IRQ_HANDLED;
|
|
}
|
|
--
|
|
2.33.0
|
|
|