Re: [PATCH 3/3] iio: accel: kxsd9: use dev_err_probe()

From: Jonathan Cameron

Date: Sun Jul 19 2026 - 22:19:00 EST


On Tue, 14 Jul 2026 17:55:23 +0530
Biren Pandya <birenpandya@xxxxxxxxx> wrote:

> Modernize the error paths in kxsd9_common_probe() by using

Not sure we need the modernise bit of this.

> dev_err_probe() instead of dev_err() when handling failures from
> regulators and buffer setup.
>
> This simplifies the error handling and properly suppresses annoying
> and unnecessary log spam during -EPROBE_DEFER cases when regulators
> are not yet available during boot.
Not sure we need to state too much about it here, but it does
some more useful stuff than suppressing the log.
Take a look at debug stuff for deferred probing.

Anyhow, this one looks fine to me though the true benefit only
comes when these all become direct returns with a full move to devm
based cleanup.

Jonathan

>
> Signed-off-by: Biren Pandya <birenpandya@xxxxxxxxx>
> ---
> drivers/iio/accel/kxsd9.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c
> index 680d43135e617..ffbefd4576dd2 100644
> --- a/drivers/iio/accel/kxsd9.c
> +++ b/drivers/iio/accel/kxsd9.c
> @@ -433,10 +433,9 @@ int kxsd9_common_probe(struct device *dev,
> ret = devm_regulator_bulk_get(dev,
> ARRAY_SIZE(st->regs),
> st->regs);
> - if (ret) {
> - dev_err(dev, "Cannot get regulators\n");
> - return ret;
> - }
> + if (ret)
> + return dev_err_probe(dev, ret, "Cannot get regulators\n");
> +
> /* Default scaling */
> st->scale = KXSD9_CTRL_C_FS_2G;
>
> @@ -447,13 +446,15 @@ int kxsd9_common_probe(struct device *dev,
> kxsd9_trigger_handler,
> &kxsd9_buffer_setup_ops);
> if (ret) {
> - dev_err(dev, "triggered buffer setup failed\n");
> + dev_err_probe(dev, ret, "triggered buffer setup failed\n");
> goto err_power_down;
> }
>
> ret = iio_device_register(indio_dev);
> - if (ret)
> + if (ret) {
> + dev_err_probe(dev, ret, "device register failed\n");
> goto err_cleanup_buffer;
> + }
>
> dev_set_drvdata(dev, indio_dev);
>