From: Nishanth Menon <nm-l0cyMroinI0@public.gmane.org>
To: "G, Manjunath Kondaiah" <manjugk-l0cyMroinI0@public.gmane.org>
Cc: "ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org"
<ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>,
"linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Kalliguddi, Hema" <hemahk-l0cyMroinI0@public.gmane.org>
Subject: Re: [PATCH] OMAP3: I2C: Errata i207: Clear wrong RDR interrupt
Date: Thu, 1 Apr 2010 08:53:04 -0500 [thread overview]
Message-ID: <4BB4A540.9080000@ti.com> (raw)
In-Reply-To: <1270124427-11208-1-git-send-email-manjugk-l0cyMroinI0@public.gmane.org>
G, Manjunath Kondaiah had written, on 04/01/2010 07:20 AM, the following:
> Under certain rare conditions, I2C_STAT[13].RDR bit may be set
> and the corresponding interrupt fire, even there is no data in
> the receive FIFO, or the I2C data transfer is still ongoing.
> These spurious RDR events must be ignored by the software.
>
> This patch handles and ignores RDR spurious interrupts.
>
> Reviewed-by: Kalliguddi, Hema <hemahk-l0cyMroinI0@public.gmane.org>
> Signed-off-by: Manjunatha GK <manjugk-l0cyMroinI0@public.gmane.org>
> Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org
> Cc: Kalliguddi, Hema <hemahk-l0cyMroinI0@public.gmane.org>
> ---
> drivers/i2c/busses/i2c-omap.c | 13 +++++++++++++
> 1 files changed, 13 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index f2019d2..acf4076 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -796,6 +796,19 @@ complete:
> }
> if (stat & (OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR)) {
> u8 num_bytes = 1;
> +
> + /*
> + * OMAP3 I2C Errata ID: i207
> + * Under certain rare conditions, RDR could be set again
> + * when the bus is busy, then clear and ignore the interrupt
> + */
> + if (!(stat & OMAP_I2C_STAT_RRDY) && (stat &
> + OMAP_I2C_STAT_BB)) {
> + /* clear RDR */
> + omap_i2c_ack_stat(dev, stat & OMAP_I2C_STAT_RDR);
> + dev_err(dev->dev, "I2C: RDR when bus is busy.\n");
> + return IRQ_HANDLED;
> + }
couple of comments after reading thru the errata:
a) the sequence in the errata doc is:
if (stat & OMAP_I2C_STAT_RDR) { /* This is cleaner that using an obtuse
check using !(stat & OMAP_I2C_STAT_RRDY) */
omap_i2c_ack_stat(dev, stat & OMAP_I2C_STAT_RDR); /* dummy read - i
think this needs clarification as to why */
if (omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG) & OMAP_I2C_STAT_BB) /*
reason for the i2c_read_reg is because errata mentions a dummy stat read
which might mean something for BB -> I am not sure may need to be
checked with H/w team. */
continue; /* recheck - faster response compared to return and re
generate interrupt */
}
b) does this apply to OMAP2 and OMAP4?
(unrelated sidenote: my usual crib: we probably need an errata
management system soon considering the erratas that are getting
workedaround in code.. :( )..
> if (dev->fifo_size) {
> if (stat & OMAP_I2C_STAT_RRDY)
> num_bytes = dev->fifo_size;
--
Regards,
Nishanth Menon
next prev parent reply other threads:[~2010-04-01 13:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-01 12:20 [PATCH] OMAP3: I2C: Errata i207: Clear wrong RDR interrupt Manjunatha GK
[not found] ` <1270124427-11208-1-git-send-email-manjugk-l0cyMroinI0@public.gmane.org>
2010-04-01 13:53 ` Nishanth Menon [this message]
[not found] ` <4BB4A540.9080000-l0cyMroinI0@public.gmane.org>
2010-04-05 22:45 ` Ben Dooks
2010-04-21 10:39 ` G, Manjunath Kondaiah
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=4BB4A540.9080000@ti.com \
--to=nm-l0cymroini0@public.gmane.org \
--cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
--cc=hemahk-l0cyMroinI0@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=manjugk-l0cyMroinI0@public.gmane.org \
/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.