diff options
| author | Stefan Roese <sr@denx.de> | 2008-08-06 14:05:38 +0200 | 
|---|---|---|
| committer | Stefan Roese <sr@denx.de> | 2008-08-06 14:05:38 +0200 | 
| commit | f2302d4430e7f3f48308d6a585320fe96af8afbd (patch) | |
| tree | eec529fa883a32b0bd44f65aa46a454dc5c69688 /drivers/i2c | |
| parent | 9246f5ecfd353ae297a02ffd5328402acf16c9dd (diff) | |
| download | olio-uboot-2014.01-f2302d4430e7f3f48308d6a585320fe96af8afbd.tar.xz olio-uboot-2014.01-f2302d4430e7f3f48308d6a585320fe96af8afbd.zip | |
Fix merge problems
Signed-off-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'drivers/i2c')
| -rw-r--r-- | drivers/i2c/fsl_i2c.c | 18 | 
1 files changed, 11 insertions, 7 deletions
| diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c index 9f2c1eced..3f78e2f5c 100644 --- a/drivers/i2c/fsl_i2c.c +++ b/drivers/i2c/fsl_i2c.c @@ -143,12 +143,15 @@ void  i2c_init(int speed, int slaveadd)  {  	struct fsl_i2c *dev; +	unsigned int temp;  	dev = (struct fsl_i2c *) (CFG_IMMR + CFG_I2C_OFFSET);  	writeb(0, &dev->cr);			/* stop I2C controller */  	udelay(5);				/* let it shutdown in peace */ -	i2c_bus_speed[0] = set_i2c_bus_speed(dev, gd->i2c1_clk, speed); +	temp = set_i2c_bus_speed(dev, gd->i2c1_clk, speed); +	if (gd->flags & GD_FLG_RELOC) +		i2c_bus_speed[0] = temp;  	writeb(slaveadd << 1, &dev->adr);	/* write slave address */  	writeb(0x0, &dev->sr);			/* clear status register */  	writeb(I2C_CR_MEN, &dev->cr);		/* start I2C controller */ @@ -158,7 +161,9 @@ i2c_init(int speed, int slaveadd)  	writeb(0, &dev->cr);			/* stop I2C controller */  	udelay(5);				/* let it shutdown in peace */ -	i2c_bus_speed[1] = set_i2c_bus_speed(dev, gd->i2c2_clk, speed); +	temp = set_i2c_bus_speed(dev, gd->i2c2_clk, speed); +	if (gd->flags & GD_FLG_RELOC) +		i2c_bus_speed[1] = temp;  	writeb(slaveadd << 1, &dev->adr);	/* write slave address */  	writeb(0x0, &dev->sr);			/* clear status register */  	writeb(I2C_CR_MEN, &dev->cr);		/* start I2C controller */ @@ -168,12 +173,11 @@ i2c_init(int speed, int slaveadd)  static __inline__ int  i2c_wait4bus(void)  { -	ulong timeval = get_timer(0); +	unsigned long long timeval = get_ticks();  	while (readb(&i2c_dev[i2c_bus_num]->sr) & I2C_SR_MBB) { -		if (get_timer(timeval) > I2C_TIMEOUT) { +		if ((get_ticks() - timeval) > usec2ticks(I2C_TIMEOUT))  			return -1; -		}  	}  	return 0; @@ -183,7 +187,7 @@ static __inline__ int  i2c_wait(int write)  {  	u32 csr; -	ulong timeval = get_timer(0); +	unsigned long long timeval = get_ticks();  	do {  		csr = readb(&i2c_dev[i2c_bus_num]->sr); @@ -208,7 +212,7 @@ i2c_wait(int write)  		}  		return 0; -	} while (get_timer (timeval) < I2C_TIMEOUT); +	} while ((get_ticks() - timeval) < usec2ticks(I2C_TIMEOUT));  	debug("i2c_wait: timed out\n");  	return -1; |