linux-leds.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] leds: lp8860: make use of devm_gpiod_get_optional
@ 2015-03-01 21:25 Uwe Kleine-König
  2015-03-02 22:32 ` Bryan Wu
  0 siblings, 1 reply; 2+ messages in thread
From: Uwe Kleine-König @ 2015-03-01 21:25 UTC (permalink / raw)
  To: Bryan Wu, Richard Purdie
  Cc: kernel, linux-leds, Alexandre Courbot, Linus Walleij

The probe function open coded a bad variant of devm_gpiod_get_optional
using devm_gpiod_get and just ignoring all errors.
In contrast to that devm_gpiod_get_optional returns NULL if there was no
corresponding gpio specified in the device tree (or ACPI table) and
fails if there is an error (or GPIOLIB is not enabled).

Moreover since 39b2bbe3d715 (gpio: add flags argument to gpiod_get*()
functions) which appeared in v3.17-rc1, the gpiod_get* functions take an
additional parameter that allows to specify direction and initial value
for output which allows some simplification.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/leds/leds-lp8860.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c
index 840e93f3ab3e..f2a29c256d32 100644
--- a/drivers/leds/leds-lp8860.c
+++ b/drivers/leds/leds-lp8860.c
@@ -391,11 +391,13 @@ static int lp8860_probe(struct i2c_client *client,
 		}
 	}
 
-	led->enable_gpio = devm_gpiod_get(&client->dev, "enable");
-	if (IS_ERR(led->enable_gpio))
-		led->enable_gpio = NULL;
-	else
-		gpiod_direction_output(led->enable_gpio, 0);
+	led->enable_gpio = devm_gpiod_get_optional(&client->dev,
+						   "enable", GPIOD_OUT_LOW);
+	if (IS_ERR(led->enable_gpio)) {
+		ret = PTR_ERR(led->enable_gpio);
+		dev_err(&client->dev, "Failed to get enable gpio: %d\n", ret);
+		return ret;
+	}
 
 	led->regulator = devm_regulator_get(&client->dev, "vled");
 	if (IS_ERR(led->regulator))
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] leds: lp8860: make use of devm_gpiod_get_optional
  2015-03-01 21:25 [PATCH] leds: lp8860: make use of devm_gpiod_get_optional Uwe Kleine-König
@ 2015-03-02 22:32 ` Bryan Wu
  0 siblings, 0 replies; 2+ messages in thread
From: Bryan Wu @ 2015-03-02 22:32 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Richard Purdie, kernel, Linux LED Subsystem, Alexandre Courbot,
	Linus Walleij

On Sun, Mar 1, 2015 at 1:25 PM, Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> wrote:
> The probe function open coded a bad variant of devm_gpiod_get_optional
> using devm_gpiod_get and just ignoring all errors.
> In contrast to that devm_gpiod_get_optional returns NULL if there was no
> corresponding gpio specified in the device tree (or ACPI table) and
> fails if there is an error (or GPIOLIB is not enabled).
>
> Moreover since 39b2bbe3d715 (gpio: add flags argument to gpiod_get*()
> functions) which appeared in v3.17-rc1, the gpiod_get* functions take an
> additional parameter that allows to specify direction and initial value
> for output which allows some simplification.
>

Thanks, I merged this into my tree.

-Bryan

> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/leds/leds-lp8860.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c
> index 840e93f3ab3e..f2a29c256d32 100644
> --- a/drivers/leds/leds-lp8860.c
> +++ b/drivers/leds/leds-lp8860.c
> @@ -391,11 +391,13 @@ static int lp8860_probe(struct i2c_client *client,
>                 }
>         }
>
> -       led->enable_gpio = devm_gpiod_get(&client->dev, "enable");
> -       if (IS_ERR(led->enable_gpio))
> -               led->enable_gpio = NULL;
> -       else
> -               gpiod_direction_output(led->enable_gpio, 0);
> +       led->enable_gpio = devm_gpiod_get_optional(&client->dev,
> +                                                  "enable", GPIOD_OUT_LOW);
> +       if (IS_ERR(led->enable_gpio)) {
> +               ret = PTR_ERR(led->enable_gpio);
> +               dev_err(&client->dev, "Failed to get enable gpio: %d\n", ret);
> +               return ret;
> +       }
>
>         led->regulator = devm_regulator_get(&client->dev, "vled");
>         if (IS_ERR(led->regulator))
> --
> 2.1.4
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-03-02 22:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-01 21:25 [PATCH] leds: lp8860: make use of devm_gpiod_get_optional Uwe Kleine-König
2015-03-02 22:32 ` Bryan Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).