gpio: Allow per-parent interrupt data
authorMarc Zyngier <maz@kernel.org>
Tue, 26 Oct 2021 17:58:11 +0000 (18:58 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 26 Oct 2021 22:16:00 +0000 (00:16 +0200)
commitcfe6807d82e97e81c3209dca9448f091e1448a57
treedf4d6b96d951f7c7fe7e2891af335c25236378f5
parent6880fa6c56601bb8ed59df6c30fd390cc5f6dd8f
gpio: Allow per-parent interrupt data

The core gpiolib code is able to deal with multiple interrupt parents
for a single gpio irqchip. It however only allows a single piece
of data to be conveyed to all flow handlers (either the gpio_chip
or some other, driver-specific data).

This means that drivers have to go through some interesting dance
to find the correct context, something that isn't great in interrupt
context (see aebdc8abc9db86e2bd33070fc2f961012fff74b4 for a prime
example).

Instead, offer an optional way for a pinctrl/gpio driver to provide
an array of pointers which gets used to provide the correct context
to the flow handler.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20211026175815.52703-2-joey.gouly@arm.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib.c
include/linux/gpio/driver.h