• Nuno Sá's avatar
    Input: adp5588-keys - support gpi key events as 'gpio keys' · 9d2b2e83
    Nuno Sá authored
    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: default avatarNuno Sá <nuno.sa@analog.com>
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220829131553.690063-2-nuno.sa@analog.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    9d2b2e83
adp5588-keys.c 16 KB