2021-09-28 01:43:13

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v2 1/4] iio: light: cm3605: Make use of the helper function dev_err_probe()

When possible use dev_err_probe help to properly deal with the
PROBE_DEFER error, the benefit is that DEFER issue will be logged
in the devices_deferred debugfs file.
Using dev_err_probe() can reduce code size, and the error value
gets printed.

Signed-off-by: Cai Huoqing <[email protected]>
---
drivers/iio/light/cm3605.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/iio/light/cm3605.c b/drivers/iio/light/cm3605.c
index 4c83953672be..0b90564213e8 100644
--- a/drivers/iio/light/cm3605.c
+++ b/drivers/iio/light/cm3605.c
@@ -211,10 +211,10 @@ static int cm3605_probe(struct platform_device *pdev)
}

cm3605->vdd = devm_regulator_get(dev, "vdd");
- if (IS_ERR(cm3605->vdd)) {
- dev_err(dev, "failed to get VDD regulator\n");
- return PTR_ERR(cm3605->vdd);
- }
+ if (IS_ERR(cm3605->vdd))
+ return dev_err_probe(dev, PTR_ERR(cm3605->vdd),
+ "failed to get VDD regulator\n");
+
ret = regulator_enable(cm3605->vdd);
if (ret) {
dev_err(dev, "failed to enable VDD regulator\n");
@@ -223,8 +223,7 @@ static int cm3605_probe(struct platform_device *pdev)

cm3605->aset = devm_gpiod_get(dev, "aset", GPIOD_OUT_HIGH);
if (IS_ERR(cm3605->aset)) {
- dev_err(dev, "no ASET GPIO\n");
- ret = PTR_ERR(cm3605->aset);
+ ret = dev_err_probe(dev, PTR_ERR(cm3605->aset), "no ASET GPIO\n");
goto out_disable_vdd;
}

--
2.25.1


2021-09-28 01:43:25

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v2 2/4] iio: light: cm36651: Make use of the helper function dev_err_probe()

When possible use dev_err_probe help to properly deal with the
PROBE_DEFER error, the benefit is that DEFER issue will be logged
in the devices_deferred debugfs file.
Using dev_err_probe() can reduce code size, and the error value
gets printed.

Signed-off-by: Cai Huoqing <[email protected]>
---
v1->v2: Remove the separate line of PTR_ERR().

drivers/iio/light/cm36651.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/light/cm36651.c b/drivers/iio/light/cm36651.c
index fd83a19929bc..c7cc4b0fe8b2 100644
--- a/drivers/iio/light/cm36651.c
+++ b/drivers/iio/light/cm36651.c
@@ -632,10 +632,9 @@ static int cm36651_probe(struct i2c_client *client,
cm36651 = iio_priv(indio_dev);

cm36651->vled_reg = devm_regulator_get(&client->dev, "vled");
- if (IS_ERR(cm36651->vled_reg)) {
- dev_err(&client->dev, "get regulator vled failed\n");
- return PTR_ERR(cm36651->vled_reg);
- }
+ if (IS_ERR(cm36651->vled_reg))
+ return dev_err_probe(&client->dev, PTR_ERR(cm36651->vled_reg),
+ "get regulator vled failed\n");

ret = regulator_enable(cm36651->vled_reg);
if (ret) {
--
2.25.1

2021-09-28 01:44:10

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v2 3/4] iio: light: gp2ap002: Make use of the helper function dev_err_probe()

When possible use dev_err_probe help to properly deal with the
PROBE_DEFER error, the benefit is that DEFER issue will be logged
in the devices_deferred debugfs file.
Using dev_err_probe() can reduce code size, and the error value
gets printed.

Signed-off-by: Cai Huoqing <[email protected]>
---
drivers/iio/light/gp2ap002.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/iio/light/gp2ap002.c b/drivers/iio/light/gp2ap002.c
index f960be7d4001..724a3928ead1 100644
--- a/drivers/iio/light/gp2ap002.c
+++ b/drivers/iio/light/gp2ap002.c
@@ -521,15 +521,14 @@ static int gp2ap002_probe(struct i2c_client *client,
}

gp2ap002->vdd = devm_regulator_get(dev, "vdd");
- if (IS_ERR(gp2ap002->vdd)) {
- dev_err(dev, "failed to get VDD regulator\n");
- return PTR_ERR(gp2ap002->vdd);
- }
+ if (IS_ERR(gp2ap002->vdd))
+ return dev_err_probe(dev, PTR_ERR(gp2ap002->vdd),
+ "failed to get VDD regulator\n");
+
gp2ap002->vio = devm_regulator_get(dev, "vio");
- if (IS_ERR(gp2ap002->vio)) {
- dev_err(dev, "failed to get VIO regulator\n");
- return PTR_ERR(gp2ap002->vio);
- }
+ if (IS_ERR(gp2ap002->vio))
+ return dev_err_probe(dev, PTR_ERR(gp2ap002->vio),
+ "failed to get VIO regulator\n");

/* Operating voltage 2.4V .. 3.6V according to datasheet */
ret = regulator_set_voltage(gp2ap002->vdd, 2400000, 3600000);
--
2.25.1

2021-09-28 01:45:22

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v2 4/4] iio: light: noa1305: Make use of the helper function dev_err_probe()

When possible use dev_err_probe help to properly deal with the
PROBE_DEFER error, the benefit is that DEFER issue will be logged
in the devices_deferred debugfs file.
Using dev_err_probe() can reduce code size, and the error value
gets printed.

Signed-off-by: Cai Huoqing <[email protected]>
---
v1->v2: Remove the separate line of PTR_ERR().

drivers/iio/light/noa1305.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/light/noa1305.c b/drivers/iio/light/noa1305.c
index a308fbc2fc7b..71a322227429 100644
--- a/drivers/iio/light/noa1305.c
+++ b/drivers/iio/light/noa1305.c
@@ -217,10 +217,9 @@ static int noa1305_probe(struct i2c_client *client,
priv = iio_priv(indio_dev);

priv->vin_reg = devm_regulator_get(&client->dev, "vin");
- if (IS_ERR(priv->vin_reg)) {
- dev_err(&client->dev, "get regulator vin failed\n");
- return PTR_ERR(priv->vin_reg);
- }
+ if (IS_ERR(priv->vin_reg))
+ return dev_err_probe(&client->dev, PTR_ERR(priv->vin_reg),
+ "get regulator vin failed\n");

ret = regulator_enable(priv->vin_reg);
if (ret) {
--
2.25.1

2021-09-28 13:53:16

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] iio: light: gp2ap002: Make use of the helper function dev_err_probe()

On Tue, Sep 28, 2021 at 3:42 AM Cai Huoqing <[email protected]> wrote:

> When possible use dev_err_probe help to properly deal with the
> PROBE_DEFER error, the benefit is that DEFER issue will be logged
> in the devices_deferred debugfs file.
> Using dev_err_probe() can reduce code size, and the error value
> gets printed.
>
> Signed-off-by: Cai Huoqing <[email protected]>

Reviewed-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

2021-09-29 16:10:31

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] iio: light: gp2ap002: Make use of the helper function dev_err_probe()

On Tue, 28 Sep 2021 09:41:54 +0800
Cai Huoqing <[email protected]> wrote:

> When possible use dev_err_probe help to properly deal with the
> PROBE_DEFER error, the benefit is that DEFER issue will be logged
> in the devices_deferred debugfs file.
> Using dev_err_probe() can reduce code size, and the error value
> gets printed.
>
> Signed-off-by: Cai Huoqing <[email protected]>

There is an explicit return of -EPROBE_DEFER in here that we should
probably also handle.

https://elixir.bootlin.com/linux/latest/source/drivers/iio/light/gp2ap002.c#L508


I guess simplest option is
return dev_err_probe(dev, -EPROBE_DEFER, "no ADC, deferring\n");

> ---
> drivers/iio/light/gp2ap002.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/iio/light/gp2ap002.c b/drivers/iio/light/gp2ap002.c
> index f960be7d4001..724a3928ead1 100644
> --- a/drivers/iio/light/gp2ap002.c
> +++ b/drivers/iio/light/gp2ap002.c
> @@ -521,15 +521,14 @@ static int gp2ap002_probe(struct i2c_client *client,
> }
>
> gp2ap002->vdd = devm_regulator_get(dev, "vdd");
> - if (IS_ERR(gp2ap002->vdd)) {
> - dev_err(dev, "failed to get VDD regulator\n");
> - return PTR_ERR(gp2ap002->vdd);
> - }
> + if (IS_ERR(gp2ap002->vdd))
> + return dev_err_probe(dev, PTR_ERR(gp2ap002->vdd),
> + "failed to get VDD regulator\n");
> +
> gp2ap002->vio = devm_regulator_get(dev, "vio");
> - if (IS_ERR(gp2ap002->vio)) {
> - dev_err(dev, "failed to get VIO regulator\n");
> - return PTR_ERR(gp2ap002->vio);
> - }
> + if (IS_ERR(gp2ap002->vio))
> + return dev_err_probe(dev, PTR_ERR(gp2ap002->vio),
> + "failed to get VIO regulator\n");
>
> /* Operating voltage 2.4V .. 3.6V according to datasheet */
> ret = regulator_set_voltage(gp2ap002->vdd, 2400000, 3600000);

2021-09-29 17:28:06

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 1/4] iio: light: cm3605: Make use of the helper function dev_err_probe()

On Tue, 28 Sep 2021 09:41:52 +0800
Cai Huoqing <[email protected]> wrote:

> When possible use dev_err_probe help to properly deal with the
> PROBE_DEFER error, the benefit is that DEFER issue will be logged
> in the devices_deferred debugfs file.
> Using dev_err_probe() can reduce code size, and the error value
> gets printed.
>
> Signed-off-by: Cai Huoqing <[email protected]>
Hi Cai,

This driver has some more cases where we should potentially do something
like this.

It handles the lack of availability of an IIO channel in line 199
by converting an -ENODEV to an -EPROBE_DEFER.

Also platform_get_irq() can return -EPROBE_DEFER and the driver
isn't currently handling that properly.

Both changes are of a more involved nature than the simple conversions you
have here though, so perhaps a follow up patch?

The parts you here look good to me.

Thanks,

Jonathan

> ---
> drivers/iio/light/cm3605.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/light/cm3605.c b/drivers/iio/light/cm3605.c
> index 4c83953672be..0b90564213e8 100644
> --- a/drivers/iio/light/cm3605.c
> +++ b/drivers/iio/light/cm3605.c
> @@ -211,10 +211,10 @@ static int cm3605_probe(struct platform_device *pdev)
> }
>
> cm3605->vdd = devm_regulator_get(dev, "vdd");
> - if (IS_ERR(cm3605->vdd)) {
> - dev_err(dev, "failed to get VDD regulator\n");
> - return PTR_ERR(cm3605->vdd);
> - }
> + if (IS_ERR(cm3605->vdd))
> + return dev_err_probe(dev, PTR_ERR(cm3605->vdd),
> + "failed to get VDD regulator\n");
> +
> ret = regulator_enable(cm3605->vdd);
> if (ret) {
> dev_err(dev, "failed to enable VDD regulator\n");
> @@ -223,8 +223,7 @@ static int cm3605_probe(struct platform_device *pdev)
>
> cm3605->aset = devm_gpiod_get(dev, "aset", GPIOD_OUT_HIGH);
> if (IS_ERR(cm3605->aset)) {
> - dev_err(dev, "no ASET GPIO\n");
> - ret = PTR_ERR(cm3605->aset);
> + ret = dev_err_probe(dev, PTR_ERR(cm3605->aset), "no ASET GPIO\n");
> goto out_disable_vdd;
> }
>

2021-10-07 17:35:27

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] iio: light: cm36651: Make use of the helper function dev_err_probe()

On Tue, 28 Sep 2021 09:41:53 +0800
Cai Huoqing <[email protected]> wrote:

> When possible use dev_err_probe help to properly deal with the
> PROBE_DEFER error, the benefit is that DEFER issue will be logged
> in the devices_deferred debugfs file.
> Using dev_err_probe() can reduce code size, and the error value
> gets printed.
>
> Signed-off-by: Cai Huoqing <[email protected]>
To cut down on repeat sends I'm going to cherry pick individual patches
out of this series. Please send updates for the those patches I don't pick
up where I've requested changes.

Applied this patch to the togreg branch of iio.git and pushed out as testing
for 0-day to test it.

Thanks,

Jonathan

> ---
> v1->v2: Remove the separate line of PTR_ERR().
>
> drivers/iio/light/cm36651.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/iio/light/cm36651.c b/drivers/iio/light/cm36651.c
> index fd83a19929bc..c7cc4b0fe8b2 100644
> --- a/drivers/iio/light/cm36651.c
> +++ b/drivers/iio/light/cm36651.c
> @@ -632,10 +632,9 @@ static int cm36651_probe(struct i2c_client *client,
> cm36651 = iio_priv(indio_dev);
>
> cm36651->vled_reg = devm_regulator_get(&client->dev, "vled");
> - if (IS_ERR(cm36651->vled_reg)) {
> - dev_err(&client->dev, "get regulator vled failed\n");
> - return PTR_ERR(cm36651->vled_reg);
> - }
> + if (IS_ERR(cm36651->vled_reg))
> + return dev_err_probe(&client->dev, PTR_ERR(cm36651->vled_reg),
> + "get regulator vled failed\n");
>
> ret = regulator_enable(cm36651->vled_reg);
> if (ret) {

2021-10-07 19:45:40

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 4/4] iio: light: noa1305: Make use of the helper function dev_err_probe()

On Tue, 28 Sep 2021 09:41:55 +0800
Cai Huoqing <[email protected]> wrote:

> When possible use dev_err_probe help to properly deal with the
> PROBE_DEFER error, the benefit is that DEFER issue will be logged
> in the devices_deferred debugfs file.
> Using dev_err_probe() can reduce code size, and the error value
> gets printed.
>
> Signed-off-by: Cai Huoqing <[email protected]>
Applied this patch to the togreg branch of iio.git and pushed out as
testing for 0-day to try it out.

Note I didn't pick up 1 and 3 from this series and will expect to see
a v3 of those or reply to the relevant reviews.

Thanks,

Jonathan

> ---
> v1->v2: Remove the separate line of PTR_ERR().
>
> drivers/iio/light/noa1305.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/iio/light/noa1305.c b/drivers/iio/light/noa1305.c
> index a308fbc2fc7b..71a322227429 100644
> --- a/drivers/iio/light/noa1305.c
> +++ b/drivers/iio/light/noa1305.c
> @@ -217,10 +217,9 @@ static int noa1305_probe(struct i2c_client *client,
> priv = iio_priv(indio_dev);
>
> priv->vin_reg = devm_regulator_get(&client->dev, "vin");
> - if (IS_ERR(priv->vin_reg)) {
> - dev_err(&client->dev, "get regulator vin failed\n");
> - return PTR_ERR(priv->vin_reg);
> - }
> + if (IS_ERR(priv->vin_reg))
> + return dev_err_probe(&client->dev, PTR_ERR(priv->vin_reg),
> + "get regulator vin failed\n");
>
> ret = regulator_enable(priv->vin_reg);
> if (ret) {

2021-10-08 02:41:20

by Cai,Huoqing

[permalink] [raw]
Subject: Re: [PATCH v2 4/4] iio: light: noa1305: Make use of the helper function dev_err_probe()

On 07 10月 21 18:38:26, Jonathan Cameron wrote:
> On Tue, 28 Sep 2021 09:41:55 +0800
> Cai Huoqing <[email protected]> wrote:
>
> > When possible use dev_err_probe help to properly deal with the
> > PROBE_DEFER error, the benefit is that DEFER issue will be logged
> > in the devices_deferred debugfs file.
> > Using dev_err_probe() can reduce code size, and the error value
> > gets printed.
> >
> > Signed-off-by: Cai Huoqing <[email protected]>
> Applied this patch to the togreg branch of iio.git and pushed out as
> testing for 0-day to try it out.
>
> Note I didn't pick up 1 and 3 from this series and will expect to see
> a v3 of those or reply to the relevant reviews.
Sure, I will resend some patches according to your feedback.
Just took my vacation during 1~7th Oct.
>
> Thanks,
>
> Jonathan
>
> > ---
> > v1->v2: Remove the separate line of PTR_ERR().
> >
> > drivers/iio/light/noa1305.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/iio/light/noa1305.c b/drivers/iio/light/noa1305.c
> > index a308fbc2fc7b..71a322227429 100644
> > --- a/drivers/iio/light/noa1305.c
> > +++ b/drivers/iio/light/noa1305.c
> > @@ -217,10 +217,9 @@ static int noa1305_probe(struct i2c_client *client,
> > priv = iio_priv(indio_dev);
> >
> > priv->vin_reg = devm_regulator_get(&client->dev, "vin");
> > - if (IS_ERR(priv->vin_reg)) {
> > - dev_err(&client->dev, "get regulator vin failed\n");
> > - return PTR_ERR(priv->vin_reg);
> > - }
> > + if (IS_ERR(priv->vin_reg))
> > + return dev_err_probe(&client->dev, PTR_ERR(priv->vin_reg),
> > + "get regulator vin failed\n");
> >
> > ret = regulator_enable(priv->vin_reg);
> > if (ret) {
>