|
@@ -786,6 +786,7 @@ complete:
|
|
|
dev_err(dev->dev, "Arbitration lost\n");
|
|
|
err |= OMAP_I2C_STAT_AL;
|
|
|
}
|
|
|
+
|
|
|
/*
|
|
|
* ProDB0017052: Clear ARDY bit twice
|
|
|
*/
|
|
@@ -798,6 +799,7 @@ complete:
|
|
|
omap_i2c_complete_cmd(dev, err);
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
|
+
|
|
|
if (stat & (OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR)) {
|
|
|
u8 num_bytes = 1;
|
|
|
|
|
@@ -844,6 +846,7 @@ complete:
|
|
|
stat & (OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR));
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
if (stat & (OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR)) {
|
|
|
u8 num_bytes = 1;
|
|
|
if (dev->fifo_size) {
|
|
@@ -891,10 +894,12 @@ complete:
|
|
|
stat & (OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR));
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
if (stat & OMAP_I2C_STAT_ROVR) {
|
|
|
dev_err(dev->dev, "Receive overrun\n");
|
|
|
dev->cmd_err |= OMAP_I2C_STAT_ROVR;
|
|
|
}
|
|
|
+
|
|
|
if (stat & OMAP_I2C_STAT_XUDF) {
|
|
|
dev_err(dev->dev, "Transmit underflow\n");
|
|
|
dev->cmd_err |= OMAP_I2C_STAT_XUDF;
|