OSDN Git Service

media: ov5640: fix framerate update
authorHugues Fruchet <hugues.fruchet@st.com>
Thu, 4 Oct 2018 11:21:57 +0000 (07:21 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 24 Nov 2019 07:20:25 +0000 (08:20 +0100)
[ Upstream commit 0929983e49c81c1d413702cd9b83bb06c4a2555c ]

Changing framerate right before streamon had no effect,
the new framerate value was taken into account only at
next streamon, fix this.

Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/i2c/ov5640.c

index a3bbef6..2023df1 100644 (file)
@@ -2572,8 +2572,6 @@ static int ov5640_s_frame_interval(struct v4l2_subdev *sd,
        if (frame_rate < 0)
                frame_rate = OV5640_15_FPS;
 
-       sensor->current_fr = frame_rate;
-       sensor->frame_interval = fi->interval;
        mode = ov5640_find_mode(sensor, frame_rate, mode->hact,
                                mode->vact, true);
        if (!mode) {
@@ -2581,7 +2579,10 @@ static int ov5640_s_frame_interval(struct v4l2_subdev *sd,
                goto out;
        }
 
-       if (mode != sensor->current_mode) {
+       if (mode != sensor->current_mode ||
+           frame_rate != sensor->current_fr) {
+               sensor->current_fr = frame_rate;
+               sensor->frame_interval = fi->interval;
                sensor->current_mode = mode;
                sensor->pending_mode_change = true;
        }