From 133495af9de797670a89c99f14e476c2ff4f3470 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Sat, 16 Nov 2019 11:32:57 -0800 Subject: [PATCH] UPSTREAM: rockchip: i2c: don't sent stop bit after each message That's not correct and it breaks SMBUS-style reads and and writes for some chips (e.g. SYR82X/SYR83X). Stop bit should be sent only after the last message. Change-Id: I5ded4a43ed726b7cffa35d020ef763471bd01b41 Signed-off-by: Vasily Khoruzhick Reviewed-by: Kever Yang Signed-off-by: Wyon Bi (cherry picked from commit c9fca5ec8849b8fa16b16cece091645e7d3aa02b) --- drivers/i2c/rk_i2c.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/rk_i2c.c b/drivers/i2c/rk_i2c.c index f9d71fc1f1..612c007271 100644 --- a/drivers/i2c/rk_i2c.c +++ b/drivers/i2c/rk_i2c.c @@ -244,7 +244,6 @@ static int rk_i2c_read(struct rk_i2c *i2c, uchar chip, uint reg, uint r_len, } i2c_exit: - rk_i2c_send_stop_bit(i2c); rk_i2c_disable(i2c); return err; @@ -323,7 +322,6 @@ static int rk_i2c_write(struct rk_i2c *i2c, uchar chip, uint reg, uint r_len, } i2c_exit: - rk_i2c_send_stop_bit(i2c); rk_i2c_disable(i2c); return err; @@ -351,6 +349,9 @@ static int rockchip_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, } } + rk_i2c_send_stop_bit(i2c); + rk_i2c_disable(i2c); + return 0; }