Messages in this thread | | | Date | Sun, 15 Nov 2020 18:31:30 +0100 | From | Pavel Machek <> | Subject | Re: [PATCH] mfd: cpcap: Fix interrupt regression with regmap clear_ack |
| |
Hi!
> With commit 3a6f0fb7b8eb ("regmap: irq: Add support to clear ack > registers"), the cpcap interrupts are no longer getting acked properly > leading to a very unresponsive device with CPUs fully loaded spinning > in the threaded IRQ handlers. > > To me it looks like the clear_ack commit above actually fixed a long > standing bug in regmap_irq_thread() where we unconditionally acked the > interrupts earlier without considering ack_invert. And the issue with > cpcap started happening as we now also consider ack_invert. > > Tim Harvey <tharvey@gateworks.com> tried to fix this issue earlier with > "[PATCH v2] regmap: irq: fix ack-invert", but the reading of the ack > register was considered unnecessary for just ack_invert, and we did not > have clear_ack available yet. As the cpcap irqs worked both with and > without ack_invert earlier because of the unconditional ack, the > problem remained hidden until now. > > Also, looks like the earlier v3.0.8 based Motorola Android Linux kernel > does clear_ack style read-clear-write with "ireg_val & ~mreg_val" instead > of just ack_invert style write. So let's switch cpcap to use clear_ack > to fix the issue. > > Fixes: 3a6f0fb7b8eb ("regmap: irq: Add support to clear ack registers")
Tested-by: Pavel Machek <pavel@ucw.cz>
Thank you, culomb counter issue is now gone.
Best regards, Pavel -- http://www.livejournal.com/~pavelmachek [unhandled content-type:application/pgp-signature] | |