aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/i2c/busses/i2c-omap.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 0b0254312d21..3525c9e62cb0 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -524,6 +524,9 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
524 dev->buf = msg->buf; 524 dev->buf = msg->buf;
525 dev->buf_len = msg->len; 525 dev->buf_len = msg->len;
526 526
527 /* make sure writes to dev->buf_len are ordered */
528 barrier();
529
527 omap_i2c_write_reg(dev, OMAP_I2C_CNT_REG, dev->buf_len); 530 omap_i2c_write_reg(dev, OMAP_I2C_CNT_REG, dev->buf_len);
528 531
529 /* Clear the FIFO Buffers */ 532 /* Clear the FIFO Buffers */
@@ -581,7 +584,6 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
581 */ 584 */
582 timeout = wait_for_completion_timeout(&dev->cmd_complete, 585 timeout = wait_for_completion_timeout(&dev->cmd_complete,
583 OMAP_I2C_TIMEOUT); 586 OMAP_I2C_TIMEOUT);
584 dev->buf_len = 0;
585 if (timeout == 0) { 587 if (timeout == 0) {
586 dev_err(dev->dev, "controller timed out\n"); 588 dev_err(dev->dev, "controller timed out\n");
587 omap_i2c_init(dev); 589 omap_i2c_init(dev);