diff --git a/drivers/i2c/busses/i2c-msm-geni.c b/drivers/i2c/busses/i2c-msm-geni.c index 0fb48f90b612..9c508aa56efe 100644 --- a/drivers/i2c/busses/i2c-msm-geni.c +++ b/drivers/i2c/busses/i2c-msm-geni.c @@ -1235,11 +1235,15 @@ geni_i2c_txn_ret: pm_runtime_mark_last_busy(gi2c->dev); pm_runtime_put_autosuspend(gi2c->dev); } + gi2c->cur = NULL; - gi2c->err = 0; - GENI_SE_DBG(gi2c->ipcl, false, gi2c->dev, - "i2c txn ret:%d\n", ret); - return ret; + GENI_SE_ERR(gi2c->ipcl, true, gi2c->dev, + "i2c txn ret:%d, num:%d, err%:%d\n", ret, num, gi2c->err); + + if (gi2c->err) + return gi2c->err; + else + return ret; } static u32 geni_i2c_func(struct i2c_adapter *adap)