aboutsummaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorGravatar Reid Tonking <reidt@ti.com> 2023-04-26 14:49:56 -0500
committerGravatar Wolfram Sang <wsa@kernel.org> 2023-05-03 17:27:21 +0200
commitc770657bd2611b077ec1e7b1fe6aa92f249399bd (patch)
tree534535ac7d04ae6e22aa828c7cbfb1f277c5996d /drivers/i2c
parenti2c: tegra: Fix PEC support for SMBUS block read (diff)
downloadlinux-c770657bd2611b077ec1e7b1fe6aa92f249399bd.tar.gz
linux-c770657bd2611b077ec1e7b1fe6aa92f249399bd.tar.bz2
linux-c770657bd2611b077ec1e7b1fe6aa92f249399bd.zip
i2c: omap: Fix standard mode false ACK readings
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>
Diffstat (limited to 'drivers/i2c')
-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 2b4e2be51318..4199f57a6bf2 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1058,7 +1058,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;