diff --git a/drivers/i2c/busses/i2c-msm-geni.c b/drivers/i2c/busses/i2c-msm-geni.c index bc99dae5a635..7c5f298db44f 100644 --- a/drivers/i2c/busses/i2c-msm-geni.c +++ b/drivers/i2c/busses/i2c-msm-geni.c @@ -991,8 +991,11 @@ static int geni_i2c_gsi_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], if ((geni_ios & 0x3) != 0x3) { //SCL:b'1, SDA:b'0 GENI_SE_DBG(gi2c->ipcl, true, gi2c->dev, "%s: IO lines not in good state\n", __func__); - gi2c->prev_cancel_pending = true; - goto geni_i2c_gsi_cancel_pending; + /* doing pending cancel only rtl based SE's */ + if (gi2c->is_i2c_rtl_based) { + gi2c->prev_cancel_pending = true; + goto geni_i2c_gsi_cancel_pending; + } } } geni_i2c_err_prep_sg: @@ -1200,8 +1203,11 @@ static int geni_i2c_xfer(struct i2c_adapter *adap, if ((geni_ios & 0x3) != 0x3) { //SCL:b'1, SDA:b'0 GENI_SE_DBG(gi2c->ipcl, true, gi2c->dev, "%s: IO lines not in good state\n", __func__); - gi2c->prev_cancel_pending = true; - goto geni_i2c_txn_ret; + /* doing pending cancel only rtl based SE's */ + if (gi2c->is_i2c_rtl_based) { + gi2c->prev_cancel_pending = true; + goto geni_i2c_txn_ret; + } } }