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 d327f5a2bb0..b29ca651a39 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)  	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)) {  |