diff options
-rw-r--r-- | drivers/input/keyboard/gpio_keys.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index b8b4876ac8d3..f44f05b70ee0 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -621,9 +621,12 @@ gpio_keys_get_devtree_pdata(struct device *dev) int gpio = -1; enum of_gpio_flags flags; + button = &pdata->buttons[i++]; + if (!of_find_property(pp, "gpios", NULL)) { button->irq = irq_of_parse_and_map(pp, 0); if (button->irq == 0) { + i--; pdata->nbuttons--; dev_warn(dev, "Found button without gpios or irqs\n"); continue; @@ -640,8 +643,6 @@ gpio_keys_get_devtree_pdata(struct device *dev) } } - button = &pdata->buttons[i++]; - button->gpio = gpio; button->active_low = flags & OF_GPIO_ACTIVE_LOW; |