If GPIO probing is deferred, the driver tries to
claim an invalid GPIO line which leads to an error
message like this:
gpio-keys-polled buttons.2: unable to claim gpio 4294966779, err=-22
gpio-keys-polled: probe of buttons.2 failed with error -22
The patch ensures that 'gpio_keys_polled_get_devtree_pdata'
returns -EPROBE_DEFER if any of the GPIOs to register are
deferred.
Cc: <redacted>
Signed-off-by: Gabor Juhos <redacted>
---
drivers/input/keyboard/gpio_keys_polled.c | 6 ++++++
1 file changed, 6 insertions(+)
On Sun, Dec 23, 2012 at 09:32:03AM +0100, Gabor Juhos wrote:
quoted hunk
If GPIO probing is deferred, the driver tries to
claim an invalid GPIO line which leads to an error
message like this:
gpio-keys-polled buttons.2: unable to claim gpio 4294966779, err=-22
gpio-keys-polled: probe of buttons.2 failed with error -22
The patch ensures that 'gpio_keys_polled_get_devtree_pdata'
returns -EPROBE_DEFER if any of the GPIOs to register are
deferred.
Cc: <redacted>
Signed-off-by: Gabor Juhos <redacted>
---
drivers/input/keyboard/gpio_keys_polled.c | 6 ++++++
1 file changed, 6 insertions(+)
Well spotted, thanks. However I think the patch should look like the one
below as we should propagate all errors, not only -EPROBE_DEFER, up the
stack.
Thanks.
--
Dmitry
Input: gpio_keys_polled - defer probing if GPIO probing is deferred
From: Gabor Juhos <redacted>
If GPIO probing is deferred, the driver tries to claim an invalid GPIO line
which leads to an error message like this:
gpio-keys-polled buttons.2: unable to claim gpio 4294966779, err=-22
gpio-keys-polled: probe of buttons.2 failed with error -22
The patch ensures that error code returned by of_get_gpio_flags (including
-EPROBE_DEFER) is propagated up the stack.
Cc: stable@vger.kernel.org
Signed-off-by: Gabor Juhos <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/input/keyboard/gpio_keys_polled.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
Well spotted, thanks. However I think the patch should look like the one
below as we should propagate all errors, not only -EPROBE_DEFER, up the
stack.
Thanks.
Input: gpio_keys_polled - defer probing if GPIO probing is deferred
From: Gabor Juhos <redacted>
If GPIO probing is deferred, the driver tries to claim an invalid GPIO line
which leads to an error message like this:
gpio-keys-polled buttons.2: unable to claim gpio 4294966779, err=-22
gpio-keys-polled: probe of buttons.2 failed with error -22
The patch ensures that error code returned by of_get_gpio_flags (including
-EPROBE_DEFER) is propagated up the stack.
Cc: stable@vger.kernel.org
Signed-off-by: Gabor Juhos <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/input/keyboard/gpio_keys_polled.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
@@ -143,9 +144,19 @@ static struct gpio_keys_platform_data *gpio_keys_polled_get_devtree_pdata(structcontinue;}+gpio=of_get_gpio_flags(pp,0,&flags);+if(gpio<0){+error=gpio;+if(error!=-EPROBE_DEFER)+dev_err(dev,+"Failed to get gpio flags, error: %d\n",+error);+gotoerr_free_pdata;+}+button=&pdata->buttons[i++];-button->gpio=of_get_gpio_flags(pp,0,&flags);+button->gpio=gpio;button->active_low=flags&OF_GPIO_ACTIVE_LOW;if(of_property_read_u32(pp,"linux,code",&button->code)){
Yes, this looks saner. I have replaced my patch with this, and it is working as
intended. The kernel says this:
platform buttons.2: Driver gpio-keys-polled requests probe deferral
BTW, it seems that the gpio-keys driver needs a similar fix.
-Gabor
--
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