2019-09-18 05:56:42

by Guido Günther

[permalink] [raw]
Subject: [PATCH 0/5] leds: lm3692x: Probing and flag fixes

The driver currently returns success on init although probing fails and
register setup uses flag values from other registers which is confusing
when reading the driver. This series cleans this up.

Guido Günther (5):
leds: lm3692x: Print error value on dev_err
leds: lm3692x: Don't overwrite return value in error path
leds: lm3692x: Handle failure to probe the regulator
leds: lm3692x: Use flags from LM3692X_BOOST_CTRL
leds: lm3692x: Use flags from LM3692X_BRT_CTRL

drivers/leds/leds-lm3692x.c | 45 ++++++++++++++++++++-----------------
1 file changed, 25 insertions(+), 20 deletions(-)

--
2.23.0.rc1


2019-09-18 05:57:04

by Guido Günther

[permalink] [raw]
Subject: [PATCH 4/5] leds: lm3692x: Use flags from LM3692X_BOOST_CTRL

The current setup of LM3692X_BOOST_CTRL uses flags from LM3692X_BRT_CTRL.
Use flags from LM3692X_BOOST_CTRL but leave the resulting register value
unchanged.

Signed-off-by: Guido Günther <[email protected]>
---
drivers/leds/leds-lm3692x.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
index 9972c932d51e..d673f706385e 100644
--- a/drivers/leds/leds-lm3692x.c
+++ b/drivers/leds/leds-lm3692x.c
@@ -250,9 +250,9 @@ static int lm3692x_init(struct lm3692x_led *led)
goto out;

ret = regmap_write(led->regmap, LM3692X_BOOST_CTRL,
- LM3692X_BRHT_MODE_RAMP_MULTI |
- LM3692X_BL_ADJ_POL |
- LM3692X_RAMP_RATE_250us);
+ LM3692X_BOOST_SW_1MHZ |
+ LM3692X_BOOST_SW_NO_SHIFT |
+ LM3692X_OCP_PROT_1_5A);
if (ret)
goto out;

--
2.23.0.rc1

2019-09-18 05:58:23

by Guido Günther

[permalink] [raw]
Subject: [PATCH 1/5] leds: lm3692x: Print error value on dev_err

This gives a way better idea what is going on.

Signed-off-by: Guido Günther <[email protected]>
---
drivers/leds/leds-lm3692x.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
index 3d381f2f73d0..487228c2bed2 100644
--- a/drivers/leds/leds-lm3692x.c
+++ b/drivers/leds/leds-lm3692x.c
@@ -174,19 +174,20 @@ static int lm3692x_brightness_set(struct led_classdev *led_cdev,

ret = lm3692x_fault_check(led);
if (ret) {
- dev_err(&led->client->dev, "Cannot read/clear faults\n");
+ dev_err(&led->client->dev, "Cannot read/clear faults: %d\n",
+ ret);
goto out;
}

ret = regmap_write(led->regmap, LM3692X_BRT_MSB, brt_val);
if (ret) {
- dev_err(&led->client->dev, "Cannot write MSB\n");
+ dev_err(&led->client->dev, "Cannot write MSB: %d\n", ret);
goto out;
}

ret = regmap_write(led->regmap, LM3692X_BRT_LSB, led_brightness_lsb);
if (ret) {
- dev_err(&led->client->dev, "Cannot write LSB\n");
+ dev_err(&led->client->dev, "Cannot write LSB: %d\n", ret);
goto out;
}
out:
@@ -203,7 +204,7 @@ static int lm3692x_init(struct lm3692x_led *led)
ret = regulator_enable(led->regulator);
if (ret) {
dev_err(&led->client->dev,
- "Failed to enable regulator\n");
+ "Failed to enable regulator: %d\n", ret);
return ret;
}
}
@@ -213,7 +214,8 @@ static int lm3692x_init(struct lm3692x_led *led)

ret = lm3692x_fault_check(led);
if (ret) {
- dev_err(&led->client->dev, "Cannot read/clear faults\n");
+ dev_err(&led->client->dev, "Cannot read/clear faults: %d\n",
+ ret);
goto out;
}

@@ -409,7 +411,8 @@ static int lm3692x_remove(struct i2c_client *client)

ret = regmap_update_bits(led->regmap, LM3692X_EN, LM3692X_DEVICE_EN, 0);
if (ret) {
- dev_err(&led->client->dev, "Failed to disable regulator\n");
+ dev_err(&led->client->dev, "Failed to disable regulator: %d\n",
+ ret);
return ret;
}

@@ -420,7 +423,7 @@ static int lm3692x_remove(struct i2c_client *client)
ret = regulator_disable(led->regulator);
if (ret)
dev_err(&led->client->dev,
- "Failed to disable regulator\n");
+ "Failed to disable regulator: %d\n", ret);
}

mutex_destroy(&led->lock);
--
2.23.0.rc1

2019-09-18 07:27:11

by Guido Günther

[permalink] [raw]
Subject: [PATCH 5/5] leds: lm3692x: Use flags from LM3692X_BRT_CTRL

Use LM3692X_RAMP_EN instead of LM3692X_PWM_HYSTER_4LSB
since the later is a flag for the PWM register. The
actual register value remains unchanged.

Signed-off-by: Guido Günther <[email protected]>
---
drivers/leds/leds-lm3692x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
index d673f706385e..ecac586ca89c 100644
--- a/drivers/leds/leds-lm3692x.c
+++ b/drivers/leds/leds-lm3692x.c
@@ -269,7 +269,7 @@ static int lm3692x_init(struct lm3692x_led *led)
goto out;

ret = regmap_write(led->regmap, LM3692X_BRT_CTRL,
- LM3692X_BL_ADJ_POL | LM3692X_PWM_HYSTER_4LSB);
+ LM3692X_BL_ADJ_POL | LM3692X_RAMP_EN);
if (ret)
goto out;

--
2.23.0.rc1

2019-09-18 18:23:29

by Dan Murphy

[permalink] [raw]
Subject: Re: [PATCH 1/5] leds: lm3692x: Print error value on dev_err

Guido

On 9/17/19 9:19 PM, Guido Günther wrote:
> This gives a way better idea what is going on.
>
> Signed-off-by: Guido Günther <[email protected]>

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


> ---
> drivers/leds/leds-lm3692x.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
> index 3d381f2f73d0..487228c2bed2 100644
> --- a/drivers/leds/leds-lm3692x.c
> +++ b/drivers/leds/leds-lm3692x.c
> @@ -174,19 +174,20 @@ static int lm3692x_brightness_set(struct led_classdev *led_cdev,
>
> ret = lm3692x_fault_check(led);
> if (ret) {
> - dev_err(&led->client->dev, "Cannot read/clear faults\n");
> + dev_err(&led->client->dev, "Cannot read/clear faults: %d\n",
> + ret);
> goto out;
> }
>
> ret = regmap_write(led->regmap, LM3692X_BRT_MSB, brt_val);
> if (ret) {
> - dev_err(&led->client->dev, "Cannot write MSB\n");
> + dev_err(&led->client->dev, "Cannot write MSB: %d\n", ret);
> goto out;
> }
>
> ret = regmap_write(led->regmap, LM3692X_BRT_LSB, led_brightness_lsb);
> if (ret) {
> - dev_err(&led->client->dev, "Cannot write LSB\n");
> + dev_err(&led->client->dev, "Cannot write LSB: %d\n", ret);
> goto out;
> }
> out:
> @@ -203,7 +204,7 @@ static int lm3692x_init(struct lm3692x_led *led)
> ret = regulator_enable(led->regulator);
> if (ret) {
> dev_err(&led->client->dev,
> - "Failed to enable regulator\n");
> + "Failed to enable regulator: %d\n", ret);
> return ret;
> }
> }
> @@ -213,7 +214,8 @@ static int lm3692x_init(struct lm3692x_led *led)
>
> ret = lm3692x_fault_check(led);
> if (ret) {
> - dev_err(&led->client->dev, "Cannot read/clear faults\n");
> + dev_err(&led->client->dev, "Cannot read/clear faults: %d\n",
> + ret);
> goto out;
> }
>
> @@ -409,7 +411,8 @@ static int lm3692x_remove(struct i2c_client *client)
>
> ret = regmap_update_bits(led->regmap, LM3692X_EN, LM3692X_DEVICE_EN, 0);
> if (ret) {
> - dev_err(&led->client->dev, "Failed to disable regulator\n");
> + dev_err(&led->client->dev, "Failed to disable regulator: %d\n",
> + ret);
> return ret;
> }
>
> @@ -420,7 +423,7 @@ static int lm3692x_remove(struct i2c_client *client)
> ret = regulator_disable(led->regulator);
> if (ret)
> dev_err(&led->client->dev,
> - "Failed to disable regulator\n");
> + "Failed to disable regulator: %d\n", ret);
> }
>
> mutex_destroy(&led->lock);

2019-09-18 18:51:12

by Dan Murphy

[permalink] [raw]
Subject: Re: [PATCH 5/5] leds: lm3692x: Use flags from LM3692X_BRT_CTRL

Guido

On 9/17/19 9:19 PM, Guido Günther wrote:
> Use LM3692X_RAMP_EN instead of LM3692X_PWM_HYSTER_4LSB
> since the later is a flag for the PWM register. The
> actual register value remains unchanged.
>
> Signed-off-by: Guido Günther <[email protected]>
Reviewed-by: Dan Murphy <[email protected]>
> ---
> drivers/leds/leds-lm3692x.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
> index d673f706385e..ecac586ca89c 100644
> --- a/drivers/leds/leds-lm3692x.c
> +++ b/drivers/leds/leds-lm3692x.c
> @@ -269,7 +269,7 @@ static int lm3692x_init(struct lm3692x_led *led)
> goto out;
>
> ret = regmap_write(led->regmap, LM3692X_BRT_CTRL,
> - LM3692X_BL_ADJ_POL | LM3692X_PWM_HYSTER_4LSB);
> + LM3692X_BL_ADJ_POL | LM3692X_RAMP_EN);
> if (ret)
> goto out;
>

2019-09-18 21:43:26

by Dan Murphy

[permalink] [raw]
Subject: Re: [PATCH 4/5] leds: lm3692x: Use flags from LM3692X_BOOST_CTRL

Guido

On 9/17/19 9:19 PM, Guido Günther wrote:
> The current setup of LM3692X_BOOST_CTRL uses flags from LM3692X_BRT_CTRL.
> Use flags from LM3692X_BOOST_CTRL but leave the resulting register value
> unchanged.
>
> Signed-off-by: Guido Günther <[email protected]>
Reviewed-by: Dan Murphy <[email protected]>
> ---
> drivers/leds/leds-lm3692x.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds-lm3692x.c
> index 9972c932d51e..d673f706385e 100644
> --- a/drivers/leds/leds-lm3692x.c
> +++ b/drivers/leds/leds-lm3692x.c
> @@ -250,9 +250,9 @@ static int lm3692x_init(struct lm3692x_led *led)
> goto out;
>
> ret = regmap_write(led->regmap, LM3692X_BOOST_CTRL,
> - LM3692X_BRHT_MODE_RAMP_MULTI |
> - LM3692X_BL_ADJ_POL |
> - LM3692X_RAMP_RATE_250us);
> + LM3692X_BOOST_SW_1MHZ |
> + LM3692X_BOOST_SW_NO_SHIFT |
> + LM3692X_OCP_PROT_1_5A);
> if (ret)
> goto out;
>

2019-09-19 10:00:21

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH 0/5] leds: lm3692x: Probing and flag fixes

On Tue 2019-09-17 19:19:53, Guido G?nther wrote:
> The driver currently returns success on init although probing fails and
> register setup uses flag values from other registers which is confusing
> when reading the driver. This series cleans this up.

1,3,4,5: Acked-by: Pavel Machek <[email protected]>

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


Attachments:
(No filename) (447.00 B)
signature.asc (188.00 B)
Digital signature
Download all attachments