i2c-davinci: Fix lost interrupt

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 <troy.kisky@boundarydevices.com>
Acked-by: Dirk Behme <dirk.behme@gmail.com>
Signed-off-by: Kevin Hilman <khilman@mvista.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>

authored by Troy Kisky and committed by Jean Delvare b73a9aec 852fb2ac

+6 -11
+6 -11
drivers/i2c/busses/i2c-davinci.c
··· 382 break; 383 384 case DAVINCI_I2C_IVR_ARDY: 385 - w = davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG); 386 - MOD_REG_BIT(w, DAVINCI_I2C_STR_ARDY, 1); 387 - davinci_i2c_write_reg(dev, DAVINCI_I2C_STR_REG, w); 388 complete(&dev->cmd_complete); 389 break; 390 ··· 396 if (dev->buf_len) 397 continue; 398 399 - w = davinci_i2c_read_reg(dev, 400 - DAVINCI_I2C_STR_REG); 401 - MOD_REG_BIT(w, DAVINCI_I2C_IMR_RRDY, 0); 402 davinci_i2c_write_reg(dev, 403 - DAVINCI_I2C_STR_REG, 404 - w); 405 } else 406 dev_err(dev->dev, "RDR IRQ while no " 407 "data requested\n"); ··· 424 break; 425 426 case DAVINCI_I2C_IVR_SCD: 427 - w = davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG); 428 - MOD_REG_BIT(w, DAVINCI_I2C_STR_SCD, 1); 429 - davinci_i2c_write_reg(dev, DAVINCI_I2C_STR_REG, w); 430 complete(&dev->cmd_complete); 431 break; 432
··· 382 break; 383 384 case DAVINCI_I2C_IVR_ARDY: 385 + davinci_i2c_write_reg(dev, 386 + DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_ARDY); 387 complete(&dev->cmd_complete); 388 break; 389 ··· 397 if (dev->buf_len) 398 continue; 399 400 davinci_i2c_write_reg(dev, 401 + DAVINCI_I2C_STR_REG, 402 + DAVINCI_I2C_IMR_RRDY); 403 } else 404 dev_err(dev->dev, "RDR IRQ while no " 405 "data requested\n"); ··· 428 break; 429 430 case DAVINCI_I2C_IVR_SCD: 431 + davinci_i2c_write_reg(dev, 432 + DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_SCD); 433 complete(&dev->cmd_complete); 434 break; 435