Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b288a01 authored by Jean Delvare's avatar Jean Delvare Committed by Greg Kroah-Hartman
Browse files

i2c-algo-bit: Cleanups



i2c-algo-bit: Cleanups

* Uninline long functions (saves around 1 kB or 15%)
* Refactor code in sclhi()
* Drop redundant udelay on repeated start

Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 82026326
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -76,17 +76,15 @@ static inline void scllo(struct i2c_algo_bit_data *adap)
 * Raise scl line, and do checking for delays. This is necessary for slower
 * devices.
 */
static inline int sclhi(struct i2c_algo_bit_data *adap)
static int sclhi(struct i2c_algo_bit_data *adap)
{
	unsigned long start;

	setscl(adap,1);

	/* Not all adapters have scl sense line... */
	if (adap->getscl == NULL ) {
		udelay(adap->udelay);
		return 0;
	}
	if (!adap->getscl)
		goto done;

	start=jiffies;
	while (! getscl(adap) ) {	
@@ -101,6 +99,8 @@ static inline int sclhi(struct i2c_algo_bit_data *adap)
		cond_resched();
	}
	DEBSTAT(printk(KERN_DEBUG "needed %ld jiffies\n", jiffies-start));

done:
	udelay(adap->udelay);
	return 0;
} 
@@ -121,7 +121,6 @@ static void i2c_repstart(struct i2c_algo_bit_data *adap)
	DEBPROTO(printk(" Sr "));
	setsda(adap,1);
	sclhi(adap);
	udelay(adap->udelay);
	
	sdalo(adap);
	scllo(adap);
@@ -306,7 +305,7 @@ static int test_bus(struct i2c_algo_bit_data *adap, char* name) {
 * 0 chip did not answer
 * -x transmission error
 */
static inline int try_address(struct i2c_adapter *i2c_adap,
static int try_address(struct i2c_adapter *i2c_adap,
		       unsigned char addr, int retries)
{
	struct i2c_algo_bit_data *adap = i2c_adap->algo_data;
@@ -358,7 +357,7 @@ static int sendbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
	return wrcount;
}

static inline int readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
static int readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
{
	int inval;
	int rdcount=0;   	/* counts bytes read */
@@ -408,7 +407,7 @@ static inline int readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
 * -x an error occurred (like: -EREMOTEIO if the device did not answer, or
 *	-ETIMEDOUT, for example if the lines are stuck...) 
 */
static inline int bit_doAddress(struct i2c_adapter *i2c_adap, struct i2c_msg *msg) 
static int bit_doAddress(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
{
	unsigned short flags = msg->flags;
	unsigned short nak_ok = msg->flags & I2C_M_IGNORE_NAK;