summaryrefslogtreecommitdiffstats
path: root/drivers/media/i2c
diff options
context:
space:
mode:
authorHugues Fruchet <hugues.fruchet@st.com>2018-07-04 09:04:38 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-07-24 14:53:36 -0400
commit6949d864776ef295ddc8f840d7d6a2dbe51bd9d1 (patch)
tree9ce0d77e27e0238fdfd9f650178393a0e80897e5 /drivers/media/i2c
parentb5f6ec535f8f7ca3516adc0f34f2c3a5a388ad58 (diff)
downloadblackbird-obmc-linux-6949d864776ef295ddc8f840d7d6a2dbe51bd9d1.tar.gz
blackbird-obmc-linux-6949d864776ef295ddc8f840d7d6a2dbe51bd9d1.zip
media: ov5640: do not change mode if format or frame interval is unchanged
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>
Diffstat (limited to 'drivers/media/i2c')
-rw-r--r--drivers/media/i2c/ov5640.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
index 1ecbb7a4a2ee..071f4bc240ca 100644
--- a/drivers/media/i2c/ov5640.c
+++ b/drivers/media/i2c/ov5640.c
@@ -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;
OpenPOWER on IntegriCloud