Messages in this thread Patch in this message | | | From | "Enrico Weigelt, metux IT consult" <> | Subject | [PATCH v4] input: keyboard: gpio_keys_polled: use gpio lookup table | Date | Thu, 12 Dec 2019 01:13:11 +0100 |
| |
From: Enrico Weigelt <info@metux.net>
Support the recently introduced gpio lookup tables for attaching to gpio lines. So, harcoded gpio numbers aren't needed anymore.
changes v4: * completely rewritten in a much simpler way, now just adding a third case (in the button probe loop), where neither oftree nor raw gpio number exists.
changes v3: * fix printf string in gpio_keys_polled_get_gpiod() * fix unused variable 'error' in gpio_keys_polled_get_gpiod() * fix uninitialized variable in gpio_keys_polled_get_gpiod_fwnode()
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: linux-input@vger.kernel.org Signed-off-by: Enrico Weigelt <info@metux.net> --- drivers/input/keyboard/gpio_keys_polled.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/input/keyboard/gpio_keys_polled.c b/drivers/input/keyboard/gpio_keys_polled.c index 6eb0a2f3f9de..9ef8c7dade27 100644 --- a/drivers/input/keyboard/gpio_keys_polled.c +++ b/drivers/input/keyboard/gpio_keys_polled.c @@ -307,7 +307,7 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) fwnode_handle_put(child); return error; } - } else if (gpio_is_valid(button->gpio)) { + } else if ((button->gpio > 0) && gpio_is_valid(button->gpio)) { /* * Legacy GPIO number so request the GPIO here and * convert it to descriptor. @@ -333,6 +333,18 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) button->gpio); return -EINVAL; } + } else { + /* try via gpio lookup table */ + bdata->gpiod = devm_gpiod_get_index(dev, NULL, i, GPIOF_IN); + if (IS_ERR(bdata->gpiod)) { + dev_err(dev, + "unable to get gpio for button %d: %ld\n", + i, PTR_ERR(bdata->gpiod)); + return PTR_ERR(bdata->gpiod); + } + + gpiod_set_consumer_name(bdata->gpiod, + button->desc ? : DRV_NAME); } bdata->last_state = -1; -- 2.11.0
| |