iio: accel: kxcjk-1013: Balance runtime pm + use pm_runtime_resume_and_get()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 9 May 2021 11:33:33 +0000 (12:33 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 May 2021 12:54:26 +0000 (13:54 +0100)
This driver alls pm_runtime_put_noidle() in it's remove function, but there
is no matching get call.  This isn't a bug as runtime pm will not allow
the reference counter to go negative, but it is missleading so lets remove
it.

Whilst here use pm_runtime_resume_and_get() to tidy up some boilerplate.
The coccicheck script didn't get this one due to the less obvious
structure. Found by inspection.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/20210509113354.660190-8-jic23@kernel.org
drivers/iio/accel/kxcjk-1013.c

index 18a9682..9618032 100644 (file)
@@ -601,7 +601,7 @@ static int kxcjk1013_set_power_state(struct kxcjk1013_data *data, bool on)
        int ret;
 
        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);
@@ -609,8 +609,6 @@ static int kxcjk1013_set_power_state(struct kxcjk1013_data *data, bool on)
        if (ret < 0) {
                dev_err(&data->client->dev,
                        "Failed: %s for %d\n", __func__, on);
-               if (on)
-                       pm_runtime_put_noidle(&data->client->dev);
                return ret;
        }
 #endif
@@ -1616,7 +1614,6 @@ static int kxcjk1013_remove(struct i2c_client *client)
 
        pm_runtime_disable(&client->dev);
        pm_runtime_set_suspended(&client->dev);
-       pm_runtime_put_noidle(&client->dev);
 
        if (data->dready_trig) {
                iio_triggered_buffer_cleanup(indio_dev);