2019-09-23 15:38:46

by Guido Günther

[permalink] [raw]
Subject: [PATCH v3 3/5] leds: lm3692x: Handle failure to probe the regulator

Instead use devm_regulator_get_optional since the regulator
is optional and check for errors.

Signed-off-by: Guido Günther <[email protected]>
Acked-by: Pavel Machek <[email protected]>
---
drivers/leds/leds-lm3692x.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
index ad76e34455ff..54e9bd2d288b 100644
--- a/drivers/leds/leds-lm3692x.c
+++ b/drivers/leds/leds-lm3692x.c
@@ -337,9 +337,18 @@ static int lm3692x_probe_dt(struct lm3692x_led *led)
return ret;
}

- led->regulator = devm_regulator_get(&led->client->dev, "vled");
- if (IS_ERR(led->regulator))
+ led->regulator = devm_regulator_get_optional(&led->client->dev, "vled");
+ if (IS_ERR(led->regulator)) {
+ ret = PTR_ERR(led->regulator);
+ if (ret != -ENODEV) {
+ if (ret != -EPROBE_DEFER)
+ dev_err(&led->client->dev,
+ "Failed to get vled regulator: %d\n",
+ ret);
+ return ret;
+ }
led->regulator = NULL;
+ }

child = device_get_next_child_node(&led->client->dev, child);
if (!child) {
--
2.23.0.rc1


2019-09-24 18:01:48

by Dan Murphy

[permalink] [raw]
Subject: Re: [PATCH v3 3/5] leds: lm3692x: Handle failure to probe the regulator

Guido

Thanks for the update

Reviewed-by: Dan Murphy <[email protected]>

On 9/21/19 4:12 PM, Guido Günther wrote:
> Instead use devm_regulator_get_optional since the regulator
> is optional and check for errors.
>
> Signed-off-by: Guido Günther <[email protected]>
> Acked-by: Pavel Machek <[email protected]>
> ---
> drivers/leds/leds-lm3692x.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
> index ad76e34455ff..54e9bd2d288b 100644
> --- a/drivers/leds/leds-lm3692x.c
> +++ b/drivers/leds/leds-lm3692x.c
> @@ -337,9 +337,18 @@ static int lm3692x_probe_dt(struct lm3692x_led *led)
> return ret;
> }
>
> - led->regulator = devm_regulator_get(&led->client->dev, "vled");
> - if (IS_ERR(led->regulator))
> + led->regulator = devm_regulator_get_optional(&led->client->dev, "vled");
> + if (IS_ERR(led->regulator)) {
> + ret = PTR_ERR(led->regulator);
> + if (ret != -ENODEV) {
> + if (ret != -EPROBE_DEFER)
> + dev_err(&led->client->dev,
> + "Failed to get vled regulator: %d\n",
> + ret);
> + return ret;
> + }
> led->regulator = NULL;
> + }
>
> child = device_get_next_child_node(&led->client->dev, child);
> if (!child) {