All of lore.kernel.org
 help / color / mirror / Atom feed
From: Janusz Krzysztofik <jmkrzyszt@gmail.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	stable@vger.kernel.org, Janusz Krzysztofik <jmkrzyszt@gmail.com>
Subject: [PATCH 14/14] media: ov6650: Fix stored crop rectangle not in sync with hardware
Date: Mon,  8 Apr 2019 23:42:42 +0200	[thread overview]
Message-ID: <20190408214242.9603-15-jmkrzyszt@gmail.com> (raw)
In-Reply-To: <20190408214242.9603-1-jmkrzyszt@gmail.com>

The driver stores crop rectangle settings supposed to be in line with
hardware state in a device private structure.  Since the driver initial
submission, crop rectangle width and height settings are not updated
correctly when rectangle offset settings are applied on hardware.  If
an error occurs while the device is updated, the stored settings my no
longer reflect hardware state and consecutive calls to .get_selection()
as well as .get_fmt() may return incorrect information.  That in turn
may affect ability of a host device to use correct DMA transfer
settings if such incorrect informamtion on active frame format returned
by .get_fmt() is used.

Assuming a failed update of the device means its actual settings
haven't changed, update crop rectangle width and height settings stored
in the device private structure correctly while the rectangle offset is
successfully applied on hardware so the stored values always reflect
actual hardware state to the extent possible.

Fixes: 2f6e2404799a ("[media] SoC Camera: add driver for OV6650 sensor")
Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Cc: stable@vger.kernel.org
---
 drivers/media/i2c/ov6650.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/media/i2c/ov6650.c b/drivers/media/i2c/ov6650.c
index 001457d39742..cffe6aa906b2 100644
--- a/drivers/media/i2c/ov6650.c
+++ b/drivers/media/i2c/ov6650.c
@@ -500,6 +500,7 @@ static int ov6650_set_selection(struct v4l2_subdev *sd,
 
 	ret = ov6650_reg_write(client, REG_HSTRT, sel->r.left >> 1);
 	if (!ret) {
+		priv->rect.width += priv->rect.left - sel->r.left;
 		priv->rect.left = sel->r.left;
 		ret = ov6650_reg_write(client, REG_HSTOP,
 				       (sel->r.left + sel->r.width) >> 1);
@@ -509,6 +510,7 @@ static int ov6650_set_selection(struct v4l2_subdev *sd,
 		ret = ov6650_reg_write(client, REG_VSTRT, sel->r.top >> 1);
 	}
 	if (!ret) {
+		priv->rect.height += priv->rect.top - sel->r.top;
 		priv->rect.top = sel->r.top;
 		ret = ov6650_reg_write(client, REG_VSTOP,
 				       (sel->r.top + sel->r.height) >> 1);
-- 
2.21.0


      parent reply	other threads:[~2019-04-08 21:43 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-08 21:42 [PATCH 00/14] media: ov6650: A collection of fixes Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 01/14] media: ov6650: Fix MODDULE_DESCRIPTION Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 02/14] media: ov6650: Fix control handler not freed on init error Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 03/14] media: ov6650: Fix unverified arguments used in .set_fmt() Janusz Krzysztofik
2019-04-30 13:58   ` Sakari Ailus
2019-05-07 23:33     ` Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 04/14] media: ov6650: Fix unverified arguments accepted by .get_fmt() Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 05/14] media: ov6650: Fix unverified arguments accepted by .enum_mbus_code() Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 06/14] media: ov6650: Fix unverified pad IDs accepted by .get/set_selectioon() Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 07/14] media: ov6650: Fix unverified pad IDs accepted by .g/s_frame_interval() Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 08/14] media: ov6650: Fix crop rectangle alignment not passed back Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 09/14] media: ov6650: Fix incorrect use of JPEG colorspace Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 10/14] media: ov6650: Fix some format attributes not under control Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 11/14] media: ov6650: Fix .get_fmt() V4L2_SUBDEV_FORMAT_TRY support Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 12/14] media: ov6650: Fix default format not applied on device probe Janusz Krzysztofik
2019-04-08 21:42 ` [PATCH 13/14] media: ov6650: Fix stored frame format not in sync with hardware Janusz Krzysztofik
2019-04-08 21:42 ` Janusz Krzysztofik [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190408214242.9603-15-jmkrzyszt@gmail.com \
    --to=jmkrzyszt@gmail.com \
    --cc=hans.verkuil@cisco.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.