All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	Jacopo Mondi <jacopo+renesas@jmondi.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Mauro Carvalho Chehab <mchehab@s-opensource.com>
Subject: Re: [PATCH v3 02/11] media: ov772x: allow i2c controllers without I2C_FUNC_PROTOCOL_MANGLING
Date: Mon, 23 Apr 2018 12:18:58 +0300	[thread overview]
Message-ID: <4036479.nT1QDtF4Ij@avalon> (raw)
In-Reply-To: <1524412577-14419-3-git-send-email-akinobu.mita@gmail.com>

Hi Mita-san,

On Sunday, 22 April 2018 18:56:08 EEST Akinobu Mita wrote:
> The ov772x driver only works when the i2c controller have
> I2C_FUNC_PROTOCOL_MANGLING.  However, many i2c controller drivers don't
> support it.
> 
> The reason that the ov772x requires I2C_FUNC_PROTOCOL_MANGLING is that
> it doesn't support repeated starts.
> 
> This changes the reading ov772x register method so that it doesn't
> require I2C_FUNC_PROTOCOL_MANGLING by calling two separated i2c messages.

As commented in a reply to v1, given that this implementation is in no way 
specific to the ov772x driver, I'd prefer implementing the fallback in the I2C 
core instead.

> Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> ---
> * v3
> - Remove I2C_CLIENT_SCCB flag set as it isn't needed anymore
> 
>  drivers/media/i2c/ov772x.c | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> index b62860c..2ae730f 100644
> --- a/drivers/media/i2c/ov772x.c
> +++ b/drivers/media/i2c/ov772x.c
> @@ -542,9 +542,19 @@ static struct ov772x_priv *to_ov772x(struct v4l2_subdev
> *sd) return container_of(sd, struct ov772x_priv, subdev);
>  }
> 
> -static inline int ov772x_read(struct i2c_client *client, u8 addr)
> +static int ov772x_read(struct i2c_client *client, u8 addr)
>  {
> -	return i2c_smbus_read_byte_data(client, addr);
> +	int ret;
> +	u8 val;
> +
> +	ret = i2c_master_send(client, &addr, 1);
> +	if (ret < 0)
> +		return ret;
> +	ret = i2c_master_recv(client, &val, 1);
> +	if (ret < 0)
> +		return ret;
> +
> +	return val;
>  }
> 
>  static inline int ov772x_write(struct i2c_client *client, u8 addr, u8
> value) @@ -1255,13 +1265,11 @@ static int ov772x_probe(struct i2c_client
> *client, return -EINVAL;
>  	}
> 
> -	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
> -					      I2C_FUNC_PROTOCOL_MANGLING)) {
> +	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
>  		dev_err(&adapter->dev,
> -			"I2C-Adapter doesn't support SMBUS_BYTE_DATA or PROTOCOL_MANGLING
\n");
> +			"I2C-Adapter doesn't support 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




  reply	other threads:[~2018-04-23  9:18 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-22 15:56 [PATCH v3 00/11] media: ov772x: support media controller, device tree probing, etc Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 01/11] media: dt-bindings: ov772x: add device tree binding Akinobu Mita
2018-04-23  9:17   ` Laurent Pinchart
2018-04-23 15:54     ` Akinobu Mita
2018-04-25 16:19       ` Akinobu Mita
2018-04-25 22:40         ` Laurent Pinchart
2018-04-26 16:17           ` Akinobu Mita
2018-04-26 18:11             ` jacopo mondi
2018-04-26 21:34             ` Laurent Pinchart
2018-04-27 17:15               ` Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 02/11] media: ov772x: allow i2c controllers without I2C_FUNC_PROTOCOL_MANGLING Akinobu Mita
2018-04-23  9:18   ` Laurent Pinchart [this message]
2018-04-23 15:55     ` Akinobu Mita
2018-04-23 19:41       ` Laurent Pinchart
2018-04-23 20:11         ` Wolfram Sang
2018-04-23 20:21           ` Laurent Pinchart
2018-04-23 20:36             ` Wolfram Sang
2018-04-23 20:51               ` Laurent Pinchart
2018-04-24 10:04                 ` Sakari Ailus
2018-04-26 12:32                 ` Wolfram Sang
2018-04-22 15:56 ` [PATCH v3 03/11] media: ov772x: add checks for register read errors Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 04/11] media: ov772x: add media controller support Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 05/11] media: ov772x: use generic names for reset and powerdown gpios Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 06/11] media: ov772x: support device tree probing Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 07/11] media: ov772x: handle nested s_power() calls Akinobu Mita
2018-04-23  8:35   ` jacopo mondi
2018-04-27 17:20     ` Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 08/11] media: ov772x: reconstruct s_frame_interval() Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 09/11] media: ov772x: avoid accessing registers under power saving mode Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 10/11] media: ov772x: make set_fmt() return -EBUSY while streaming Akinobu Mita
2018-04-22 15:56 ` [PATCH v3 11/11] media: ov772x: create subdevice device node Akinobu Mita

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=4036479.nT1QDtF4Ij@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=akinobu.mita@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=hans.verkuil@cisco.com \
    --cc=jacopo+renesas@jmondi.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@s-opensource.com \
    --cc=sakari.ailus@linux.intel.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 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.