|
@@ -847,11 +847,15 @@ complete:
|
|
|
dev_err(dev->dev, "Arbitration lost\n");
|
|
|
err |= OMAP_I2C_STAT_AL;
|
|
|
}
|
|
|
+ /*
|
|
|
+ * ProDB0017052: Clear ARDY bit twice
|
|
|
+ */
|
|
|
if (stat & (OMAP_I2C_STAT_ARDY | OMAP_I2C_STAT_NACK |
|
|
|
OMAP_I2C_STAT_AL)) {
|
|
|
omap_i2c_ack_stat(dev, stat &
|
|
|
(OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR |
|
|
|
- OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR));
|
|
|
+ OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR |
|
|
|
+ OMAP_I2C_STAT_ARDY));
|
|
|
omap_i2c_complete_cmd(dev, err);
|
|
|
return IRQ_HANDLED;
|
|
|
}
|