On Tue, May 17, 2022 at 06:11:39PM +0800, Tyrone Ting wrote: > From: Tali Perry > > On some platforms in rare cases (1 to 100,000 transactions), > the i2c gets a spurious interrupt which means that we enter an interrupt > but in the interrupt handler we don't find any status bit that points to > the reason we got this interrupt. > > This may be a case of a rare HW issue or signal integrity issue that is > still under investigation. > > In order to overcome this we are doing the following: > 1. Disable incoming interrupts in master mode only when slave mode is not > enabled. > 2. Clear end of busy (EOB) after every interrupt. > 3. Clear other status bits (just in case since we found them cleared) > 4. Return correct status during the interrupt that will finish the > transaction. > > On next xmit transaction if the bus is still busy the master will issue a > recovery process before issuing the new transaction. > > Fixes: 56a1485b102e ("i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver") > Signed-off-by: Tali Perry > Signed-off-by: Tyrone Ting Applied to for-next, thanks!