Re: [PATCH] i2c-omap: Double clear of ARDY status in IRQ handler
From: Kevin Hilman <hidden>
Date: 2011-02-15 00:05:00
Also in:
linux-omap
Keerthy [off-list ref] writes:
From: Richard woodruff <redacted> ProDB00017052 - ARDY interrupt reasserted after being cleared.
This errata caused intermittent i2c instabilty(1 error per 3 hours) on several customer platforms. After applying the workaround the intermittent errors were not seen. This is not captured in the usual errata documents.
This (presumably internal) ProDB number above is meaningless in the public changelog. In lieu of a public erratum number, just summarize the erratum/instability seen, references to other relevant public errata (if any) would be useful too. IOW, "instability" isn't quite accurate enough. A more detailed description of the problem/instability is needed. Thanks, Kevin
quoted hunk
The workaround is to have a double clear of ARDY status in irq handler. Signed-off-by: Richard woodruff <redacted> Signed-off-by: Keerthy <redacted> --- drivers/i2c/busses/i2c-omap.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 445de08..9bcefae 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c@@ -851,7 +851,8 @@ complete: OMAP_I2C_STAT_AL)) { omap_i2c_ack_stat(dev, stat & (OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR | - OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR)); + OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR | + OMAP_I2C_STAT_ARDY)); omap_i2c_complete_cmd(dev, err); return IRQ_HANDLED; }