From: Felipe Balbi <balbi@ti.com>
To: Alexander Kochetkov <al.kochet@gmail.com>
Cc: linux-omap@vger.kernel.org, linux-i2c@vger.kernel.org,
linux-kernel@vger.kernel.org, Wolfram Sang <wsa@the-dreams.de>,
Tony Lindgren <tony@atomide.com>, Felipe Balbi <balbi@ti.com>,
Aaro Koskinen <aaro.koskinen@iki.fi>
Subject: Re: [PATCH] i2c: omap: fix i207 errata handling
Date: Fri, 21 Nov 2014 10:08:28 -0600 [thread overview]
Message-ID: <20141121160828.GP7508@saruman> (raw)
In-Reply-To: <1416529011-21803-1-git-send-email-al.kochet@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1861 bytes --]
On Fri, Nov 21, 2014 at 04:16:51AM +0400, Alexander Kochetkov wrote:
> commit 6d9939f651419a63e091105663821f9c7d3fec37 (i2c: omap: split out [XR]DR
> and [XR]RDY) changed the way how errata i207 (I2C: RDR Flag May Be Incorrectly
> Set) get handled. 6d9939f6514 code doesn't correspond to workaround provided by
> errata.
>
> According to errata ISR must filter out spurious RDR before data read not after.
> ISR must read RXSTAT to get number of bytes available to read. Because RDR
> could be set while there could no data in the receive FIFO.
>
> Restored pre 6d9939f6514 way of handling errata.
>
> Found by code review. Real impact haven't seen.
> Tested on Beagleboard XM C.
>
> Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
> Fixes: 6d9939f651419a63e09110 i2c: omap: split out [XR]DR and [XR]RDY
Tested on BBB and AM437x Starter Kit
Tested-by: Felipe Balbi <balbi@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/i2c/busses/i2c-omap.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index 90dcc2e..e7cbcb0 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -958,11 +958,13 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
> if (dev->fifo_size)
> num_bytes = dev->buf_len;
>
> - omap_i2c_receive_data(dev, num_bytes, true);
> -
> - if (dev->errata & I2C_OMAP_ERRATA_I207)
> + if (dev->errata & I2C_OMAP_ERRATA_I207) {
> i2c_omap_errata_i207(dev, stat);
> + num_bytes = (omap_i2c_read_reg(dev,
> + OMAP_I2C_BUFSTAT_REG) >> 8) & 0x3F;
> + }
>
> + omap_i2c_receive_data(dev, num_bytes, true);
> omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RDR);
> continue;
> }
> --
> 1.7.9.5
>
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Felipe Balbi <balbi@ti.com>
To: Alexander Kochetkov <al.kochet@gmail.com>
Cc: <linux-omap@vger.kernel.org>, <linux-i2c@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, Wolfram Sang <wsa@the-dreams.de>,
"Tony Lindgren" <tony@atomide.com>, Felipe Balbi <balbi@ti.com>,
Aaro Koskinen <aaro.koskinen@iki.fi>
Subject: Re: [PATCH] i2c: omap: fix i207 errata handling
Date: Fri, 21 Nov 2014 10:08:28 -0600 [thread overview]
Message-ID: <20141121160828.GP7508@saruman> (raw)
In-Reply-To: <1416529011-21803-1-git-send-email-al.kochet@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1861 bytes --]
On Fri, Nov 21, 2014 at 04:16:51AM +0400, Alexander Kochetkov wrote:
> commit 6d9939f651419a63e091105663821f9c7d3fec37 (i2c: omap: split out [XR]DR
> and [XR]RDY) changed the way how errata i207 (I2C: RDR Flag May Be Incorrectly
> Set) get handled. 6d9939f6514 code doesn't correspond to workaround provided by
> errata.
>
> According to errata ISR must filter out spurious RDR before data read not after.
> ISR must read RXSTAT to get number of bytes available to read. Because RDR
> could be set while there could no data in the receive FIFO.
>
> Restored pre 6d9939f6514 way of handling errata.
>
> Found by code review. Real impact haven't seen.
> Tested on Beagleboard XM C.
>
> Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
> Fixes: 6d9939f651419a63e09110 i2c: omap: split out [XR]DR and [XR]RDY
Tested on BBB and AM437x Starter Kit
Tested-by: Felipe Balbi <balbi@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/i2c/busses/i2c-omap.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index 90dcc2e..e7cbcb0 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -958,11 +958,13 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
> if (dev->fifo_size)
> num_bytes = dev->buf_len;
>
> - omap_i2c_receive_data(dev, num_bytes, true);
> -
> - if (dev->errata & I2C_OMAP_ERRATA_I207)
> + if (dev->errata & I2C_OMAP_ERRATA_I207) {
> i2c_omap_errata_i207(dev, stat);
> + num_bytes = (omap_i2c_read_reg(dev,
> + OMAP_I2C_BUFSTAT_REG) >> 8) & 0x3F;
> + }
>
> + omap_i2c_receive_data(dev, num_bytes, true);
> omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RDR);
> continue;
> }
> --
> 1.7.9.5
>
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2014-11-21 16:08 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-21 0:16 [PATCH] i2c: omap: fix i207 errata handling Alexander Kochetkov
2014-11-21 0:16 ` Alexander Kochetkov
2014-11-21 0:29 ` Alexander Kochetkov
[not found] ` <089B5BDA-682D-46B6-869F-A6ADDFE691C3-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-21 23:16 ` Alexander Kochetkov
2014-11-21 23:16 ` Alexander Kochetkov
2014-11-21 16:08 ` Felipe Balbi [this message]
2014-11-21 16:08 ` Felipe Balbi
2014-11-21 23:02 ` Alexander Kochetkov
[not found] ` <B174E67D-9CCF-48B6-A5E5-911668161823-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-22 21:13 ` Wolfram Sang
2014-11-22 21:13 ` Wolfram Sang
2014-11-22 21:08 ` Wolfram Sang
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=20141121160828.GP7508@saruman \
--to=balbi@ti.com \
--cc=aaro.koskinen@iki.fi \
--cc=al.kochet@gmail.com \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=tony@atomide.com \
--cc=wsa@the-dreams.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 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.