diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-03-13 20:56:56 +0100 |
---|---|---|
committer | Jean Delvare <khali@linux-fr.org> | 2010-03-13 20:56:56 +0100 |
commit | 0a9c14751377a1407f5e35791e13651d2fc7801c (patch) | |
tree | e4e524eafda521834d3d2a7fa8a6118e1bae3c32 /drivers | |
parent | d07b56b3098b9f32ae6dedeacbc594bd01dcfcd1 (diff) | |
download | op-kernel-dev-0a9c14751377a1407f5e35791e13651d2fc7801c.zip op-kernel-dev-0a9c14751377a1407f5e35791e13651d2fc7801c.tar.gz |
i2c-algo-bit: Add pre- and post-xfer hooks
Drivers might have to do random things before and/or after I2C
transfers. Add hooks to the i2c-algo-bit implementation to let them do
so.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Alex Deucher <alexdeucher@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/i2c/algos/i2c-algo-bit.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/i2c/algos/i2c-algo-bit.c b/drivers/i2c/algos/i2c-algo-bit.c index e25e139..e8d568c 100644 --- a/drivers/i2c/algos/i2c-algo-bit.c +++ b/drivers/i2c/algos/i2c-algo-bit.c @@ -522,6 +522,12 @@ static int bit_xfer(struct i2c_adapter *i2c_adap, int i, ret; unsigned short nak_ok; + if (adap->pre_xfer) { + ret = adap->pre_xfer(i2c_adap); + if (ret < 0) + return ret; + } + bit_dbg(3, &i2c_adap->dev, "emitting start condition\n"); i2c_start(adap); for (i = 0; i < num; i++) { @@ -570,6 +576,9 @@ static int bit_xfer(struct i2c_adapter *i2c_adap, bailout: bit_dbg(3, &i2c_adap->dev, "emitting stop condition\n"); i2c_stop(adap); + + if (adap->post_xfer) + adap->post_xfer(i2c_adap); return ret; } |