FAILED: patch "[PATCH] i2c: mediatek: Disable i2c start_en and clear intr_stat" failed to apply to 5.4-stable tree
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From fed1bd51a504eb96caa38b4f13ab138fc169ea75 Mon Sep 17 00:00:00 2001
From: Qii Wang <[email protected]>
Date: Thu, 27 May 2021 20:04:04 +0800
Subject: [PATCH] i2c: mediatek: Disable i2c start_en and clear intr_stat
brfore reset
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.
drivers/i2c/busses/i2c-mt65xx.c +5 -0
@@ -479,6 +479,11 @@ static void mtk_i2c_clock_disable(struct mtk_i2c *i2c)static void mtk_i2c_init_hw (struct mtk_i2c *i2c) {u16 control_reg; +u16 intr_stat_reg; + +mtk_i2c_writew (i2c,I2C_CHN_CLR_FLAG ,OFFSET_START ); + intr_stat_reg =mtk_i2c_readw (i2c,OFFSET_INTR_STAT ); +mtk_i2c_writew (i2c, intr_stat_reg,OFFSET_INTR_STAT );if (i2c->dev_comp->apdma_sync) {writel (I2C_DMA_WARM_RST , i2c->pdmabase +OFFSET_RST );