diff options
author | Ben Dooks <ben-linux@fluff.org> | 2011-01-12 23:24:36 +0100 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2011-01-12 23:24:36 +0100 |
commit | 7f42f9fef7bbc4f3250a33bf58170c640cd3db18 (patch) | |
tree | 1414676d0fa9a4d51bfb95bbb758f6141657f907 | |
parent | Merge branch 'for-2638/i2c/mv64xx' into for-linus/i2c-2638 (diff) | |
parent | i2c-omap: Set latency requirements only once for several messages (diff) | |
download | linux-7f42f9fef7bbc4f3250a33bf58170c640cd3db18.tar.xz linux-7f42f9fef7bbc4f3250a33bf58170c640cd3db18.zip |
Merge branch 'for-2638/i2c/omap' into for-linus/i2c-2638
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 9d090833e245..b605ff3a1fa0 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -598,12 +598,8 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap, * REVISIT: We should abort the transfer on signals, but the bus goes * into arbitration and we're currently unable to recover from it. */ - if (dev->set_mpu_wkup_lat != NULL) - dev->set_mpu_wkup_lat(dev->dev, dev->latency); r = wait_for_completion_timeout(&dev->cmd_complete, OMAP_I2C_TIMEOUT); - if (dev->set_mpu_wkup_lat != NULL) - dev->set_mpu_wkup_lat(dev->dev, -1); dev->buf_len = 0; if (r < 0) return r; @@ -654,12 +650,18 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) if (r < 0) goto out; + if (dev->set_mpu_wkup_lat != NULL) + dev->set_mpu_wkup_lat(dev->dev, dev->latency); + for (i = 0; i < num; i++) { r = omap_i2c_xfer_msg(adap, &msgs[i], (i == (num - 1))); if (r != 0) break; } + if (dev->set_mpu_wkup_lat != NULL) + dev->set_mpu_wkup_lat(dev->dev, -1); + if (r == 0) r = num; |