DAVINCI_I2C_STR_REG is a write 1 to clear register,
so don't use a read/modify/write cycle.

Signed-off-by: Troy Kisky <[EMAIL PROTECTED]>
Acked-by: Dirk Behme <[EMAIL PROTECTED]>
Signed-off-by: Kevin Hilman <[EMAIL PROTECTED]>
---
 drivers/i2c/busses/i2c-davinci.c |   17 ++++++-----------
 1 files changed, 6 insertions(+), 11 deletions(-)
 mode change 100644 => 100755 drivers/i2c/busses/i2c-davinci.c

diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
old mode 100644
new mode 100755
index cce5a61..fde2634
--- a/drivers/i2c/busses/i2c-davinci.c
+++ b/drivers/i2c/busses/i2c-davinci.c
@@ -382,9 +382,8 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void 
*dev_id)
                        break;
 
                case DAVINCI_I2C_IVR_ARDY:
-                       w = davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG);
-                       MOD_REG_BIT(w, DAVINCI_I2C_STR_ARDY, 1);
-                       davinci_i2c_write_reg(dev, DAVINCI_I2C_STR_REG, w);
+                       davinci_i2c_write_reg(dev,
+                               DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_ARDY);
                        complete(&dev->cmd_complete);
                        break;
 
@@ -397,12 +396,9 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void 
*dev_id)
                                if (dev->buf_len)
                                        continue;
 
-                               w = davinci_i2c_read_reg(dev,
-                                                        DAVINCI_I2C_STR_REG);
-                               MOD_REG_BIT(w, DAVINCI_I2C_IMR_RRDY, 0);
                                davinci_i2c_write_reg(dev,
-                                                     DAVINCI_I2C_STR_REG,
-                                                     w);
+                                       DAVINCI_I2C_STR_REG,
+                                       DAVINCI_I2C_IMR_RRDY);
                        } else
                                dev_err(dev->dev, "RDR IRQ while no "
                                        "data requested\n");
@@ -428,9 +424,8 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void 
*dev_id)
                        break;
 
                case DAVINCI_I2C_IVR_SCD:
-                       w = davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG);
-                       MOD_REG_BIT(w, DAVINCI_I2C_STR_SCD, 1);
-                       davinci_i2c_write_reg(dev, DAVINCI_I2C_STR_REG, w);
+                       davinci_i2c_write_reg(dev,
+                               DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_SCD);
                        complete(&dev->cmd_complete);
                        break;
 
-- 
1.5.4


_______________________________________________
i2c mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/i2c

Reply via email to