Message ID | 20200826200827.30931-2-krzk@kernel.org |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] gpio: Add devm_fwnode_gpiod_get_optional() helpers | expand |
On Thu, Aug 27, 2020 at 12:05:51AM +0300, Andy Shevchenko wrote: > On Wednesday, August 26, 2020, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > Common pattern of handling deferred probe can be simplified with > > dev_err_probe() and devm_fwnode_gpiod_get_optional(). Less code and > > the error value gets printed. > > > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > > Reviewed-by: Hans de Goede <hdegoede@redhat.com> > > > > --- > > > > Changes since v1: > > 1. Use devm_fwnode_gpiod_get_optional > > --- > > drivers/input/keyboard/gpio_keys.c | 21 ++++----------------- > > 1 file changed, 4 insertions(+), 17 deletions(-) > > > > diff --git a/drivers/input/keyboard/gpio_keys.c > > b/drivers/input/keyboard/gpio_keys.c > > index f2d4e4daa818..a07ac6fa25ed 100644 > > --- a/drivers/input/keyboard/gpio_keys.c > > +++ b/drivers/input/keyboard/gpio_keys.c > > @@ -494,23 +494,10 @@ static int gpio_keys_setup_key(struct > > platform_device *pdev, > > spin_lock_init(&bdata->lock); > > > > if (child) { > > - bdata->gpiod = devm_fwnode_gpiod_get(dev, child, > > - NULL, GPIOD_IN, desc); > > - if (IS_ERR(bdata->gpiod)) { > > - error = PTR_ERR(bdata->gpiod); > > - if (error == -ENOENT) { > > - /* > > - * GPIO is optional, we may be dealing with > > - * purely interrupt-driven setup. > > - */ > > > Can we preserve this comment? Sure. Best regards, Krzysztof
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index f2d4e4daa818..a07ac6fa25ed 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -494,23 +494,10 @@ static int gpio_keys_setup_key(struct platform_device *pdev, spin_lock_init(&bdata->lock); if (child) { - bdata->gpiod = devm_fwnode_gpiod_get(dev, child, - NULL, GPIOD_IN, desc); - if (IS_ERR(bdata->gpiod)) { - error = PTR_ERR(bdata->gpiod); - if (error == -ENOENT) { - /* - * GPIO is optional, we may be dealing with - * purely interrupt-driven setup. - */ - bdata->gpiod = NULL; - } else { - if (error != -EPROBE_DEFER) - dev_err(dev, "failed to get gpio: %d\n", - error); - return error; - } - } + bdata->gpiod = devm_fwnode_gpiod_get_optional(dev, child, NULL, + GPIOD_IN, desc); + if (IS_ERR(bdata->gpiod)) + return dev_err_probe(dev, error, "failed to get gpio\n"); } else if (gpio_is_valid(button->gpio)) { /* * Legacy GPIO number, so request the GPIO here and