OSDN Git Service

media: i2c: ov5645: Make sure to call PM functions
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Mon, 31 Oct 2022 23:22:01 +0000 (23:22 +0000)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 25 Nov 2022 06:48:54 +0000 (06:48 +0000)
Make sure we call the PM functions while s_stream(0) even in case of
errors in the code flow.

v4l2-core takes care of warning the user so no need to add a warning
message in the driver.

Suggested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/i2c/ov5645.c

index 6897f54..0a88928 100644 (file)
@@ -998,15 +998,12 @@ static int ov5645_s_stream(struct v4l2_subdev *subdev, int enable)
        } else {
                ret = ov5645_write_reg(ov5645, OV5645_IO_MIPI_CTRL00, 0x40);
                if (ret < 0)
-                       return ret;
+                       goto stream_off_rpm_put;
 
                ret = ov5645_write_reg(ov5645, OV5645_SYSTEM_CTRL0,
                                       OV5645_SYSTEM_CTRL0_STOP);
-               if (ret < 0)
-                       return ret;
 
-               pm_runtime_mark_last_busy(ov5645->dev);
-               pm_runtime_put_autosuspend(ov5645->dev);
+               goto stream_off_rpm_put;
        }
 
        return 0;
@@ -1014,6 +1011,11 @@ static int ov5645_s_stream(struct v4l2_subdev *subdev, int enable)
 err_rpm_put:
        pm_runtime_put_sync(ov5645->dev);
        return ret;
+
+stream_off_rpm_put:
+       pm_runtime_mark_last_busy(ov5645->dev);
+       pm_runtime_put_autosuspend(ov5645->dev);
+       return ret;
 }
 
 static const struct v4l2_subdev_video_ops ov5645_video_ops = {