iio: accel: mma8452: Balance runtime pm + use pm_runtime_resume_and_get()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 9 May 2021 11:33:31 +0000 (12:33 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 May 2021 12:54:27 +0000 (13:54 +0100)
Remove() callback calls pm_runtime_put_noidle() but there it is not
balancing a get.  No actual affect because the runtime pm core prevents
the reference count going negative.

Whilst here use pm_runtime_resume_and_get() rather than open coded version.
Again, coccinelle script missed this one due to more complex code
structure.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Sean Nyekjaer <sean@geanix.com>
Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/20210509113354.660190-6-jic23@kernel.org
drivers/iio/accel/mma8452.c

index 464a6bf..715b813 100644 (file)
@@ -221,7 +221,7 @@ static int mma8452_set_runtime_pm_state(struct i2c_client *client, bool on)
        int ret;
 
        if (on) {
-               ret = pm_runtime_get_sync(&client->dev);
+               ret = pm_runtime_resume_and_get(&client->dev);
        } else {
                pm_runtime_mark_last_busy(&client->dev);
                ret = pm_runtime_put_autosuspend(&client->dev);
@@ -230,8 +230,6 @@ static int mma8452_set_runtime_pm_state(struct i2c_client *client, bool on)
        if (ret < 0) {
                dev_err(&client->dev,
                        "failed to change power state to %d\n", on);
-               if (on)
-                       pm_runtime_put_noidle(&client->dev);
 
                return ret;
        }
@@ -1711,7 +1709,6 @@ static int mma8452_remove(struct i2c_client *client)
 
        pm_runtime_disable(&client->dev);
        pm_runtime_set_suspended(&client->dev);
-       pm_runtime_put_noidle(&client->dev);
 
        iio_triggered_buffer_cleanup(indio_dev);
        mma8452_trigger_cleanup(indio_dev);