diff options
| -rw-r--r-- | drivers/i2c/busses/i2c-designware-core.c | 7 |
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 | ||
| 773 | done: | 778 | done: |
