| From 79f271443034519038dfdb2935037927c334ba4c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 26 May 2021 13:20:35 -0400 |
| Subject: power: supply: max17042: Do not enforce (incorrect) interrupt trigger |
| type |
| |
| From: Krzysztof Kozlowski <krzk@kernel.org> |
| |
| [ Upstream commit 7fbf6b731bca347700e460d94b130f9d734b33e9 ] |
| |
| Interrupt line can be configured on different hardware in different way, |
| even inverted. Therefore driver should not enforce specific trigger |
| type - edge falling - but instead rely on Devicetree to configure it. |
| |
| The Maxim 17047/77693 datasheets describe the interrupt line as active |
| low with a requirement of acknowledge from the CPU therefore the edge |
| falling is not correct. |
| |
| The interrupt line is shared between PMIC and RTC driver, so using level |
| sensitive interrupt is here especially important to avoid races. With |
| an edge configuration in case if first PMIC signals interrupt followed |
| shortly after by the RTC, the interrupt might not be yet cleared/acked |
| thus the second one would not be noticed. |
| |
| Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> |
| Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/power/supply/max17042_battery.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c |
| index 79d4b5988360..8117ecabe31c 100644 |
| --- a/drivers/power/supply/max17042_battery.c |
| +++ b/drivers/power/supply/max17042_battery.c |
| @@ -1104,7 +1104,7 @@ static int max17042_probe(struct i2c_client *client, |
| } |
| |
| if (client->irq) { |
| - unsigned int flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT; |
| + unsigned int flags = IRQF_ONESHOT; |
| |
| /* |
| * On ACPI systems the IRQ may be handled by ACPI-event code, |
| -- |
| 2.30.2 |
| |