diff options
author | Reid Tonking <[email protected]> | 2023-04-26 14:49:56 -0500 |
---|---|---|
committer | Wolfram Sang <[email protected]> | 2023-05-03 17:27:21 +0200 |
commit | c770657bd2611b077ec1e7b1fe6aa92f249399bd (patch) | |
tree | 534535ac7d04ae6e22aa828c7cbfb1f277c5996d | |
parent | 9f855779a3874eee70e9f6be57b5f7774f14e510 (diff) |
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: <[email protected]> # v3.7+
Fixes: 3b2f8f82dad7 ("i2c: omap: switch to threaded IRQ support")
Signed-off-by: Reid Tonking <[email protected]>
Acked-by: Vignesh Raghavendra <[email protected]>
Reviewed-by: Tony Lindgren <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 2 |
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; |