All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
To: Jacopo Mondi <jacopo+renesas@jmondi.org>,
	laurent.pinchart+renesas@ideasonboard.com,
	niklas.soderlund+renesas@ragnatech.se, geert@linux-m68k.org
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 11/18] media: i2c: rdacm21: Fix OV10640 powerdown
Date: Mon, 15 Mar 2021 17:20:16 +0000	[thread overview]
Message-ID: <76196b54-304f-f17f-04af-67bcacd9d923@ideasonboard.com> (raw)
In-Reply-To: <20210315131512.133720-12-jacopo+renesas@jmondi.org>

Hi Jacopo,

On 15/03/2021 13:15, Jacopo Mondi wrote:
> The OV10640 image sensor powerdown signal is controlled by the first
> line of the OV490 GPIO pad #1, but the pad #0 identifier
> OV490_GPIO_OUTPUT_VALUE0 was erroneously used. As a result the image
> sensor powerdown signal was never asserted but was kept high by an
> internal pull-up resistor, causing sporadic failures during the
> image sensor startup phase.
> 
> Fix this by using the correct GPIO pad identifier.
> 
> While at it also fix the GPIO signal handling sequence, as the reset
> line was released before the powerdown one, and introduce the correct
> delays in between the two operations.
> 
> Wait the mandatory 1 millisecond delay after the powerup lane is

Technically you wait 1.5 milliseconds below - but I think that's fine
here ;-)

> asserted. The reset delay is not characterized in the chip manual if
> not as "255 XVCLK + initialization". Wait for at least 3 milliseconds
> to guarantee the SCCB bus is available.
> 
> This commit fixes a sporadic start-up error triggered by a failure to
> read the OV10640 chip ID:
> rdacm21 8-0054: OV10640 ID mismatch: (0x01)
> 
> Fixes: a59f853b3b4b ("media: i2c: Add driver for RDACM21 camera module")
> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>

Sometime it might be nice to see this look more like the GPIO
interfaces, but I think this is fine for now.

Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

> ---
>  drivers/media/i2c/rdacm21.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/i2c/rdacm21.c b/drivers/media/i2c/rdacm21.c
> index 7bce55adfd7c..50a9b0d8255d 100644
> --- a/drivers/media/i2c/rdacm21.c
> +++ b/drivers/media/i2c/rdacm21.c
> @@ -333,13 +333,15 @@ static int ov10640_initialize(struct rdacm21_device *dev)
>  {
>  	u8 val;
>  
> -	/* Power-up OV10640 by setting RESETB and PWDNB pins high. */
> +	/* Power-up OV10640 by setting PWDNB and RESETB pins high. */
>  	ov490_write_reg(dev, OV490_GPIO_SEL0, OV490_GPIO0);
>  	ov490_write_reg(dev, OV490_GPIO_SEL1, OV490_SPWDN0);
>  	ov490_write_reg(dev, OV490_GPIO_DIRECTION0, OV490_GPIO0);
>  	ov490_write_reg(dev, OV490_GPIO_DIRECTION1, OV490_SPWDN0);
> +
> +	ov490_write_reg(dev, OV490_GPIO_OUTPUT_VALUE1, OV490_SPWDN0);
> +	usleep_range(1500, 3000);
>  	ov490_write_reg(dev, OV490_GPIO_OUTPUT_VALUE0, OV490_GPIO0);
> -	ov490_write_reg(dev, OV490_GPIO_OUTPUT_VALUE0, OV490_SPWDN0);
>  	usleep_range(3000, 5000);
>  
>  	/* Read OV10640 ID to test communications. */
> 


  reply	other threads:[~2021-03-15 17:21 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-15 13:14 [PATCH v2 00/18] media: gmsl: Reliability improvement Jacopo Mondi
2021-03-15 13:14 ` [PATCH v2 01/18] media: i2c: rdamc21: Fix warning on u8 cast Jacopo Mondi
2021-03-15 15:27   ` Kieran Bingham
2021-03-15 21:35   ` Laurent Pinchart
2021-03-15 13:14 ` [PATCH v2 02/18] media: i2c: rdacm20: Enable noise immunity Jacopo Mondi
2021-03-15 21:37   ` Laurent Pinchart
2021-03-16 12:56     ` Jacopo Mondi
2021-03-16 19:24       ` Laurent Pinchart
2021-03-15 13:14 ` [PATCH v2 03/18] media: i2c: rdacm20: Embedded 'serializer' field Jacopo Mondi
2021-03-15 15:29   ` Kieran Bingham
2021-03-15 13:14 ` [PATCH v2 04/18] media: i2c: rdacm20: Replace goto with a loop Jacopo Mondi
2021-03-15 15:36   ` Kieran Bingham
2021-03-15 13:14 ` [PATCH v2 05/18] media: i2c: rdacm20: Report camera module name Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 06/18] media: i2c: max9271: Check max9271_write() return Jacopo Mondi
2021-03-15 15:46   ` Kieran Bingham
2021-03-15 21:38   ` Laurent Pinchart
2021-03-15 13:15 ` [PATCH v2 07/18] media: i2c: rdacm20: Check return values Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 08/18] media: i2c: rdacm20: Re-work ov10635 reset Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 09/18] media: i2c: max9271: Introduce wake_up() function Jacopo Mondi
2021-03-15 17:14   ` Kieran Bingham
2021-03-15 21:43   ` Laurent Pinchart
2021-03-15 13:15 ` [PATCH v2 10/18] media: i2c: max9286: Adjust parameters indent Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 11/18] media: i2c: rdacm21: Fix OV10640 powerdown Jacopo Mondi
2021-03-15 17:20   ` Kieran Bingham [this message]
2021-03-15 21:45   ` Laurent Pinchart
2021-03-15 13:15 ` [PATCH v2 12/18] media: i2c: rdacm21: Give more time to OV490 to boot Jacopo Mondi
2021-03-15 17:22   ` Kieran Bingham
2021-03-17 10:04     ` Jacopo Mondi
2021-03-19  0:29       ` Laurent Pinchart
2021-03-19 14:53         ` Jacopo Mondi
2021-03-15 21:52   ` Laurent Pinchart
2021-03-15 13:15 ` [PATCH v2 13/18] media: i2c: max9286: Rename reverse_channel_mv Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 14/18] media: i2c: max9286: Cache channel amplitude Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 15/18] media: i2c: max9286: Define high " Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 16/18] media: v4l2-subdev: De-deprecate init() subdev op Jacopo Mondi
2021-03-15 21:56   ` Laurent Pinchart
2021-03-15 13:15 ` [PATCH v2 17/18] media: gmsl: Reimplement initialization sequence Jacopo Mondi
2021-03-15 13:15 ` [PATCH v2 18/18] media: i2c: max9286: Rework comments in .bound() Jacopo Mondi
2021-03-15 17:28   ` Kieran Bingham
2021-03-15 21:57   ` 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=76196b54-304f-f17f-04af-67bcacd9d923@ideasonboard.com \
    --to=kieran.bingham+renesas@ideasonboard.com \
    --cc=geert@linux-m68k.org \
    --cc=jacopo+renesas@jmondi.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    /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.