i2c-omap: ACK pending [R/X]DR and [R/X]RDY interrupts
authorMoiz Sonasath <m-sonasath@ti.com>
Thu, 20 Aug 2009 16:21:15 +0000 (11:21 -0500)
committerBen Dooks <ben-linux@fluff.org>
Thu, 20 Aug 2009 21:27:57 +0000 (22:27 +0100)
ACK any pending read/write interrupts before exiting the ISR either after
completing the operation [ARDY interrupt] or in case of an error
[NACK|AL interrupt]

Signed-off-by: Moiz Sonasath <m-sonasath@ti.com>
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
drivers/i2c/busses/i2c-omap.c

index 94639d0aabd58b936a1406dfabc47213dc43e6c7..16b39f470a7ccc5311567e205f2d55a46923c89f 100644 (file)
@@ -694,6 +694,9 @@ complete:
                }
                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_complete_cmd(dev, err);
                        return IRQ_HANDLED;
                }