This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: i2c: imx296: Replace streaming flag with runtime PM check
Author:  Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Date:    Thu Sep 14 20:46:47 2023 +0300

The streaming flag in the driver private structure is used for the sole
purpose of gating register writes when setting a V4L2 control. This is
better handled by checking if the sensor is powered up using the runtime
PM API. Do so and drop the streaming flag.

Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Reviewed-by: Tommaso Merciai <tomm.merc...@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 drivers/media/i2c/imx296.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

---

diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
index 3b4539b622b4..94aac9d2732f 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -201,8 +201,6 @@ struct imx296 {
        const struct imx296_clk_params *clk_params;
        bool mono;
 
-       bool streaming;
-
        struct v4l2_subdev subdev;
        struct media_pad pad;
 
@@ -321,7 +319,7 @@ static int imx296_s_ctrl(struct v4l2_ctrl *ctrl)
        unsigned int vmax;
        int ret = 0;
 
-       if (!sensor->streaming)
+       if (!pm_runtime_get_if_in_use(sensor->dev))
                return 0;
 
        state = v4l2_subdev_get_locked_active_state(&sensor->subdev);
@@ -376,6 +374,8 @@ static int imx296_s_ctrl(struct v4l2_ctrl *ctrl)
                break;
        }
 
+       pm_runtime_put(sensor->dev);
+
        return ret;
 }
 
@@ -607,8 +607,6 @@ static int imx296_s_stream(struct v4l2_subdev *sd, int 
enable)
                pm_runtime_mark_last_busy(sensor->dev);
                pm_runtime_put_autosuspend(sensor->dev);
 
-               sensor->streaming = false;
-
                goto unlock;
        }
 
@@ -620,13 +618,6 @@ static int imx296_s_stream(struct v4l2_subdev *sd, int 
enable)
        if (ret < 0)
                goto err_pm;
 
-       /*
-        * Set streaming to true to ensure __v4l2_ctrl_handler_setup() will set
-        * the controls. The flag is reset to false further down if an error
-        * occurs.
-        */
-       sensor->streaming = true;
-
        ret = __v4l2_ctrl_handler_setup(&sensor->ctrls);
        if (ret < 0)
                goto err_pm;
@@ -646,7 +637,6 @@ err_pm:
         * likely has no other chance to recover.
         */
        pm_runtime_put_sync(sensor->dev);
-       sensor->streaming = false;
 
        goto unlock;
 }

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to