Fix sizeof in memset. Cleanup dt properties extraction. Use for_each macro. Use of_match_ptr macro. Signed-off-by: Alexandre Pereira da Silva <aletes.xgr@xxxxxxxxx> --- drivers/input/keyboard/gpio_keys.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 62bfce4..1ef15ae 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -548,22 +548,16 @@ static int gpio_keys_get_devtree_pdata(struct device *dev, struct device_node *node, *pp; int i; struct gpio_keys_button *buttons; - u32 reg; node = dev->of_node; if (node == NULL) return -ENODEV; - memset(pdata, 0, sizeof *pdata); + memset(pdata, 0, sizeof(*pdata)); pdata->rep = !!of_get_property(node, "autorepeat", NULL); - /* First count the subnodes */ - pdata->nbuttons = 0; - pp = NULL; - while ((pp = of_get_next_child(node, pp))) - pdata->nbuttons++; - + pdata->nbuttons = of_get_child_count(node); if (pdata->nbuttons == 0) return -ENODEV; @@ -571,9 +565,8 @@ static int gpio_keys_get_devtree_pdata(struct device *dev, if (!buttons) return -ENOMEM; - pp = NULL; i = 0; - while ((pp = of_get_next_child(node, pp))) { + for_each_child_of_node(node, pp) { enum of_gpio_flags flags; if (!of_find_property(pp, "gpios", NULL)) { @@ -584,24 +577,21 @@ static int gpio_keys_get_devtree_pdata(struct device *dev, buttons[i].gpio = of_get_gpio_flags(pp, 0, &flags); buttons[i].active_low = flags & OF_GPIO_ACTIVE_LOW; - if (of_property_read_u32(pp, "linux,code", ®)) { + if (of_property_read_u32(pp, "linux,code", &buttons[i].code)) { dev_err(dev, "Button without keycode: 0x%x\n", buttons[i].gpio); goto out_fail; } - buttons[i].code = reg; buttons[i].desc = of_get_property(pp, "label", NULL); - if (of_property_read_u32(pp, "linux,input-type", ®) == 0) - buttons[i].type = reg; - else + if (of_property_read_u32(pp, "linux,input-type", + &buttons[i].type)) buttons[i].type = EV_KEY; buttons[i].wakeup = !!of_get_property(pp, "gpio-key,wakeup", NULL); - if (of_property_read_u32(pp, "debounce-interval", ®) == 0) - buttons[i].debounce_interval = reg; - else + if (of_property_read_u32(pp, "debounce-interval", + &buttons[i].debounce_interval)) buttons[i].debounce_interval = 5; i++; @@ -630,8 +620,6 @@ static int gpio_keys_get_devtree_pdata(struct device *dev, return -ENODEV; } -#define gpio_keys_of_match NULL - #endif static void gpio_remove_key(struct gpio_button_data *bdata) @@ -823,7 +811,7 @@ static struct platform_driver gpio_keys_device_driver = { .name = "gpio-keys", .owner = THIS_MODULE, .pm = &gpio_keys_pm_ops, - .of_match_table = gpio_keys_of_match, + .of_match_table = of_match_ptr(gpio_keys_of_match), } }; -- 1.7.10 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html