Re: [PATCH 1/4] regmap: irq: Fix lost interrupts by introducing handle_reread

From: Tony Lindgren
Date: Mon Apr 03 2017 - 23:03:32 EST


Hi,

* Tony Lindgren <tony@xxxxxxxxxxx> [170328 10:13]:
> * Mark Brown <broonie@xxxxxxxxxx> [170328 09:51]:
> > On Tue, Mar 28, 2017 at 08:47:41AM -0700, Tony Lindgren wrote:
> > > * Mark Brown <broonie@xxxxxxxxxx> [170328 08:21]:
> >
> > > > Right, my thinking here is that by pushing into genirq we minimise the
> > > > need even further since it'll also be available to drivers not using
> > > > regmap-irq.
> >
> > > > > like, handle until we get IRQ_NONE? :)
> >
> > > > Well, that's what the per driver emulation does so... yeah. Probably
> > > > with an upper limit on the number of times we do that.
> >
> > > OK let's first see how that would work. I'll send a patch
> > > for that.
> >
> > Thanks. Can you keep me on the CC please? It's something I keep
> > thinking about looking at myself.
>
> Sure will do, you'll get some shared flames on it :)

So I found the real problem after thinking what you guys commented
on the "level device connected to an edge only GPIO". I added some
printks to verify that's not the case just to find out that the dts
GPIO interrupt edge configuration got only passed to the SPI driver :)

So the level IRQ changes I did earlier to the dts file did nothing.

The fix is simply to call devm_regmap_add_irq_chip() with
irq_get_trigger_type(cpcap->spi->irq) to get the configured
triggering passed properly from the dts.

So I'll drop the genirq/regmap_irq related hacks and resend just
the minimal MFD fixes. Similar misconfiguration may be the root
cause for other drivers too..

Regards,

Tony