]> git.baikalelectronics.ru Git - kernel.git/commit
Input: adp5588-keys - support gpi key events as 'gpio keys'
authorNuno Sá <nuno.sa@analog.com>
Wed, 31 Aug 2022 03:54:10 +0000 (20:54 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 31 Aug 2022 03:56:22 +0000 (20:56 -0700)
commitc5d00c8157881214cbcd0d3220d1e01d9cf592c7
treedc2baa2edb2fb5c4d57c8828893898aeed0ba2e3
parent7a89d6f380ce61a4211bf79ac4c6c9d695180631
Input: adp5588-keys - support gpi key events as 'gpio keys'

This change replaces the support for GPIs as key event generators.
Instead of reporting the events directly, we add a gpio based irqchip
so that these events can be consumed by keys defined in the gpio-keys
driver (as it's goal is indeed for keys on GPIOs capable of generating
interrupts). With this, the gpio-adp5588 driver can also be dropped.

The basic idea is that all the pins that are not being used as part of
the keymap matrix can be possibly requested as GPIOs by gpio-keys
(it's also fine to use these pins as plain interrupts though that's not
really the point).

Since the gpiochip now also has irqchip capabilities, we should only
remove it after we free the device interrupt (otherwise we could, in
theory, be handling GPIs interrupts while the gpiochip is concurrently
removed). Thus the call 'adp5588_gpio_add()' is moved and since the
setup phase also needs to come before making the gpios visible, we also
need to move 'adp5588_setup()'.

While at it, always select GPIOLIB so that we don't need to use #ifdef
guards.

Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20220829131553.690063-2-nuno.sa@analog.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/Kconfig
drivers/input/keyboard/adp5588-keys.c
include/linux/platform_data/adp5588.h