aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLad Prabhakar <[email protected]>2022-10-31 23:22:01 +0000
committerMauro Carvalho Chehab <[email protected]>2022-11-25 06:48:54 +0000
commitd781dce66df8e203c6593eaa855ce6843d69819d (patch)
treee47463f6ae8a89d7fe11d6ba7fed0bf9eb65bfe7
parent9a018670dfa06b44efac08793b82a167d8a167ff (diff)
media: i2c: ov5645: Make sure to call PM functions
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 <[email protected]> Signed-off-by: Lad Prabhakar <[email protected]> Signed-off-by: Sakari Ailus <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
-rw-r--r--drivers/media/i2c/ov5645.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
index 6897f542737a..0a889283da36 100644
--- a/drivers/media/i2c/ov5645.c
+++ b/drivers/media/i2c/ov5645.c
@@ -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 = {