]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
pinctrl: mcp23s08: Get rid of spurious level interrupts
authorDmitry Mastykin <mastichi@gmail.com>
Wed, 22 Jan 2025 12:05:04 +0000 (15:05 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Sun, 16 Feb 2025 23:16:02 +0000 (00:16 +0100)
commit7b0671b97f0872d6950ccc925e210cb3f67721bf
treeec14233a2e296c8c7709c18ab321eec26b3b6c79
parentd6c6fd77e5816e3f6689a2767cdd777797506f24
pinctrl: mcp23s08: Get rid of spurious level interrupts

irq_mask()/irq_unmask() are not called for nested interrupts. So level
interrupts are never masked, chip's interrupt output is not cleared on
INTCAP or GPIO read, the irq handler is uselessly called again. Nested
irq handler is not called again, because interrupt reason is cleared by
its first call.
/proc/interrupts shows that number of chip's irqs is greater than
number of nested irqs.

This patch adds masking and unmasking level interrupts inside irq handler.

Signed-off-by: Dmitry Mastykin <mastichi@gmail.com>
Link: https://lore.kernel.org/20250122120504.1279790-1-mastichi@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-mcp23s08.c