> Assuming this is really correct (I haven't tested), you need to add: To help understanding logic, I'd like to provide event traces (with the patch applied): See i2c-omap.c dc418f6e6a8f5021ccf9e9c0957eefae3737168d as a reference. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/i2c/busses/i2c-omap.c?id=dc418f6e6a8f5021ccf9e9c0957eefae3737168d Typical event sequence for Arbitration Lost case looks like: addr: 0x0058, len: 4, flags: 0x1, stop: 1 omap_i2c_xfer_msg:564 (STAT=0x0140; IE=0x601f; CON=0x8200) omap_i2c_xfer_msg:565 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, w); omap_i2c_xfer_msg:566 (STAT=0x0140; IE=0x601f; CON=0x8403) omap_i2c_isr:886 (STAT=0x1141; IE=0x601f; CON=0x8000) omap_i2c_isr_thread:906 (STAT=0x1141; IE=0x601f; CON=0x8000) IRQ (ISR = 0x0001) Arbitration lost Typical event sequence for NACK case looks like: addr: 0x0068, len: 4, flags: 0x1, stop: 1 omap_i2c_xfer_msg:564 (STAT=0x0040; IE=0x601f; CON=0x8000) omap_i2c_xfer_msg:566 (STAT=0x0040; IE=0x601f; CON=0x8403) omap_i2c_isr:886 (STAT=0x0146; IE=0x601f; CON=0x8000) omap_i2c_isr_thread:906 (STAT=0x0146; IE=0x601f; CON=0x8000) IRQ (ISR = 0x0006) NACK IRQ (ISR = 0x0004) ARDY omap_i2c_isr_thread:1030 (STAT=0x0140; IE=0x601f; CON=0x8000) > > Fixes: 1d7afc9 i2c: omap: ack IRQ in parts > Cc: <stable@xxxxxxxxxxxxxxx> # v3.7+ > > here and resend, so it gets backported to older kernels. > I'll resend. Thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html