linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jean Delvare <khali@linux-fr.org>
To: Felipe Balbi <balbi@ti.com>
Cc: linux-i2c@vger.kernel.org,
	Linux OMAP Mailing List <linux-omap@vger.kernel.org>,
	Tony Lindgren <tony@atomide.com>,
	Benoit Cousson <b-cousson@ti.com>,
	Linux ARM Kernel Mailing List
	<linux-arm-kernel@lists.infradead.org>,
	w.sang@pengutronix.de, ben-linux@fluff.org,
	Shubhrajyoti Datta <shubhrajyoti@ti.com>,
	Santosh Shilimkar <santosh.shilimkar@ti.com>
Subject: Re: [PATCH 7/8] i2c: add 'transferred' field to struct i2c_msg
Date: Thu, 25 Oct 2012 14:57:48 +0200	[thread overview]
Message-ID: <20121025145748.760c218b@endymion.delvare> (raw)
In-Reply-To: <1350899218-13624-8-git-send-email-balbi@ti.com>

Hi Felipe, Shubhrajyoti,

On Mon, 22 Oct 2012 12:46:57 +0300, Felipe Balbi wrote:
> From: Shubhrajyoti D <shubhrajyoti@ti.com>
> 
> In case of a NACK, it's wise to tell our clients
> drivers about how many bytes were actually transferred.
> 
> Support this by adding an extra field to the struct
> i2c_msg which gets incremented the amount of bytes
> actually transferred.
> 
> Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
>  include/uapi/linux/i2c.h | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/include/uapi/linux/i2c.h b/include/uapi/linux/i2c.h
> index 0e949cb..4b35c9b 100644
> --- a/include/uapi/linux/i2c.h
> +++ b/include/uapi/linux/i2c.h
> @@ -77,6 +77,7 @@ struct i2c_msg {
>  #define I2C_M_NO_RD_ACK		0x0800	/* if I2C_FUNC_PROTOCOL_MANGLING */
>  #define I2C_M_RECV_LEN		0x0400	/* length will be first received byte */
>  	__u16 len;		/* msg length				*/
> +	__u16 transferred;	/* actual bytes transferred             */
>  	__u8 *buf;		/* pointer to msg data			*/
>  };

On the principle I am fine with this, however you also need to define
who should initialize this field, and to what value.

Not all i2c bus drivers will implement this functionality at first.
Some may even be unable to ever implement it. As soon as i2c chip
drivers start checking this value, you will hit combinations of chip
driver checking the value and bus driver not setting it. And it has to
work.

We have to decide whether it is enough to initialize "transferred" to
0, or if we need a more reliable way to distinguish between "0 bytes
transferred" and "the bus driver can't tell". What's your take on this?
If we need to distinguish, this could be done using a new I2C_FUNC_*
flag, or by initializing "transferred" to (__u16)(-1) instead of 0 for
example.

Then we have to decide whether initialization is done by the individual
drivers, or by i2c-core. By the drivers might be faster, but this may
also mean more code (and bugs more likely) than letting i2c-core handle
it. The exact balance probably depends on the answer to the previous
question (initializing a field to 0 is free in many cases.)

-- 
Jean Delvare

  reply	other threads:[~2012-10-25 12:57 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-22  9:46 [PATCH 0/8] I2C patches for v3.8 merge window Felipe Balbi
2012-10-22  9:46 ` [PATCH 1/8] i2c: omap: no need to access platform_device Felipe Balbi
2012-10-22  9:46 ` [PATCH 2/8] i2c: omap: reorder exit path of omap_i2c_xfer_msg() Felipe Balbi
2012-10-25 11:40   ` Shubhrajyoti Datta
     [not found]     ` <CAM=Q2cvUeLbS20HScrGTOcraSUrCzhzCi8MQLxd9MOb_7ZFFYA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-25 12:01       ` Felipe Balbi
     [not found] ` <1350899218-13624-1-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-22  9:46   ` [PATCH 3/8] i2c: omap: fix error checking Felipe Balbi
     [not found]     ` <1350899218-13624-4-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-24 14:41       ` Michael Trimarchi
     [not found]         ` <5087FE07.6090504-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
2012-10-25 10:10           ` Felipe Balbi
     [not found]             ` <20121025101010.GC21217-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-10-25 10:33               ` Michael Trimarchi
     [not found]                 ` <5089156E.7020701-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
2012-10-25 10:48                   ` Felipe Balbi
2012-10-22  9:46   ` [PATCH 4/8] i2c: omap: also complete() when stat becomes zero Felipe Balbi
2012-10-22  9:46   ` [PATCH 6/8] i2c: omap: wait for transfer completion before sending STP bit Felipe Balbi
2012-10-22  9:46   ` [PATCH 7/8] i2c: add 'transferred' field to struct i2c_msg Felipe Balbi
2012-10-25 12:57     ` Jean Delvare [this message]
     [not found]       ` <20121025145748.760c218b-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-10-25 13:14         ` Russell King - ARM Linux
2012-10-25 13:42           ` Jean Delvare
     [not found]             ` <20121025154202.41f3cbba-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-10-25 13:46               ` Russell King - ARM Linux
     [not found]                 ` <20121025134609.GH28061-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-10-25 13:56                   ` Jean Delvare
     [not found]                     ` <20121025155633.609c5554-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-10-25 14:18                       ` Russell King - ARM Linux
     [not found]                         ` <20121025141800.GI28061-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-10-27 14:32                           ` Jean Delvare
     [not found]                             ` <20121027163224.67d57aef-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-10-27 16:40                               ` Al Viro
2012-10-27 17:02                                 ` Al Viro
     [not found]                                   ` <20121027170235.GA24388-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
2012-10-27 17:10                                     ` Al Viro
2012-10-27 19:03                                       ` Jean Delvare
2012-10-27 17:25                               ` Russell King - ARM Linux
2012-10-22  9:46   ` [PATCH 8/8] i2c: omap: implement handling for 'transferred' bytes Felipe Balbi
2012-10-22  9:46 ` [PATCH 5/8] i2c: omap: introduce and use OMAP_I2C_IP_VERSION_3 Felipe Balbi
     [not found]   ` <1350899218-13624-6-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-22 12:27     ` Benoit Cousson
2012-10-22 12:28       ` Felipe Balbi
     [not found]         ` <20121022122853.GW14033-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-10-22 13:05           ` Benoit Cousson
     [not found]             ` <50854490.4060306-l0cyMroinI0@public.gmane.org>
2012-10-22 13:09               ` Felipe Balbi
2012-10-22 13:18     ` [PATCH v2 5/8] i2c: omap: in case of VERSION_2 read IRQSTATUS_RAW but write to IRQSTATUS Felipe Balbi
2012-10-22 13:30 ` [PATCH 0/8] I2C patches for v3.8 merge window Felipe Balbi
     [not found]   ` <20121022133023.GC14033-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-10-22 14:06     ` Shubhrajyoti Datta
2012-10-22 14:06       ` Felipe Balbi
2012-10-22 15:02         ` Shubhrajyoti
     [not found]       ` <CAM=Q2ctS3hxngk5efcvScAdv-2GtH2pHRZoxRhRTiOWmQA-AXw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-14 16:58         ` Wolfram Sang
2012-10-25 12:25 ` [PATCH v2 0/7] " Felipe Balbi
     [not found]   ` <1351167915-15079-1-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-25 12:25     ` [PATCH v2 1/7] i2c: omap: no need to access platform_device Felipe Balbi
     [not found]       ` <1351167915-15079-2-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-25 12:41         ` Santosh Shilimkar
2012-10-25 12:25     ` [PATCH v2 2/7] i2c: omap: reorder exit path of omap_i2c_xfer_msg() Felipe Balbi
     [not found]       ` <1351167915-15079-3-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-25 12:42         ` Santosh Shilimkar
     [not found]           ` <50893398.6070004-l0cyMroinI0@public.gmane.org>
2012-10-25 12:40             ` Felipe Balbi
2012-10-25 12:53           ` Lothar Waßmann
2012-10-25 12:25     ` [PATCH v2 3/7] i2c: omap: also complete() when stat becomes zero Felipe Balbi
     [not found]       ` <1351167915-15079-4-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-25 12:43         ` Santosh Shilimkar
     [not found]           ` <508933E4.7070608-l0cyMroinI0@public.gmane.org>
2012-10-25 12:39             ` Felipe Balbi
2012-10-25 12:25     ` [PATCH v2 4/7] i2c: omap: in case of VERSION_2 read IRQSTATUS_RAW but write to IRQSTATUS Felipe Balbi
     [not found]       ` <1351167915-15079-5-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-25 12:53         ` Santosh Shilimkar
     [not found]           ` <50893665.60604-l0cyMroinI0@public.gmane.org>
2012-10-25 12:52             ` Felipe Balbi
2012-10-25 13:06               ` Santosh Shilimkar
2012-10-25 12:25     ` [PATCH v2 5/7] i2c: omap: wait for transfer completion before sending STP bit Felipe Balbi
2012-10-25 12:32       ` Felipe Balbi
2012-10-25 12:34       ` [PATCH v3 " Felipe Balbi
     [not found]       ` <1351167915-15079-6-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-25 13:01         ` [PATCH v2 " Santosh Shilimkar
2012-10-25 14:15           ` Felipe Balbi
2012-10-25 12:25     ` [PATCH v2 7/7] i2c: omap: implement handling for 'transferred' bytes Felipe Balbi
     [not found]       ` <1351167915-15079-8-git-send-email-balbi-l0cyMroinI0@public.gmane.org>
2012-10-27 18:55         ` Paul Walmsley
2012-11-05  8:10     ` [PATCH v2 0/7] I2C patches for v3.8 merge window Felipe Balbi
2012-10-25 12:25   ` [PATCH v2 6/7] i2c: add 'transferred' field to struct i2c_msg Felipe Balbi

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=20121025145748.760c218b@endymion.delvare \
    --to=khali@linux-fr.org \
    --cc=b-cousson@ti.com \
    --cc=balbi@ti.com \
    --cc=ben-linux@fluff.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=santosh.shilimkar@ti.com \
    --cc=shubhrajyoti@ti.com \
    --cc=tony@atomide.com \
    --cc=w.sang@pengutronix.de \
    /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).