]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
media: ov5640: do not change mode if format or frame interval is unchanged
authorHugues Fruchet <hugues.fruchet@st.com>
Wed, 4 Jul 2018 13:04:38 +0000 (09:04 -0400)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 27 Sep 2018 06:20:43 +0000 (08:20 +0200)
Save load of mode registers array when V4L2 client sets a format or a
frame interval which selects the same mode than the current one.

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: Sam Bobrowicz <sam@elite-embedded.com>
drivers/media/i2c/ov5640.c

index 1ecbb7a4a2eef628b0cd1bd3ca8eaddaaa86e8c1..071f4bc240ca72a1162b354170bdcf956a4d4f89 100644 (file)
@@ -1966,9 +1966,11 @@ static int ov5640_set_fmt(struct v4l2_subdev *sd,
                goto out;
        }
 
-       sensor->current_mode = new_mode;
-       sensor->fmt = *mbus_fmt;
-       sensor->pending_mode_change = true;
+       if (new_mode != sensor->current_mode) {
+               sensor->current_mode = new_mode;
+               sensor->fmt = *mbus_fmt;
+               sensor->pending_mode_change = true;
+       }
 out:
        mutex_unlock(&sensor->lock);
        return ret;
@@ -2508,8 +2510,10 @@ static int ov5640_s_frame_interval(struct v4l2_subdev *sd,
                goto out;
        }
 
-       sensor->current_mode = mode;
-       sensor->pending_mode_change = true;
+       if (mode != sensor->current_mode) {
+               sensor->current_mode = mode;
+               sensor->pending_mode_change = true;
+       }
 out:
        mutex_unlock(&sensor->lock);
        return ret;