i2c: mediatek: Disable i2c start_en and clear intr_stat brfore reset
authorQii Wang <qii.wang@mediatek.com>
Thu, 27 May 2021 12:04:04 +0000 (20:04 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Jun 2021 07:00:38 +0000 (09:00 +0200)
commit87f18aa51e3e32aa77f86e6e30b73d46c792cd59
tree96fc7306c98c67d5de3de3701ec7f295ddb45b0d
parenteff3c5b67fbb99558c3faac4750044a74d5dbdbe
i2c: mediatek: Disable i2c start_en and clear intr_stat brfore reset

commit fed1bd51a504eb96caa38b4f13ab138fc169ea75 upstream.

The i2c controller driver do dma reset after transfer timeout,
but sometimes dma reset will trigger an unexpected DMA_ERR irq.
It will cause the i2c controller to continuously send interrupts
to the system and cause soft lock-up. So we need to disable i2c
start_en and clear intr_stat to stop i2c controller before dma
reset when transfer timeout.

Fixes: aafced673c06("i2c: mediatek: move dma reset before i2c reset")
Signed-off-by: Qii Wang <qii.wang@mediatek.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/i2c/busses/i2c-mt65xx.c