linux-renesas-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Jacopo Mondi <jacopo@jmondi.org>
Cc: mchehab@kernel.org, hans.verkuil@cisco.com,
	sakari.ailus@linux.intel.com, sre@kernel.org,
	magnus.damm@gmail.com, wsa+renesas@sang-engineering.com,
	linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH] media: i2c: ov772x: Force use of SCCB protocol
Date: Fri, 12 May 2017 13:10:33 +0300	[thread overview]
Message-ID: <6204273.WTihKTXbd5@avalon> (raw)
In-Reply-To: <1494582763-22385-1-git-send-email-jacopo@jmondi.org>

Hi Jacopo,

Thank you for the patch.

On Friday 12 May 2017 11:52:43 Jacopo Mondi wrote:
> Force use of Omnivision's SCCB protocol and make sure the I2c adapter
> supports protocol mangling during probe.

How does this patch make sure that the I2C adapter supports protocol mangling 
?

> Testing done on SH4 Migo-R board.
> As commit:
> [e789029761503f0cce03e8767a56ae099b88e1bd]
> "i2c: sh_mobile: don't send a stop condition by default inside transfers"

References to commits are usually formatted as

commit e789029761503f0cce03e8767a56ae099b88e1bd
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Date:   Thu Jan 17 10:45:57 2013 +0100

    i2c: sh_mobile: don't send a stop condition by default inside transfers

or

commit e78902976150 ("i2c: sh_mobile: don't send a stop condition by default 
inside transfers")

> makes the i2c adapter emit a stop bit between messages in a single
> transfer only when explicitly required, the ov772x driver fails to
> probe due to i2c transfer timeout without SCCB flag set.
> 
> i2c-sh_mobile i2c-sh_mobile.0: Transfer request timed out
> ov772x 0-0021: Product ID error 92:92
> 
> With this patch applied:
> 
> soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0
> ov772x 0-0021: ov7725 Product ID 77:21 Manufacturer ID 7f:a2

I think you're getting the commit message backwards. It would be easier to 
read if you start by an explanation of why the commit is needed, followed by 
what it does. How about something like this ?

--------
Since commit e78902976150 ("i2c: sh_mobile: don't send a stop condition by 
default inside transfers") the i2c_sh_mobile I2C adapter emits repeated starts 
between messages in a transfer unless explicitly requested with I2C_M_STOP. 
This breaks the ov772x driver in the SH4 Migo-R board as the Omnivision sensor 
uses the I2C-like SCCB protocol that doesn't support repeated starts:

i2c-sh_mobile i2c-sh_mobile.0: Transfer request timed out
ov772x 0-0021: Product ID error 92:92

Fix it by marking the client as an SCCB client, which will force the I2C 
adapter to emit a stop/start between all messages.

The patch has been tested on SH4 Migo-R board and fixes probing of the ov772x 
driver:

soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0
ov772x 0-0021: ov7725 Product ID 77:21 Manufacturer ID 7f:a2
--------

> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  drivers/media/i2c/soc_camera/ov772x.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/media/i2c/soc_camera/ov772x.c
> b/drivers/media/i2c/soc_camera/ov772x.c index 985a367..8a4b29e 100644
> --- a/drivers/media/i2c/soc_camera/ov772x.c
> +++ b/drivers/media/i2c/soc_camera/ov772x.c
> @@ -1067,6 +1067,7 @@ static int ov772x_probe(struct i2c_client *client,
>  			"I2C-Adapter doesn't support 
I2C_FUNC_SMBUS_BYTE_DATA\n");
>  		return -EIO;
>  	}
> +	client->flags |= I2C_CLIENT_SCCB;
> 
>  	priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL);
>  	if (!priv)

-- 
Regards,

Laurent Pinchart

      parent reply	other threads:[~2017-05-12 10:10 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-12  9:52 [PATCH] media: i2c: ov772x: Force use of SCCB protocol Jacopo Mondi
2017-05-12  9:58 ` Wolfram Sang
2017-05-12 10:10 ` Laurent Pinchart [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=6204273.WTihKTXbd5@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=hans.verkuil@cisco.com \
    --cc=jacopo@jmondi.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=sre@kernel.org \
    --cc=wsa+renesas@sang-engineering.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).