]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
regulator: pf9453: Allow shared IRQ
authorFranz Schnyder <franz.schnyder@toradex.com>
Mon, 2 Mar 2026 16:53:56 +0000 (17:53 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 2 Mar 2026 16:56:59 +0000 (16:56 +0000)
The PF9453 datasheet specifies the IRQ_B pin as an open drain output
with level-low behavior. This makes it capable to share the interrupt
line. To allow shared interrupts, the driver must handle the case
if the interrupt has been triggered by another device.

Set IRQF_SHARED to be able to share the interrupt line.
If the interrupt has not been triggered by the PMIC, return IRQ_NONE.

Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
Link: https://patch.msgid.link/20260302165357.1797803-3-fra.schnyder@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/pf9453-regulator.c

index eed3055d1c1cadb34a38dace8b3b3ec757fbaf11..07cbcd312653b863e67ec3810bf0b3b49048848f 100644 (file)
@@ -732,6 +732,9 @@ static irqreturn_t pf9453_irq_handler(int irq, void *data)
                return IRQ_NONE;
        }
 
+       if (!status)
+               return IRQ_NONE;
+
        if (status & IRQ_RSTB)
                dev_warn(pf9453->dev, "IRQ_RSTB interrupt.\n");
 
@@ -809,7 +812,7 @@ static int pf9453_i2c_probe(struct i2c_client *i2c)
        }
 
        ret = devm_request_threaded_irq(pf9453->dev, pf9453->irq, NULL, pf9453_irq_handler,
-                                       IRQF_ONESHOT,
+                                       (IRQF_ONESHOT | IRQF_SHARED),
                                        "pf9453-irq", pf9453);
        if (ret)
                return dev_err_probe(pf9453->dev, ret, "Failed to request IRQ: %d\n", pf9453->irq);