summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses/i2c-omap.c
diff options
context:
space:
mode:
authorReid Tonking <reidt@ti.com>2023-04-26 14:49:56 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-05-17 11:13:07 +0200
commitb539fb4eac054a2d0105a6b8edff4ad5ab54312a (patch)
tree44d0d37e3a28306d0a602c82ca2cb1bf9dd3de0f /drivers/i2c/busses/i2c-omap.c
parentdfde805e02a182d8185be465000443a31a16c05a (diff)
downloadlinux-stable-b539fb4eac054a2d0105a6b8edff4ad5ab54312a.tar.gz
linux-stable-b539fb4eac054a2d0105a6b8edff4ad5ab54312a.tar.bz2
linux-stable-b539fb4eac054a2d0105a6b8edff4ad5ab54312a.zip
i2c: omap: Fix standard mode false ACK readings
commit c770657bd2611b077ec1e7b1fe6aa92f249399bd upstream. Using standard mode, rare false ACK responses were appearing with i2cdetect tool. This was happening due to NACK interrupt triggering ISR thread before register access interrupt was ready. Removing the NACK interrupt's ability to trigger ISR thread lets register access ready interrupt do this instead. Cc: <stable@vger.kernel.org> # v3.7+ Fixes: 3b2f8f82dad7 ("i2c: omap: switch to threaded IRQ support") Signed-off-by: Reid Tonking <reidt@ti.com> Acked-by: Vignesh Raghavendra <vigneshr@ti.com> Reviewed-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Wolfram Sang <wsa@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/i2c/busses/i2c-omap.c')
-rw-r--r--drivers/i2c/busses/i2c-omap.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index cd9c65f3d404..11321ad482a3 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1027,7 +1027,7 @@ omap_i2c_isr(int irq, void *dev_id)
u16 stat;
stat = omap_i2c_read_reg(omap, OMAP_I2C_STAT_REG);
- mask = omap_i2c_read_reg(omap, OMAP_I2C_IE_REG);
+ mask = omap_i2c_read_reg(omap, OMAP_I2C_IE_REG) & ~OMAP_I2C_STAT_NACK;
if (stat & mask)
ret = IRQ_WAKE_THREAD;