summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorFranz Schnyder <franz.schnyder@toradex.com>2026-03-02 17:53:56 +0100
committerMark Brown <broonie@kernel.org>2026-03-02 16:56:59 +0000
commite84141846decb77d2826e553318a608b256804e5 (patch)
tree49f693265a973ec273c3fbe18238ff51840ba2f6 /drivers
parent2d85ecd6fb0eb2fee0ffa040ec1ddea57b09bc38 (diff)
regulator: pf9453: Allow shared IRQ
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/regulator/pf9453-regulator.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/regulator/pf9453-regulator.c b/drivers/regulator/pf9453-regulator.c
index eed3055d1c1c..07cbcd312653 100644
--- a/drivers/regulator/pf9453-regulator.c
+++ b/drivers/regulator/pf9453-regulator.c
@@ -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);