Message ID | 1479297298-26555-1-git-send-email-sudeep.holla@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Sudeep,
[auto build test ERROR on next-20161116]
url: https://github.com/0day-ci/linux/commits/Sudeep-Holla/Input-gpio_keys-set-input-direction-explicitly-for-gpio-keys/20161116-202319
config: x86_64-randconfig-x001-201646 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers/input/keyboard/gpio_keys_polled.c: In function 'gpio_keys_polled_probe':
>> drivers/input/keyboard/gpio_keys_polled.c:323:5: error: 'flags' undeclared (first use in this function)
flags |= GPIOF_ACTIVE_LOW;
^~~~~
drivers/input/keyboard/gpio_keys_polled.c:323:5: note: each undeclared identifier is reported only once for each function it appears in
vim +/flags +323 drivers/input/keyboard/gpio_keys_polled.c
0f78ba96 Dmitry Torokhov 2016-02-23 317 } else if (gpio_is_valid(button->gpio)) {
633a21d8 Aaron Lu 2014-10-21 318 /*
633a21d8 Aaron Lu 2014-10-21 319 * Legacy GPIO number so request the GPIO here and
633a21d8 Aaron Lu 2014-10-21 320 * convert it to descriptor.
633a21d8 Aaron Lu 2014-10-21 321 */
633a21d8 Aaron Lu 2014-10-21 322 if (button->active_low)
633a21d8 Aaron Lu 2014-10-21 @323 flags |= GPIOF_ACTIVE_LOW;
633a21d8 Aaron Lu 2014-10-21 324
633a21d8 Aaron Lu 2014-10-21 325 error = devm_gpio_request_one(&pdev->dev, button->gpio,
633a21d8 Aaron Lu 2014-10-21 326 flags, button->desc ? : DRV_NAME);
:::::: The code at line 323 was first introduced by commit
:::::: 633a21d80b4a2cd648aa2dacdb22494ffb2f28f0 input: gpio_keys_polled: Add support for GPIO descriptors
:::::: TO: Aaron Lu <aaron.lu@intel.com>
:::::: CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Sudeep,
[auto build test ERROR on next-20161116]
url: https://github.com/0day-ci/linux/commits/Sudeep-Holla/Input-gpio_keys-set-input-direction-explicitly-for-gpio-keys/20161116-202319
config: x86_64-randconfig-x017-201646 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers/input/keyboard/gpio_keys.c: In function 'gpio_keys_setup_key':
>> drivers/input/keyboard/gpio_keys.c:506:4: error: 'flags' undeclared (first use in this function)
flags |= GPIOF_ACTIVE_LOW;
^~~~~
drivers/input/keyboard/gpio_keys.c:506:4: note: each undeclared identifier is reported only once for each function it appears in
vim +/flags +506 drivers/input/keyboard/gpio_keys.c
700a38b2 Dmitry Torokhov 2016-10-19 500 } else if (gpio_is_valid(button->gpio)) {
5feeca3c Geert Uytterhoeven 2016-10-19 501 /*
5feeca3c Geert Uytterhoeven 2016-10-19 502 * Legacy GPIO number, so request the GPIO here and
5feeca3c Geert Uytterhoeven 2016-10-19 503 * convert it to descriptor.
5feeca3c Geert Uytterhoeven 2016-10-19 504 */
5feeca3c Geert Uytterhoeven 2016-10-19 505 if (button->active_low)
5feeca3c Geert Uytterhoeven 2016-10-19 @506 flags |= GPIOF_ACTIVE_LOW;
bc8f1eaf Ben Dooks 2009-11-10 507
5feeca3c Geert Uytterhoeven 2016-10-19 508 error = devm_gpio_request_one(&pdev->dev, button->gpio, flags,
5feeca3c Geert Uytterhoeven 2016-10-19 509 desc);
:::::: The code at line 506 was first introduced by commit
:::::: 5feeca3c1e39c01f9ef5abc94dea94021ccf94fc Input: gpio_keys - add support for GPIO descriptors
:::::: TO: Geert Uytterhoeven <geert+renesas@glider.be>
:::::: CC: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 5576f2ae0b71..238b7be9ca98 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -502,8 +502,6 @@ static int gpio_keys_setup_key(struct platform_device *pdev, * Legacy GPIO number, so request the GPIO here and * convert it to descriptor. */ - unsigned flags = GPIOF_IN; - if (button->active_low) flags |= GPIOF_ACTIVE_LOW; @@ -521,6 +519,9 @@ static int gpio_keys_setup_key(struct platform_device *pdev, } if (bdata->gpiod) { + /* set the GPIO direction to input */ + gpiod_direction_input(bdata->gpiod); + if (button->debounce_interval) { error = gpiod_set_debounce(bdata->gpiod, button->debounce_interval * 1000); diff --git a/drivers/input/keyboard/gpio_keys_polled.c b/drivers/input/keyboard/gpio_keys_polled.c index 72b350315d43..2edff18f0758 100644 --- a/drivers/input/keyboard/gpio_keys_polled.c +++ b/drivers/input/keyboard/gpio_keys_polled.c @@ -319,8 +319,6 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) * Legacy GPIO number so request the GPIO here and * convert it to descriptor. */ - unsigned flags = GPIOF_IN; - if (button->active_low) flags |= GPIOF_ACTIVE_LOW; @@ -342,6 +340,9 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) } } + /* set the GPIO direction to input */ + gpiod_direction_input(bdata->gpiod); + bdata->last_state = -1; bdata->threshold = DIV_ROUND_UP(button->debounce_interval, pdata->poll_interval);
Commit 700a38b27eef ("Input: gpio_keys - switch to using generic device properties") switched to use generic device properties for GPIO keys and commit 5feeca3c1e39 ("Input: gpio_keys - add support for GPIO descriptors") switched from legacy GPIO numbers to GPIO descriptors. Previously devm_gpio_request_one was explicitly passed GPIOF_DIR_IN flag to set the GPIO direction as input. However devm_get_gpiod_from_child doesn't have such provisions and hence fwnode_get_named_gpiod can't set it as input. This breaks few platforms with the following error: " gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ unable to lock HW IRQ <n> for IRQ genirq: Failed to request resources for POWER (irq <x>) on irqchip gpio_keys: Unable to claim irq <x>; error -22 gpio-keys: probe failed with error -22 " This patch fixes the issue by setting input direction explicitly for gpio input keys. It also remove the existing GPIOF_DIR_IN flag setting for the legacy gpios and merges into single gpiod_direction_input call. Fixes: 700a38b27eef ("Input: gpio_keys - switch to using generic device properties") Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Geert Uytterhoeven <geert+renesas@glider.be> Cc: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> --- drivers/input/keyboard/gpio_keys.c | 5 +++-- drivers/input/keyboard/gpio_keys_polled.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) Hi Dmitry, The other option would be to pass the flag explicitly and add support to handle it in the path devm_get_gpiod_from_child would take. Let me know your opinion. Regards, Sudeep -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html