From 7ef28ab639fc3d71d45d7331fb84802c31fa976a Mon Sep 17 00:00:00 2001 From: David Wu Date: Mon, 9 Nov 2020 15:52:21 +0800 Subject: [PATCH] i2c: rockchip: Clean ipd status if i2c transfer error If there was an i2c transfer error like iomux error, should clean the ipd status, it might cause kernel i2c irq error handing. [ 0.690749] rk3x-i2c fdd40000.i2c: irq in STATE_IDLE, ipd = 0x10 Change-Id: Ia127edada535288e9b984d6dc0dff813e6152eff Signed-off-by: David Wu --- drivers/i2c/rk_i2c.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/i2c/rk_i2c.c b/drivers/i2c/rk_i2c.c index 612c007271..1631bd1340 100644 --- a/drivers/i2c/rk_i2c.c +++ b/drivers/i2c/rk_i2c.c @@ -148,6 +148,8 @@ static int rk_i2c_send_stop_bit(struct rk_i2c *i2c) static inline void rk_i2c_disable(struct rk_i2c *i2c) { + writel(0, &i2c->regs->ien); + writel(I2C_IPD_ALL_CLEAN, &i2c->regs->ipd); writel(0, &i2c->regs->con); }