2021-09-28 14:22:02

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v3 1/9] iio: adc: ab8500-gpadc: 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.

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

drivers/iio/adc/ab8500-gpadc.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/iio/adc/ab8500-gpadc.c b/drivers/iio/adc/ab8500-gpadc.c
index 7b5212ba5501..c58d0e2ae538 100644
--- a/drivers/iio/adc/ab8500-gpadc.c
+++ b/drivers/iio/adc/ab8500-gpadc.c
@@ -1146,11 +1146,9 @@ static int ab8500_gpadc_probe(struct platform_device *pdev)

/* The VTVout LDO used to power the AB8500 GPADC */
gpadc->vddadc = devm_regulator_get(dev, "vddadc");
- if (IS_ERR(gpadc->vddadc)) {
- ret = PTR_ERR(gpadc->vddadc);
- dev_err(dev, "failed to get vddadc\n");
- return ret;
- }
+ if (IS_ERR(gpadc->vddadc))
+ return dev_err_probe(dev, PTR_ERR(gpadc->vddadc),
+ "failed to get vddadc\n");

ret = regulator_enable(gpadc->vddadc);
if (ret) {
--
2.25.1


2021-09-28 14:22:04

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v3 6/9] iio: adc: meson_saradc: 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/adc/meson_saradc.c | 39 +++++++++++++-----------------
1 file changed, 17 insertions(+), 22 deletions(-)

diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c
index 705d5e11a54b..014a77f98b98 100644
--- a/drivers/iio/adc/meson_saradc.c
+++ b/drivers/iio/adc/meson_saradc.c
@@ -1230,35 +1230,31 @@ static int meson_sar_adc_probe(struct platform_device *pdev)
return ret;

priv->clkin = devm_clk_get(&pdev->dev, "clkin");
- if (IS_ERR(priv->clkin)) {
- dev_err(&pdev->dev, "failed to get clkin\n");
- return PTR_ERR(priv->clkin);
- }
+ if (IS_ERR(priv->clkin))
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->clkin),
+ "failed to get clkin\n");

priv->core_clk = devm_clk_get(&pdev->dev, "core");
- if (IS_ERR(priv->core_clk)) {
- dev_err(&pdev->dev, "failed to get core clk\n");
- return PTR_ERR(priv->core_clk);
- }
+ if (IS_ERR(priv->core_clk))
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->core_clk),
+ "failed to get core clk\n");

priv->adc_clk = devm_clk_get(&pdev->dev, "adc_clk");
if (IS_ERR(priv->adc_clk)) {
- if (PTR_ERR(priv->adc_clk) == -ENOENT) {
+ if (PTR_ERR(priv->adc_clk) == -ENOENT)
priv->adc_clk = NULL;
- } else {
- dev_err(&pdev->dev, "failed to get adc clk\n");
- return PTR_ERR(priv->adc_clk);
- }
+ else
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->adc_clk),
+ "failed to get adc clk\n");
}

priv->adc_sel_clk = devm_clk_get(&pdev->dev, "adc_sel");
if (IS_ERR(priv->adc_sel_clk)) {
- if (PTR_ERR(priv->adc_sel_clk) == -ENOENT) {
+ if (PTR_ERR(priv->adc_sel_clk) == -ENOENT)
priv->adc_sel_clk = NULL;
- } else {
- dev_err(&pdev->dev, "failed to get adc_sel clk\n");
- return PTR_ERR(priv->adc_sel_clk);
- }
+ else
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->adc_sel_clk),
+ "failed to get adc_sel clk\n");
}

/* on pre-GXBB SoCs the SAR ADC itself provides the ADC clock: */
@@ -1265,10 +1265,9 @@ static int meson_sar_adc_probe(struct platform_device *pdev)
}

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

priv->calibscale = MILLION;

--
2.25.1

2021-09-28 14:22:25

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v3 4/9] iio: adc: max1118: 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/adc/max1118.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/adc/max1118.c b/drivers/iio/adc/max1118.c
index 8cec9d949083..a41bc570be21 100644
--- a/drivers/iio/adc/max1118.c
+++ b/drivers/iio/adc/max1118.c
@@ -221,10 +221,9 @@ static int max1118_probe(struct spi_device *spi)

if (id->driver_data == max1118) {
adc->reg = devm_regulator_get(&spi->dev, "vref");
- if (IS_ERR(adc->reg)) {
- dev_err(&spi->dev, "failed to get vref regulator\n");
- return PTR_ERR(adc->reg);
- }
+ if (IS_ERR(adc->reg))
+ return dev_err_probe(&spi->dev, PTR_ERR(adc->reg),
+ "failed to get vref regulator\n");
ret = regulator_enable(adc->reg);
if (ret)
return ret;
--
2.25.1

2021-09-28 14:25:36

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v3 9/9] iio: adc: ti-ads7950: 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/adc/ti-ads7950.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c
index a2b83f0bd526..a7efa3eada2c 100644
--- a/drivers/iio/adc/ti-ads7950.c
+++ b/drivers/iio/adc/ti-ads7950.c
@@ -600,8 +600,8 @@ static int ti_ads7950_probe(struct spi_device *spi)

st->reg = devm_regulator_get(&spi->dev, "vref");
if (IS_ERR(st->reg)) {
- dev_err(&spi->dev, "Failed to get regulator \"vref\"\n");
- ret = PTR_ERR(st->reg);
+ ret = dev_err_probe(&spi->dev, PTR_ERR(st->reg),
+ "Failed to get regulator \"vref\"\n");
goto error_destroy_mutex;
}

--
2.25.1

2021-09-28 14:25:36

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v3 8/9] iio: adc: rockchip_saradc: 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/adc/rockchip_saradc.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
index a56a0d7337ca..57419ccb3c70 100644
--- a/drivers/iio/adc/rockchip_saradc.c
+++ b/drivers/iio/adc/rockchip_saradc.c
@@ -392,11 +392,9 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
}

info->vref = devm_regulator_get(&pdev->dev, "vref");
- if (IS_ERR(info->vref)) {
- dev_err(&pdev->dev, "failed to get regulator, %ld\n",
- PTR_ERR(info->vref));
- return PTR_ERR(info->vref);
- }
+ if (IS_ERR(info->vref))
+ return dev_err_probe(&pdev->dev, PTR_ERR(info->vref),
+ "failed to get regulator\n");

if (info->reset)
rockchip_saradc_reset_controller(info->reset);
--
2.25.1

2021-09-28 14:41:08

by Cai,Huoqing

[permalink] [raw]
Subject: [PATCH v3 3/9] iio: adc: lpc18xx_adc: 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/adc/lpc18xx_adc.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/iio/adc/lpc18xx_adc.c b/drivers/iio/adc/lpc18xx_adc.c
index 3566990ae87d..caa7feb4219f 100644
--- a/drivers/iio/adc/lpc18xx_adc.c
+++ b/drivers/iio/adc/lpc18xx_adc.c
@@ -137,19 +137,17 @@ static int lpc18xx_adc_probe(struct platform_device *pdev)
return PTR_ERR(adc->base);

adc->clk = devm_clk_get(&pdev->dev, NULL);
- if (IS_ERR(adc->clk)) {
- dev_err(&pdev->dev, "error getting clock\n");
- return PTR_ERR(adc->clk);
- }
+ if (IS_ERR(adc->clk))
+ return dev_err_probe(&pdev->dev, PTR_ERR(adc->clk),
+ "error getting clock\n");

rate = clk_get_rate(adc->clk);
clkdiv = DIV_ROUND_UP(rate, LPC18XX_ADC_CLK_TARGET);

adc->vref = devm_regulator_get(&pdev->dev, "vref");
- if (IS_ERR(adc->vref)) {
- dev_err(&pdev->dev, "error getting regulator\n");
- return PTR_ERR(adc->vref);
- }
+ if (IS_ERR(adc->vref))
+ return dev_err_probe(&pdev->dev, PTR_ERR(adc->vref),
+ "error getting regulator\n");

indio_dev->name = dev_name(&pdev->dev);
indio_dev->info = &lpc18xx_adc_info;
--
2.25.1

2021-09-29 17:42:59

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v3 1/9] iio: adc: ab8500-gpadc: Make use of the helper function dev_err_probe()

On Tue, 28 Sep 2021 22:19:47 +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.
>
> Reviewed-by: Linus Walleij <[email protected]>
> Signed-off-by: Cai Huoqing <[email protected]>

I believe we could in theory get an -EPROBE_DEFER from
platform_get_irq_by_name() so we should handle that one similarly.

I have no idea if can actually happen on this platform, but seems to me
that we should be thorough given how easy it is to do here.

Thanks,

Jonathan

> ---
> v1->v2: Remove the separate line of PTR_ERR().
>
> drivers/iio/adc/ab8500-gpadc.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/adc/ab8500-gpadc.c b/drivers/iio/adc/ab8500-gpadc.c
> index 7b5212ba5501..c58d0e2ae538 100644
> --- a/drivers/iio/adc/ab8500-gpadc.c
> +++ b/drivers/iio/adc/ab8500-gpadc.c
> @@ -1146,11 +1146,9 @@ static int ab8500_gpadc_probe(struct platform_device *pdev)
>
> /* The VTVout LDO used to power the AB8500 GPADC */
> gpadc->vddadc = devm_regulator_get(dev, "vddadc");
> - if (IS_ERR(gpadc->vddadc)) {
> - ret = PTR_ERR(gpadc->vddadc);
> - dev_err(dev, "failed to get vddadc\n");
> - return ret;
> - }
> + if (IS_ERR(gpadc->vddadc))
> + return dev_err_probe(dev, PTR_ERR(gpadc->vddadc),
> + "failed to get vddadc\n");
>
> ret = regulator_enable(gpadc->vddadc);
> if (ret) {

2021-09-29 19:28:14

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v3 8/9] iio: adc: rockchip_saradc: Make use of the helper function dev_err_probe()

On Tue, 28 Sep 2021 22:19: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]>

In this driver, there is also a call to
devm_reset_control_get_exclusive() which I think can return
-EPROBE_DEFER

There isn't a message printed on that particular patch, but it would
be good to add something generic. Same for platform_get_irq()

There are some devm_clk_get() calls as well which likewise probably
want handling in a similar fashion as you have done in other patches.

Thanks,

Jonathan


> ---
> v1->v2: Remove the separate line of PTR_ERR().
>
> drivers/iio/adc/rockchip_saradc.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
> index a56a0d7337ca..57419ccb3c70 100644
> --- a/drivers/iio/adc/rockchip_saradc.c
> +++ b/drivers/iio/adc/rockchip_saradc.c
> @@ -392,11 +392,9 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
> }
>
> info->vref = devm_regulator_get(&pdev->dev, "vref");
> - if (IS_ERR(info->vref)) {
> - dev_err(&pdev->dev, "failed to get regulator, %ld\n",
> - PTR_ERR(info->vref));
> - return PTR_ERR(info->vref);
> - }
> + if (IS_ERR(info->vref))
> + return dev_err_probe(&pdev->dev, PTR_ERR(info->vref),
> + "failed to get regulator\n");
>
> if (info->reset)
> rockchip_saradc_reset_controller(info->reset);

2021-10-02 13:08:30

by Martin Blumenstingl

[permalink] [raw]
Subject: Re: [PATCH v3 6/9] iio: adc: meson_saradc: Make use of the helper function dev_err_probe()

On Tue, Sep 28, 2021 at 4:20 PM 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: Martin Blumenstingl <[email protected]>
as well as:
Reviewed-by: Martin Blumenstingl <[email protected]>
# Odroid-C1

Thanks for your contribution!


Best regards,
Martin

2021-10-02 16:08:48

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v3 6/9] iio: adc: meson_saradc: Make use of the helper function dev_err_probe()

On Sat, 2 Oct 2021 15:01:56 +0200
Martin Blumenstingl <[email protected]> wrote:

> On Tue, Sep 28, 2021 at 4:20 PM 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: Martin Blumenstingl <[email protected]>
> as well as:
> Reviewed-by: Martin Blumenstingl <[email protected]>
> # Odroid-C1
Hi Martin,

Confusing tag. Was the second meant to be a Tested-by?

Thanks,

Jonathan
>
> Thanks for your contribution!
>
>
> Best regards,
> Martin

2021-10-02 17:20:19

by Martin Blumenstingl

[permalink] [raw]
Subject: Re: [PATCH v3 6/9] iio: adc: meson_saradc: Make use of the helper function dev_err_probe()

Hi Jonathan,

On Sat, Oct 2, 2021 at 6:05 PM Jonathan Cameron <[email protected]> wrote:
>
> On Sat, 2 Oct 2021 15:01:56 +0200
> Martin Blumenstingl <[email protected]> wrote:
>
> > On Tue, Sep 28, 2021 at 4:20 PM 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: Martin Blumenstingl <[email protected]>
> > as well as:
> > Reviewed-by: Martin Blumenstingl <[email protected]>
> > # Odroid-C1
> Hi Martin,
>
> Confusing tag. Was the second meant to be a Tested-by?
my bad - it is indeed supposed to be:
Tested-by: Martin Blumenstingl <[email protected]>

Testing was done on a Meson8b Odroid-C1 board.


Best regards,
Martin