Message ID | 20210526172036.183223-7-krzysztof.kozlowski@canonical.com |
---|---|
State | New |
Headers | show |
Series | mfd/power/rtc: Do not enforce (incorrect) interrupt trigger type | expand |
Hi, On Wed, May 26, 2021 at 01:20:35PM -0400, Krzysztof Kozlowski wrote: > From: Krzysztof Kozlowski <krzk@kernel.org> > > 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> > > --- > > Changes since v1: > 1. None > --- Thanks, queued. -- Sebastian > 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 1d7326cd8fc6..ce2041b30a06 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.27.0 >
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c index 1d7326cd8fc6..ce2041b30a06 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,