|
@@ -703,13 +703,15 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
/* We have an error */
|
|
/* We have an error */
|
|
- if (dev->cmd_err & (OMAP_I2C_STAT_AL | OMAP_I2C_STAT_ROVR |
|
|
|
|
- OMAP_I2C_STAT_XUDF)) {
|
|
|
|
|
|
+ if (dev->cmd_err & (OMAP_I2C_STAT_ROVR | OMAP_I2C_STAT_XUDF)) {
|
|
omap_i2c_reset(dev);
|
|
omap_i2c_reset(dev);
|
|
__omap_i2c_init(dev);
|
|
__omap_i2c_init(dev);
|
|
return -EIO;
|
|
return -EIO;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (dev->cmd_err & OMAP_I2C_STAT_AL)
|
|
|
|
+ return -EAGAIN;
|
|
|
|
+
|
|
if (dev->cmd_err & OMAP_I2C_STAT_NACK) {
|
|
if (dev->cmd_err & OMAP_I2C_STAT_NACK) {
|
|
if (msg->flags & I2C_M_IGNORE_NAK)
|
|
if (msg->flags & I2C_M_IGNORE_NAK)
|
|
return 0;
|
|
return 0;
|