All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Verkuil <hansverk@cisco.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	linux-media@vger.kernel.org
Cc: Hans Verkuil <hans.verkuil@cisco.com>
Subject: Re: [PATCH] mt9p031: Really disable Black Level Calibration in test pattern mode
Date: Thu, 08 May 2014 10:44:12 +0200	[thread overview]
Message-ID: <536B43DC.30802@cisco.com> (raw)
In-Reply-To: <1399477255-21207-1-git-send-email-laurent.pinchart@ideasonboard.com>

Hi Laurent,

The patch is correct, but I noticed a pre-existing bug that should be
fixed. See below.

On 05/07/14 17:40, Laurent Pinchart wrote:
> The digital side of the Black Level Calibration (BLC) function must be
> disabled when generating a test pattern to avoid artifacts in the image.
> The driver disables BLC correctly at the hardware level, but the feature
> gets reenabled by v4l2_ctrl_handler_setup() the next time the device is
> powered on.
> 
> Fix this by marking the BLC controls as inactive when generating a test
> pattern, and ignoring control set requests on inactive controls.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  drivers/media/i2c/mt9p031.c | 17 +++++++++++++----
>  1 file changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
> index 33daace..9102b23 100644
> --- a/drivers/media/i2c/mt9p031.c
> +++ b/drivers/media/i2c/mt9p031.c
> @@ -655,6 +655,9 @@ static int mt9p031_s_ctrl(struct v4l2_ctrl *ctrl)
>  	u16 data;
>  	int ret;
>  
> +	if (ctrl->flags & V4L2_CTRL_FLAG_INACTIVE)
> +		return 0;
> +
>  	switch (ctrl->id) {
>  	case V4L2_CID_EXPOSURE:
>  		ret = mt9p031_write(client, MT9P031_SHUTTER_WIDTH_UPPER,
> @@ -709,8 +712,16 @@ static int mt9p031_s_ctrl(struct v4l2_ctrl *ctrl)
>  					MT9P031_READ_MODE_2_ROW_MIR, 0);
>  
>  	case V4L2_CID_TEST_PATTERN:
> +		/* The digital side of the Black Level Calibration function must
> +		 * be disabled when generating a test pattern to avoid artifacts
> +		 * in the image. Activate (deactivate) the BLC-related controls
> +		 * when the test pattern is enabled (disabled).
> +		 */
> +		v4l2_ctrl_activate(mt9p031->blc_auto, ctrl->val == 0);
> +		v4l2_ctrl_activate(mt9p031->blc_offset, ctrl->val == 0);
> +
>  		if (!ctrl->val) {
> -			/* Restore the black level compensation settings. */
> +			/* Restore the BLC settings. */
>  			if (mt9p031->blc_auto->cur.val != 0) {
>  				ret = mt9p031_s_ctrl(mt9p031->blc_auto);

This doesn't do what you expect. What you want is to set the blc_auto
control to the current value, but mt9p031_s_ctrl(mt9p031->blc_auto) will
set it to the *new* value, which may not be the same. Ditto for doing the
same for blc_offset.

It's best to just call mt9p031_write directly, rather than going through
mt9p031_s_ctrl.

Regards,

	Hans

>  				if (ret < 0)
> @@ -735,9 +746,7 @@ static int mt9p031_s_ctrl(struct v4l2_ctrl *ctrl)
>  		if (ret < 0)
>  			return ret;
>  
> -		/* Disable digital black level compensation when using a test
> -		 * pattern.
> -		 */
> +		/* Disable digital BLC when generating a test pattern. */
>  		ret = mt9p031_set_mode2(mt9p031, MT9P031_READ_MODE_2_ROW_BLC,
>  					0);
>  		if (ret < 0)
> 

  reply	other threads:[~2014-05-08  8:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-07 15:40 [PATCH] mt9p031: Really disable Black Level Calibration in test pattern mode Laurent Pinchart
2014-05-08  8:44 ` Hans Verkuil [this message]
2014-05-08 12:55   ` Laurent Pinchart

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=536B43DC.30802@cisco.com \
    --to=hansverk@cisco.com \
    --cc=hans.verkuil@cisco.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@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.