diff options
Diffstat (limited to 'drivers/i2c/algos/i2c-algo-bit.c')
| -rw-r--r-- | drivers/i2c/algos/i2c-algo-bit.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/drivers/i2c/algos/i2c-algo-bit.c b/drivers/i2c/algos/i2c-algo-bit.c index e25e13980af..a39e6cff86e 100644 --- a/drivers/i2c/algos/i2c-algo-bit.c +++ b/drivers/i2c/algos/i2c-algo-bit.c @@ -24,7 +24,6 @@  #include <linux/kernel.h>  #include <linux/module.h>  #include <linux/delay.h> -#include <linux/slab.h>  #include <linux/init.h>  #include <linux/errno.h>  #include <linux/sched.h> @@ -522,6 +521,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 +575,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;  } | 
