diff options
Diffstat (limited to 'drivers/input/keyboard/gpio_keys.c')
-rw-r--r-- | drivers/input/keyboard/gpio_keys.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index d327f5a2bb0e..b29ca651a395 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c | |||
@@ -602,6 +602,7 @@ gpio_keys_get_devtree_pdata(struct device *dev) | |||
602 | 602 | ||
603 | i = 0; | 603 | i = 0; |
604 | for_each_child_of_node(node, pp) { | 604 | for_each_child_of_node(node, pp) { |
605 | int gpio; | ||
605 | enum of_gpio_flags flags; | 606 | enum of_gpio_flags flags; |
606 | 607 | ||
607 | if (!of_find_property(pp, "gpios", NULL)) { | 608 | if (!of_find_property(pp, "gpios", NULL)) { |
@@ -610,9 +611,19 @@ gpio_keys_get_devtree_pdata(struct device *dev) | |||
610 | continue; | 611 | continue; |
611 | } | 612 | } |
612 | 613 | ||
614 | gpio = of_get_gpio_flags(pp, 0, &flags); | ||
615 | if (gpio < 0) { | ||
616 | error = gpio; | ||
617 | if (error != -EPROBE_DEFER) | ||
618 | dev_err(dev, | ||
619 | "Failed to get gpio flags, error: %d\n", | ||
620 | error); | ||
621 | goto err_free_pdata; | ||
622 | } | ||
623 | |||
613 | button = &pdata->buttons[i++]; | 624 | button = &pdata->buttons[i++]; |
614 | 625 | ||
615 | button->gpio = of_get_gpio_flags(pp, 0, &flags); | 626 | button->gpio = gpio; |
616 | button->active_low = flags & OF_GPIO_ACTIVE_LOW; | 627 | button->active_low = flags & OF_GPIO_ACTIVE_LOW; |
617 | 628 | ||
618 | if (of_property_read_u32(pp, "linux,code", &button->code)) { | 629 | if (of_property_read_u32(pp, "linux,code", &button->code)) { |