iio: imu: kmx61: Balance runtime pm + use pm_runtime_resume_and_get()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 9 May 2021 11:33:35 +0000 (12:33 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 May 2021 12:54:26 +0000 (13:54 +0100)
No point in calling pm_runtime_put_noidle() that isn't balancing a get.
Note no actual impact because the runtime pm core protects against
a negative reference counter.

For the pm_runtime_resume_and_get() main interest is in clearing
out this old pattern to avoid it getting coppied into new submissions.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/20210509113354.660190-10-jic23@kernel.org
drivers/iio/imu/kmx61.c

index d3e06ce..1dabfd6 100644 (file)
@@ -750,7 +750,7 @@ static int kmx61_set_power_state(struct kmx61_data *data, bool on, u8 device)
        }
 
        if (on) {
-               ret = pm_runtime_get_sync(&data->client->dev);
+               ret = pm_runtime_resume_and_get(&data->client->dev);
        } else {
                pm_runtime_mark_last_busy(&data->client->dev);
                ret = pm_runtime_put_autosuspend(&data->client->dev);
@@ -759,8 +759,6 @@ static int kmx61_set_power_state(struct kmx61_data *data, bool on, u8 device)
                dev_err(&data->client->dev,
                        "Failed: kmx61_set_power_state for %d, ret %d\n",
                        on, ret);
-               if (on)
-                       pm_runtime_put_noidle(&data->client->dev);
 
                return ret;
        }
@@ -1426,7 +1424,6 @@ static int kmx61_remove(struct i2c_client *client)
 
        pm_runtime_disable(&client->dev);
        pm_runtime_set_suspended(&client->dev);
-       pm_runtime_put_noidle(&client->dev);
 
        if (client->irq > 0) {
                iio_triggered_buffer_cleanup(data->acc_indio_dev);