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
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
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
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
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
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);
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;
> }
>
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) {
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) {
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) {
>