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 <thar...@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 <pa...@ucw.cz> Thank you, culomb counter issue is now gone. Best regards, Pavel -- http://www.livejournal.com/~pavelmachek
signature.asc
Description: PGP signature