media: i2c: mt9m001: use pm_runtime_resume_and_get()
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 23 Apr 2021 15:19:14 +0000 (17:19 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 19 May 2021 07:51:41 +0000 (09:51 +0200)
Commit dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
added pm_runtime_resume_and_get() in order to automatically handle
dev->power.usage_count decrement on errors.

Use the new API, in order to cleanup the error check logic.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/mt9m001.c

index 3b0ba8e..58c85a3 100644 (file)
@@ -217,9 +217,9 @@ static int mt9m001_s_stream(struct v4l2_subdev *sd, int enable)
                goto done;
 
        if (enable) {
-               ret = pm_runtime_get_sync(&client->dev);
+               ret = pm_runtime_resume_and_get(&client->dev);
                if (ret < 0)
-                       goto put_unlock;
+                       goto unlock;
 
                ret = mt9m001_apply_selection(sd);
                if (ret)
@@ -247,6 +247,7 @@ done:
 
 put_unlock:
        pm_runtime_put(&client->dev);
+unlock:
        mutex_unlock(&mt9m001->mutex);
 
        return ret;
@@ -834,6 +835,10 @@ static int mt9m001_remove(struct i2c_client *client)
 {
        struct mt9m001 *mt9m001 = to_mt9m001(client);
 
+       /*
+        * As it increments RPM usage_count even on errors, we don't need to
+        * check the returned code here.
+        */
        pm_runtime_get_sync(&client->dev);
 
        v4l2_async_unregister_subdev(&mt9m001->subdev);