summaryrefslogtreecommitdiff
path: root/drivers/i2c/busses/i2c-omap.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 10:40:57 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 10:40:57 -0800
commitfe3c560b8a22cb28e54fe8950abef38e88d75831 (patch)
tree88db8742152559e1840832970066816e72a9009b /drivers/i2c/busses/i2c-omap.c
parentd20056032e20061db6583f517a4d3ea4492a94f1 (diff)
parentdad92924ea4c9167e64a2835ec9310c73570b10b (diff)
Merge branch 'for-linus/i2c-2638' of git://git.fluff.org/bjdooks/linux
* 'for-linus/i2c-2638' of git://git.fluff.org/bjdooks/linux: i2c-bfin-twi: move setup to the earlier subsys initcall i2c-bfin-twi: handle faulty slave devices better i2c-mv64xxx: send repeated START between messages in xfer i2c-nomadik: fix regression on adapter name i2c-omap: Set latency requirements only once for several messages i2c-eg20t: add driver for Intel EG20T i2c-ocores: add some device tree documentation i2c-ocores: Use devres for resource allocation i2c-ocores: Adapt for device tree i2c-iop3xx: add iomem annotation
Diffstat (limited to 'drivers/i2c/busses/i2c-omap.c')
-rw-r--r--drivers/i2c/busses/i2c-omap.c10
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;