Re: [RFC 18/18] power: supply: max17040: Do not enforce (incorrect) interrupt trigger type
From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2020-12-11 16:54:15
Also in:
linux-arm-msm, linux-clk, linux-devicetree, linux-pm, linux-rtc, linux-samsung-soc, lkml
On Fri, Dec 11, 2020 at 05:44:26PM +0200, Iskren Chernev wrote:
On 12/11/20 9:47 AM, Krzysztof Kozlowski wrote:quoted
On Thu, Dec 10, 2020 at 10:25:34PM +0100, Krzysztof Kozlowski wrote:quoted
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 14577/77836 datasheets describe the interrupt line as active low with a requirement of acknowledge from the CPU therefore the edge falling is not correct. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> --- This patch should wait till DTS changes are merged, as it relies on proper Devicetree. --- .../devicetree/bindings/power/supply/max17040_battery.txt | 2 +- drivers/power/supply/max17040_battery.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --gita/Documentation/devicetree/bindings/power/supply/max17040_battery.txt b/Documentation/devicetree/bindings/power/supply/max17040_battery.txtquoted
quoted
index c802f664b508..194eb9fe574d 100644--- a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt +++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt@@ -39,7 +39,7 @@ Example:reg = <0x36>; maxim,alert-low-soc-level = <10>; interrupt-parent = <&gpio7>; - interrupts = <2 IRQ_TYPE_EDGE_FALLING>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; wakeup-source; };diff --git a/drivers/power/supply/max17040_battery.cb/drivers/power/supply/max17040_battery.cquoted
quoted
index d956c67d5155..f737de0470de 100644--- a/drivers/power/supply/max17040_battery.c +++ b/drivers/power/supply/max17040_battery.c@@ -367,7 +367,7 @@ static int max17040_enable_alert_irq(structmax17040_chip *chip)quoted
quoted
flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT;This has to be removed. I will fix it in v2. Best regards, KrzysztofI removed the IRQF_TRIGGER_FALLING, tweaked the DT as per the DT patch, and it worked on the samsung klte. I don't understand how the DT irq flag ends up being used by the kernel. It is never explicitly read from DT or passed to interrupt API, only i2c->irq, which is a pure int.
The core __setup_irq() calls irqd_get_trigger_type() on IRQ data matching the IRQ. Best regards, Krzysztof _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel