Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1523401 > unrolled thread

[PATCH -next] Input: gpio_keys: set input direction explicitly for gpio keys

Started bySudeep Holla <sudeep.holla@arm.com>
First post2016-11-16 13:00 +0100
Last post2016-11-17 10:50 +0100
Articles 10 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH -next] Input: gpio_keys: set input direction explicitly for gpio keys Sudeep Holla <sudeep.holla@arm.com> - 2016-11-16 13:00 +0100
    Re: [PATCH -next] Input: gpio_keys: set input direction explicitly  for gpio keys kbuild test robot <lkp@intel.com> - 2016-11-16 13:50 +0100
    [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys Sudeep Holla <sudeep.holla@arm.com> - 2016-11-16 14:50 +0100
      Re: [PATCH v2 -next] Input: gpio_keys: set input direction  explicitly for gpio keys Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-11-16 18:40 +0100
        Re: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly  for gpio keys Sudeep Holla <sudeep.holla@arm.com> - 2016-11-16 18:50 +0100
          Re: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly  for gpio keys Sudeep Holla <sudeep.holla@arm.com> - 2016-11-16 19:40 +0100
          Re: [PATCH v2 -next] Input: gpio_keys: set input direction  explicitly for gpio keys Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-11-16 19:40 +0100
      [PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys Sudeep Holla <sudeep.holla@arm.com> - 2016-11-16 19:40 +0100
        Re: [PATCH v3 -next] Input: gpio_keys: set input direction  explicitly for gpio keys Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-11-17 02:20 +0100
          Re: [PATCH v3 -next] Input: gpio_keys: set input direction explicitly  for gpio keys Sudeep Holla <sudeep.holla@arm.com> - 2016-11-17 10:50 +0100

#1523401 — [PATCH -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromSudeep Holla <sudeep.holla@arm.com>
Date2016-11-16 13:00 +0100
Subject[PATCH -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sE72G-2hZ-17@gated-at.bofh.it>
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

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);
--
2.7.4

[toc] | [next] | [standalone]


#1523446 — Re: [PATCH -next] Input: gpio_keys: set input direction explicitly for gpio keys

Fromkbuild test robot <lkp@intel.com>
Date2016-11-16 13:50 +0100
SubjectRe: [PATCH -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sE7P4-2Rf-23@gated-at.bofh.it>
In reply to#1523401

[Multipart message — attachments visible in raw view] — view raw

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

[toc] | [prev] | [next] | [standalone]


#1523472 — [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromSudeep Holla <sudeep.holla@arm.com>
Date2016-11-16 14:50 +0100
Subject[PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sE8L7-3uw-11@gated-at.bofh.it>
In reply to#1523401
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, 8 insertions(+), 2 deletions(-)

v1->v2:
	- Fix the build(had sent a wrong version by accident)

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

diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index 5576f2ae0b71..f5e2d377f5c1 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -502,7 +502,7 @@ 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;
+		unsigned flags = 0;

 		if (button->active_low)
 			flags |= GPIOF_ACTIVE_LOW;
@@ -521,6 +521,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..56bf0dc5e2e4 100644
--- a/drivers/input/keyboard/gpio_keys_polled.c
+++ b/drivers/input/keyboard/gpio_keys_polled.c
@@ -319,7 +319,7 @@ 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;
+			unsigned flags = 0;

 			if (button->active_low)
 				flags |= GPIOF_ACTIVE_LOW;
@@ -342,6 +342,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);
--
2.7.4

[toc] | [prev] | [next] | [standalone]


#1523679 — Re: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromDmitry Torokhov <dmitry.torokhov@gmail.com>
Date2016-11-16 18:40 +0100
SubjectRe: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEclH-5WJ-5@gated-at.bofh.it>
In reply to#1523472
On Wed, Nov 16, 2016 at 01:42:14PM +0000, Sudeep Holla wrote:
> 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, 8 insertions(+), 2 deletions(-)
> 
> v1->v2:
> 	- Fix the build(had sent a wrong version by accident)
> 
> 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.

Hi Sudeep,

No, I think explicitly configuring it for input is good (at least for
now), but we need error handling.

Thanks!

> 
> Let me know your opinion.
> 
> Regards,
> Sudeep
> 
> diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
> index 5576f2ae0b71..f5e2d377f5c1 100644
> --- a/drivers/input/keyboard/gpio_keys.c
> +++ b/drivers/input/keyboard/gpio_keys.c
> @@ -502,7 +502,7 @@ 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;
> +		unsigned flags = 0;
> 
>  		if (button->active_low)
>  			flags |= GPIOF_ACTIVE_LOW;
> @@ -521,6 +521,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..56bf0dc5e2e4 100644
> --- a/drivers/input/keyboard/gpio_keys_polled.c
> +++ b/drivers/input/keyboard/gpio_keys_polled.c
> @@ -319,7 +319,7 @@ 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;
> +			unsigned flags = 0;
> 
>  			if (button->active_low)
>  				flags |= GPIOF_ACTIVE_LOW;
> @@ -342,6 +342,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);
> --
> 2.7.4
> 

-- 
Dmitry

[toc] | [prev] | [next] | [standalone]


#1523699 — Re: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromSudeep Holla <sudeep.holla@arm.com>
Date2016-11-16 18:50 +0100
SubjectRe: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEcvo-609-21@gated-at.bofh.it>
In reply to#1523679

On 16/11/16 17:36, Dmitry Torokhov wrote:
> On Wed, Nov 16, 2016 at 01:42:14PM +0000, Sudeep Holla wrote:
>> 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, 8 insertions(+), 2 deletions(-)
>>
>> v1->v2:
>> 	- Fix the build(had sent a wrong version by accident)
>>
>> 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.
>
> Hi Sudeep,
>
> No, I think explicitly configuring it for input is good (at least for
> now), but we need error handling.
>

Sure, a quick glance makes me think: all I need is to return the error
as everything is handled by devm_* APIs. If so I will respin with that
change, otherwise please let me know if I am missing anything here.

-- 
Regards,
Sudeep

[toc] | [prev] | [next] | [standalone]


#1523738 — Re: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromSudeep Holla <sudeep.holla@arm.com>
Date2016-11-16 19:40 +0100
SubjectRe: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEdhL-6ys-5@gated-at.bofh.it>
In reply to#1523699

On 16/11/16 18:34, Dmitry Torokhov wrote:
> On Wed, Nov 16, 2016 at 05:42:15PM +0000, Sudeep Holla wrote:
>>
>>
>> On 16/11/16 17:36, Dmitry Torokhov wrote:
>>> On Wed, Nov 16, 2016 at 01:42:14PM +0000, Sudeep Holla wrote:
>>>> 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, 8 insertions(+), 2 deletions(-)
>>>>
>>>> v1->v2:
>>>> 	- Fix the build(had sent a wrong version by accident)
>>>>
>>>> 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.
>>>
>>> Hi Sudeep,
>>>
>>> No, I think explicitly configuring it for input is good (at least for
>>> now), but we need error handling.
>>>
>>
>> Sure, a quick glance makes me think: all I need is to return the error
>> as everything is handled by devm_* APIs. If so I will respin with that
>> change, otherwise please let me know if I am missing anything here.
>
> No, I think that is it.
>

Thanks for the confirmation, fixed and sent v3.

-- 
Regards,
Sudeep

[toc] | [prev] | [next] | [standalone]


#1523743 — Re: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromDmitry Torokhov <dmitry.torokhov@gmail.com>
Date2016-11-16 19:40 +0100
SubjectRe: [PATCH v2 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEdhL-6ys-7@gated-at.bofh.it>
In reply to#1523699
On Wed, Nov 16, 2016 at 05:42:15PM +0000, Sudeep Holla wrote:
> 
> 
> On 16/11/16 17:36, Dmitry Torokhov wrote:
> >On Wed, Nov 16, 2016 at 01:42:14PM +0000, Sudeep Holla wrote:
> >>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, 8 insertions(+), 2 deletions(-)
> >>
> >>v1->v2:
> >>	- Fix the build(had sent a wrong version by accident)
> >>
> >>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.
> >
> >Hi Sudeep,
> >
> >No, I think explicitly configuring it for input is good (at least for
> >now), but we need error handling.
> >
> 
> Sure, a quick glance makes me think: all I need is to return the error
> as everything is handled by devm_* APIs. If so I will respin with that
> change, otherwise please let me know if I am missing anything here.

No, I think that is it.

Thanks.

-- 
Dmitry

[toc] | [prev] | [next] | [standalone]


#1523740 — [PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromSudeep Holla <sudeep.holla@arm.com>
Date2016-11-16 19:40 +0100
Subject[PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEdhL-6ys-11@gated-at.bofh.it>
In reply to#1523472
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        | 10 +++++++++-
 drivers/input/keyboard/gpio_keys_polled.c | 10 +++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

v2->v3:
	- Added error handling and error message

diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index 5576f2ae0b71..ed38a05b3039 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -502,7 +502,7 @@ 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;
+		unsigned flags = 0;

 		if (button->active_low)
 			flags |= GPIOF_ACTIVE_LOW;
@@ -521,6 +521,14 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
 	}

 	if (bdata->gpiod) {
+		/* set the GPIO direction to input */
+		error = gpiod_direction_input(bdata->gpiod);
+		if (error) {
+			dev_err(dev, "Failed to configure GPIO %d as input, error %d\n",
+				desc_to_gpio(bdata->gpiod), error);
+			return error;
+		}
+
 		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..4bd8a015cf5f 100644
--- a/drivers/input/keyboard/gpio_keys_polled.c
+++ b/drivers/input/keyboard/gpio_keys_polled.c
@@ -319,7 +319,7 @@ 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;
+			unsigned flags = 0;

 			if (button->active_low)
 				flags |= GPIOF_ACTIVE_LOW;
@@ -342,6 +342,14 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
 			}
 		}

+		/* set the GPIO direction to input */
+		error = gpiod_direction_input(bdata->gpiod);
+		if (error) {
+			dev_err(dev, "Failed to configure GPIO %d as input, error %d\n",
+				desc_to_gpio(bdata->gpiod), error);
+			return error;
+		}
+
 		bdata->last_state = -1;
 		bdata->threshold = DIV_ROUND_UP(button->debounce_interval,
 						pdata->poll_interval);
--
2.7.4

[toc] | [prev] | [next] | [standalone]


#1523999 — Re: [PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromDmitry Torokhov <dmitry.torokhov@gmail.com>
Date2016-11-17 02:20 +0100
SubjectRe: [PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEjwR-2bf-11@gated-at.bofh.it>
In reply to#1523740
On Wed, Nov 16, 2016 at 06:38:22PM +0000, Sudeep Holla wrote:
> 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        | 10 +++++++++-
>  drivers/input/keyboard/gpio_keys_polled.c | 10 +++++++++-
>  2 files changed, 18 insertions(+), 2 deletions(-)
> 
> v2->v3:
> 	- Added error handling and error message
> 
> diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
> index 5576f2ae0b71..ed38a05b3039 100644
> --- a/drivers/input/keyboard/gpio_keys.c
> +++ b/drivers/input/keyboard/gpio_keys.c
> @@ -502,7 +502,7 @@ 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;
> +		unsigned flags = 0;
> 
>  		if (button->active_low)
>  			flags |= GPIOF_ACTIVE_LOW;

Sudeep, I looked into this aa bit deeper, and I have issue with this
part: in absence of GPIOF_IN devm_gpio_request_one() will attempt to
configure GPIO line as output, which may not work. Because of this I
think we should move gpiod_direction_input() call into the "modern"
branch and leave legacy branch as is.

Does the version below work for you?

Thanks!

-- 
Dmitry


Input: gpio_keys - set input direction explicitly for gpio keys

From: Sudeep Holla <sudeep.holla@arm.com>

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 lines described by generic properties.

Fixes: 700a38b27eef ("Input: gpio_keys - switch to using generic device properties")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/keyboard/gpio_keys.c        |    7 +++++++
 drivers/input/keyboard/gpio_keys_polled.c |    8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index 5576f2a..582462d 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -496,6 +496,13 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
 						error);
 				return error;
 			}
+		} else {
+			error = gpiod_direction_input(bdata->gpiod);
+			if (error) {
+				dev_err(dev, "Failed to configure GPIO %d as input: %d\n",
+					desc_to_gpio(bdata->gpiod), error);
+				return error;
+			}
 		}
 	} else if (gpio_is_valid(button->gpio)) {
 		/*
diff --git a/drivers/input/keyboard/gpio_keys_polled.c b/drivers/input/keyboard/gpio_keys_polled.c
index 72b3503..bed4f20 100644
--- a/drivers/input/keyboard/gpio_keys_polled.c
+++ b/drivers/input/keyboard/gpio_keys_polled.c
@@ -314,6 +314,14 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
 				fwnode_handle_put(child);
 				return error;
 			}
+
+			error = gpiod_direction_input(bdata->gpiod);
+			if (error) {
+				dev_err(dev, "Failed to configure GPIO %d as input: %d\n",
+					desc_to_gpio(bdata->gpiod), error);
+				fwnode_handle_put(child);
+				return error;
+			}
 		} else if (gpio_is_valid(button->gpio)) {
 			/*
 			 * Legacy GPIO number so request the GPIO here and

[toc] | [prev] | [next] | [standalone]


#1524212 — Re: [PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys

FromSudeep Holla <sudeep.holla@arm.com>
Date2016-11-17 10:50 +0100
SubjectRe: [PATCH v3 -next] Input: gpio_keys: set input direction explicitly for gpio keys
Message-ID<sEruq-7iB-33@gated-at.bofh.it>
In reply to#1523999

On 17/11/16 01:18, Dmitry Torokhov wrote:
> On Wed, Nov 16, 2016 at 06:38:22PM +0000, Sudeep Holla wrote:
>> 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        | 10 +++++++++-
>>  drivers/input/keyboard/gpio_keys_polled.c | 10 +++++++++-
>>  2 files changed, 18 insertions(+), 2 deletions(-)
>>
>> v2->v3:
>> 	- Added error handling and error message
>>
>> diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
>> index 5576f2ae0b71..ed38a05b3039 100644
>> --- a/drivers/input/keyboard/gpio_keys.c
>> +++ b/drivers/input/keyboard/gpio_keys.c
>> @@ -502,7 +502,7 @@ 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;
>> +		unsigned flags = 0;
>>
>>  		if (button->active_low)
>>  			flags |= GPIOF_ACTIVE_LOW;
>
> Sudeep, I looked into this aa bit deeper, and I have issue with this
> part: in absence of GPIOF_IN devm_gpio_request_one() will attempt to
> configure GPIO line as output, which may not work. Because of this I
> think we should move gpiod_direction_input() call into the "modern"
> branch and leave legacy branch as is.
>
> Does the version below work for you?
>

Yes it does and in fact I started with something similar and then saw
that I can make it common between legacy and new branch conditions. So I
am fine with the modified version you sent.

-- 
Regards,
Sudeep

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web