iio: accel: mma9551/3: Balance untime pm + use pm_runtime_resume_and_get()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 9 May 2021 11:33:32 +0000 (12:33 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 May 2021 12:54:25 +0000 (13:54 +0100)
Both these drivers call pm_runtime_put_no_idle() when the reference
count should already be zero as there is no matching get()

Whilst here use pm_runtime_resume_and_get() rather than open coding.

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-7-jic23@kernel.org
drivers/iio/accel/mma9551.c
drivers/iio/accel/mma9551_core.c
drivers/iio/accel/mma9553.c

index 08a2303..4c359fb 100644 (file)
@@ -515,7 +515,6 @@ static int mma9551_remove(struct i2c_client *client)
 
        pm_runtime_disable(&client->dev);
        pm_runtime_set_suspended(&client->dev);
-       pm_runtime_put_noidle(&client->dev);
 
        mutex_lock(&data->mutex);
        mma9551_set_device_state(data->client, false);
index 666e7a0..fbf2e2c 100644 (file)
@@ -664,7 +664,7 @@ int mma9551_set_power_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);
@@ -673,8 +673,6 @@ int mma9551_set_power_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;
        }
index c15908f..ba3ecb3 100644 (file)
@@ -1154,7 +1154,6 @@ static int mma9553_remove(struct i2c_client *client)
 
        pm_runtime_disable(&client->dev);
        pm_runtime_set_suspended(&client->dev);
-       pm_runtime_put_noidle(&client->dev);
 
        mutex_lock(&data->mutex);
        mma9551_set_device_state(data->client, false);