From 5317679a4339d6f2dd9c4d27fc3786598bddb623 Mon Sep 17 00:00:00 2001 From: Dmitry Torokhov Date: Mon, 24 Dec 2012 09:32:46 -0800 Subject: [PATCH] --- yaml --- r: 348247 b: refs/heads/master c: e324ce61ef483dd26d03502d35666ad48a2e1b33 h: refs/heads/master i: 348245: c3235aa94cc1ac4928b30dffcd836f36d898566d 348243: 30af8755be5b8beff27c527472d9319080c6a35d 348239: a609abf88168604304f7c3fa9fdda74a3a2e9753 v: v3 --- [refs] | 2 +- trunk/drivers/input/keyboard/gpio_keys.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 964c3d328467..e15f7bd89359 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d46329a708c1a3301e272a029266b69339c0877f +refs/heads/master: e324ce61ef483dd26d03502d35666ad48a2e1b33 diff --git a/trunk/drivers/input/keyboard/gpio_keys.c b/trunk/drivers/input/keyboard/gpio_keys.c index d327f5a2bb0e..b29ca651a395 100644 --- a/trunk/drivers/input/keyboard/gpio_keys.c +++ b/trunk/drivers/input/keyboard/gpio_keys.c @@ -602,6 +602,7 @@ gpio_keys_get_devtree_pdata(struct device *dev) i = 0; for_each_child_of_node(node, pp) { + int gpio; enum of_gpio_flags flags; if (!of_find_property(pp, "gpios", NULL)) { @@ -610,9 +611,19 @@ gpio_keys_get_devtree_pdata(struct device *dev) continue; } + 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); + goto err_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)) {