From: Peng Fan <peng.fan@nxp.com>
Kernel warning on i.MX8MP-EVK when doing module test:
irq: type mismatch, failed to map hwirq-3 for gpio@30200000!
Per PCA945[X] specification: The IRQ_B pin is pulled low when any unmasked
interrupt bit status is changed and it is released high once application
processor read INT1 register.
So the interrupt should be configured as IRQF_TRIGGER_LOW, not
IRQF_TRIGGER_FALLING.
Fixes: 0935ff5f1f0a4 ("regulator: pca9450: add pca9450 pmic driver")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/regulator/pca9450-regulator.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/regulator/pca9450-regulator.c b/drivers/regulator/pca9450-regulator.c
index 5fa8682642505ab01736a9fb1ef8761d77ef6b2d..2205f6de37e7d4eb8a0abf7deebf319395a2bc75 100644
--- a/drivers/regulator/pca9450-regulator.c
+++ b/drivers/regulator/pca9450-regulator.c
@@ -1369,7 +1369,7 @@ static int pca9450_i2c_probe(struct i2c_client *i2c)
if (pca9450->irq) {
ret = devm_request_threaded_irq(pca9450->dev, pca9450->irq, NULL,
pca9450_irq_handler,
- (IRQF_TRIGGER_FALLING | IRQF_ONESHOT),
+ (IRQF_TRIGGER_LOW | IRQF_ONESHOT),
"pca9450-irq", pca9450);
if (ret != 0)
return dev_err_probe(pca9450->dev, ret, "Failed to request IRQ: %d\n",
--
2.37.1
On Tue, Mar 10, 2026 at 12:25:52PM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@nxp.com> > > Kernel warning on i.MX8MP-EVK when doing module test: > irq: type mismatch, failed to map hwirq-3 for gpio@30200000! > > Per PCA945[X] specification: The IRQ_B pin is pulled low when any unmasked > interrupt bit status is changed and it is released high once application > processor read INT1 register. > > So the interrupt should be configured as IRQF_TRIGGER_LOW, not > IRQF_TRIGGER_FALLING. There appear to be a bunch of DTS files which specify edge triggered interrupts for these devices (eg, imx8mm-emtop-som.dtsi and imx8mp-debix-model-a.dts) though more getting it right. Not an issue for this patch but probably wants cleaning up.
On Tue, Mar 10, 2026 at 01:15:34PM +0000, Mark Brown wrote: > On Tue, Mar 10, 2026 at 12:25:52PM +0800, Peng Fan (OSS) wrote: > > From: Peng Fan <peng.fan@nxp.com> > > > > Kernel warning on i.MX8MP-EVK when doing module test: > > irq: type mismatch, failed to map hwirq-3 for gpio@30200000! > > > > Per PCA945[X] specification: The IRQ_B pin is pulled low when any unmasked > > interrupt bit status is changed and it is released high once application > > processor read INT1 register. > > > > So the interrupt should be configured as IRQF_TRIGGER_LOW, not > > IRQF_TRIGGER_FALLING. > > There appear to be a bunch of DTS files which specify edge triggered > interrupts for these devices (eg, imx8mm-emtop-som.dtsi and > imx8mp-debix-model-a.dts) though more getting it right. Not an issue > for this patch but probably wants cleaning up. This patch creates an interrupt storm on the i.MX8MP-based Debix Model A board. I'm getting about 700 interrupts per second from the PMIC (and about 3000 interrupts per second from the I2C controller). arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts specifies the PMIC interrupt as IRQ_TYPE_EDGE_RISING, setting it to IRQ_TYPE_LEVEL_LOW does not help. Peng, I can run test to debug the issue if you tell me what to test. I'd like to fix the problem and avoid an annoying regression in v7.0, either with a follow-up patch, or with a revert if we're too short on time. -- Regards, Laurent Pinchart
Hi Laurent,
On Mon, Mar 23, 2026 at 12:58:58PM +0200, Laurent Pinchart wrote:
>On Tue, Mar 10, 2026 at 01:15:34PM +0000, Mark Brown wrote:
>> On Tue, Mar 10, 2026 at 12:25:52PM +0800, Peng Fan (OSS) wrote:
>> > From: Peng Fan <peng.fan@nxp.com>
>> >
>> > Kernel warning on i.MX8MP-EVK when doing module test:
>> > irq: type mismatch, failed to map hwirq-3 for gpio@30200000!
>> >
>> > Per PCA945[X] specification: The IRQ_B pin is pulled low when any unmasked
>> > interrupt bit status is changed and it is released high once application
>> > processor read INT1 register.
>> >
>> > So the interrupt should be configured as IRQF_TRIGGER_LOW, not
>> > IRQF_TRIGGER_FALLING.
>>
>> There appear to be a bunch of DTS files which specify edge triggered
>> interrupts for these devices (eg, imx8mm-emtop-som.dtsi and
>> imx8mp-debix-model-a.dts) though more getting it right. Not an issue
>> for this patch but probably wants cleaning up.
>
>This patch creates an interrupt storm on the i.MX8MP-based Debix Model A
>board. I'm getting about 700 interrupts per second from the PMIC (and
>about 3000 interrupts per second from the I2C controller).
>
>arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts specifies the
>PMIC interrupt as IRQ_TYPE_EDGE_RISING, setting it to IRQ_TYPE_LEVEL_LOW
>does not help.
>
>Peng, I can run test to debug the issue if you tell me what to test. I'd
>like to fix the problem and avoid an annoying regression in v7.0, either
>with a follow-up patch, or with a revert if we're too short on time.
Please help try whether below changes could help.
I checked the schematic and iomux settings, I suspect the pad settings might
not be correct, it does not have PE set, even it has PUE. Without PE, PUE
will not work per my understanding.
If below patch works for you, I will post this patch to list. otherwise,
we have to revert my patch or remove IRQ_TRIGGER_LOW when calling
devm_request_irq().
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts b/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts
index 9422beee30b29..df7489587e48e 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts
@@ -440,7 +440,7 @@ MX8MP_IOMUXC_SAI5_RXC__I2C6_SDA 0x400001c3
pinctrl_pmic: pmicirqgrp {
fsl,pins = <
- MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03 0x41
+ MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03 0x000001c0
>;
};
Thanks,
Peng
>
>--
>Regards,
>
>Laurent Pinchart
>
Hi Peng,
On Mon, Mar 23, 2026 at 08:38:24PM +0800, Peng Fan wrote:
> On Mon, Mar 23, 2026 at 12:58:58PM +0200, Laurent Pinchart wrote:
> > On Tue, Mar 10, 2026 at 01:15:34PM +0000, Mark Brown wrote:
> >> On Tue, Mar 10, 2026 at 12:25:52PM +0800, Peng Fan (OSS) wrote:
> >> > From: Peng Fan <peng.fan@nxp.com>
> >> >
> >> > Kernel warning on i.MX8MP-EVK when doing module test:
> >> > irq: type mismatch, failed to map hwirq-3 for gpio@30200000!
> >> >
> >> > Per PCA945[X] specification: The IRQ_B pin is pulled low when any unmasked
> >> > interrupt bit status is changed and it is released high once application
> >> > processor read INT1 register.
> >> >
> >> > So the interrupt should be configured as IRQF_TRIGGER_LOW, not
> >> > IRQF_TRIGGER_FALLING.
> >>
> >> There appear to be a bunch of DTS files which specify edge triggered
> >> interrupts for these devices (eg, imx8mm-emtop-som.dtsi and
> >> imx8mp-debix-model-a.dts) though more getting it right. Not an issue
> >> for this patch but probably wants cleaning up.
> >
> > This patch creates an interrupt storm on the i.MX8MP-based Debix Model A
> > board. I'm getting about 700 interrupts per second from the PMIC (and
> > about 3000 interrupts per second from the I2C controller).
> >
> > arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts specifies the
> > PMIC interrupt as IRQ_TYPE_EDGE_RISING, setting it to IRQ_TYPE_LEVEL_LOW
> > does not help.
> >
> > Peng, I can run test to debug the issue if you tell me what to test. I'd
> > like to fix the problem and avoid an annoying regression in v7.0, either
> > with a follow-up patch, or with a revert if we're too short on time.
>
> Please help try whether below changes could help.
>
> I checked the schematic and iomux settings, I suspect the pad settings might
> not be correct, it does not have PE set, even it has PUE. Without PE, PUE
> will not work per my understanding.
>
> If below patch works for you, I will post this patch to list. otherwise,
> we have to revert my patch or remove IRQ_TRIGGER_LOW when calling
> devm_request_irq().
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts b/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts
> index 9422beee30b29..df7489587e48e 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-debix-model-a.dts
> @@ -440,7 +440,7 @@ MX8MP_IOMUXC_SAI5_RXC__I2C6_SDA 0x400001c3
>
> pinctrl_pmic: pmicirqgrp {
> fsl,pins = <
> - MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03 0x41
> + MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03 0x000001c0
> >;
> };
>
This seems to fix the issue (I've also set the IRQ type to
IRQ_TYPE_LEVEL_LOW).
I have checked the schematics of the Debix board, and there's no pull-up
resistor on the interrupt line, so an internal pull-up is indeed
required.
Will you submit a patch for v7.0 ?
--
Regards,
Laurent Pinchart
© 2016 - 2026 Red Hat, Inc.