aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/i2c/busses/i2c-designware-core.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c
index 11e866d05368..066a2ba6aeda 100644
--- a/drivers/i2c/busses/i2c-designware-core.c
+++ b/drivers/i2c/busses/i2c-designware-core.c
@@ -758,7 +758,7 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
758 } 758 }
759 759
760 /* no error */ 760 /* no error */
761 if (likely(!dev->cmd_err)) { 761 if (likely(!dev->cmd_err && !dev->status)) {
762 ret = num; 762 ret = num;
763 goto done; 763 goto done;
764 } 764 }
@@ -768,6 +768,11 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
768 ret = i2c_dw_handle_tx_abort(dev); 768 ret = i2c_dw_handle_tx_abort(dev);
769 goto done; 769 goto done;
770 } 770 }
771
772 if (dev->status)
773 dev_err(dev->dev,
774 "transfer terminated early - interrupt latency too high?\n");
775
771 ret = -EIO; 776 ret = -EIO;
772 777
773done: 778done: