Re: [PATCH] iio: adc: ti-ads1015: use devm_pm_runtime_enable() to fix probe error path

From: Joshua Crofts

Date: Fri May 29 2026 - 07:12:17 EST


On Fri, 29 May 2026 at 12:12, Stepan Ionichev <sozdayvek@xxxxxxxxx> wrote:
>
> ads1015_probe() calls pm_runtime_enable() and then iio_device_register().
> If iio_device_register() fails the function returns directly, leaving
> runtime PM enabled and autosuspend in use. On subsequent probe/rebind
> the runtime PM tracking complains about an unbalanced enable.
>
> Switch to devm_pm_runtime_enable() so the enable (and the matching
> dont_use_autosuspend) are torn down automatically on probe failure and
> on driver unbind. The manual pm_runtime_disable() and
> pm_runtime_set_suspended() calls in ads1015_remove() are no longer
> needed and are dropped; the devm action runs after .remove() and now
> handles the teardown. While here, convert the dev_err() + return to
> dev_err_probe() to follow current style.
>
> Signed-off-by: Stepan Ionichev <sozdayvek@xxxxxxxxx>
> ---
> drivers/iio/adc/ti-ads1015.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti-ads1015.c
> index c7ffe47449e2..2331e946c519 100644
> --- a/drivers/iio/adc/ti-ads1015.c
> +++ b/drivers/iio/adc/ti-ads1015.c
> @@ -1037,13 +1037,14 @@ static int ads1015_probe(struct i2c_client *client)
> return ret;
> pm_runtime_set_autosuspend_delay(&client->dev, ADS1015_SLEEP_DELAY_MS);
> pm_runtime_use_autosuspend(&client->dev);
> - pm_runtime_enable(&client->dev);
> + ret = devm_pm_runtime_enable(&client->dev);
> + if (ret)
> + return ret;
>
> ret = iio_device_register(indio_dev);
> - if (ret < 0) {
> - dev_err(&client->dev, "Failed to register IIO device\n");
> - return ret;
> - }
> + if (ret < 0)
> + return dev_err_probe(&client->dev, ret,
> + "Failed to register IIO device\n");
>

The pm_runtime stuff seems fine, however not sure why you slipped
this change into the patch - there are a few more instances where
dev_err() can be moved to dev_err_probe(), e.g.

https://elixir.bootlin.com/linux/v7.1-rc5/source/drivers/iio/adc/ti-ads1015.c#L981

--
Kind regards

CJD