|
@@ -496,13 +496,18 @@ static int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev)
|
|
|
unsigned long abort_source = dev->abort_source;
|
|
|
int i;
|
|
|
|
|
|
+ if (abort_source & DW_IC_TX_ABRT_NOACK) {
|
|
|
+ for_each_bit(i, &abort_source, ARRAY_SIZE(abort_sources))
|
|
|
+ dev_dbg(dev->dev,
|
|
|
+ "%s: %s\n", __func__, abort_sources[i]);
|
|
|
+ return -EREMOTEIO;
|
|
|
+ }
|
|
|
+
|
|
|
for_each_bit(i, &abort_source, ARRAY_SIZE(abort_sources))
|
|
|
dev_err(dev->dev, "%s: %s\n", __func__, abort_sources[i]);
|
|
|
|
|
|
if (abort_source & DW_IC_TX_ARB_LOST)
|
|
|
return -EAGAIN;
|
|
|
- else if (abort_source & DW_IC_TX_ABRT_NOACK)
|
|
|
- return -EREMOTEIO;
|
|
|
else if (abort_source & DW_IC_TX_ABRT_GCALL_READ)
|
|
|
return -EINVAL; /* wrong msgs[] data */
|
|
|
else
|