diff options
| author | Vincent Stehlé <v-stehle@ti.com> | 2012-12-03 06:07:21 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-12-11 13:17:31 -0700 | 
| commit | 66839773a82cb56ebeb2b99322151f8a57a30efb (patch) | |
| tree | 91c39de96faba1bf22f7df111081a00b15321369 /drivers | |
| parent | fa5e2845a867a3715240ff221aaec2825b5c73df (diff) | |
| download | olio-uboot-2014.01-66839773a82cb56ebeb2b99322151f8a57a30efb.tar.xz olio-uboot-2014.01-66839773a82cb56ebeb2b99322151f8a57a30efb.zip | |
omap24xx_i2c: Handle OMAP5 like OMAP2,3,4
OMAP5 has 8b i2c data register field, like OMAP2, 3 and 4. Handle in the same
way. This fixes the following error on OMAP5:
  OMAP5430 EVM # mmc rescan
  timed out in wait_for_bb: I2C_STAT=1410
  twl6035: could not turn on LDO9.
Signed-off-by: Vincent Stehlé <v-stehle@ti.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/i2c/omap24xx_i2c.c | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c index 094305fdf..af454f901 100644 --- a/drivers/i2c/omap24xx_i2c.c +++ b/drivers/i2c/omap24xx_i2c.c @@ -179,7 +179,8 @@ static int i2c_read_byte(u8 devaddr, u16 regoffset, u8 alen, u8 *value)  		if (status & I2C_STAT_XRDY) {  			w = tmpbuf[i++];  #if !(defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ -	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX)) +	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) || \ +	defined(CONFIG_OMAP54XX))  			w |= tmpbuf[i++] << 8;  #endif  			writew(w, &i2c_base->data); @@ -209,7 +210,8 @@ static int i2c_read_byte(u8 devaddr, u16 regoffset, u8 alen, u8 *value)  		}  		if (status & I2C_STAT_RRDY) {  #if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ -	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) +	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) || \ +	defined(CONFIG_OMAP54XX)  			*value = readb(&i2c_base->data);  #else  			*value = readw(&i2c_base->data); @@ -239,7 +241,8 @@ static void flush_fifo(void)  		stat = readw(&i2c_base->stat);  		if (stat == I2C_STAT_RRDY) {  #if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ -	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) +	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) || \ +	defined(CONFIG_OMAP54XX)  			readb(&i2c_base->data);  #else  			readw(&i2c_base->data); @@ -289,7 +292,8 @@ int i2c_probe(uchar chip)  		if (status & I2C_STAT_RRDY) {  			res = 0;  #if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ -    defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) +	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) || \ +	defined(CONFIG_OMAP54XX)  			readb(&i2c_base->data);  #else  			readw(&i2c_base->data); @@ -376,7 +380,8 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  		if (status & I2C_STAT_XRDY) {  			w = (i < 0) ? tmpbuf[2+i] : buffer[i];  #if !(defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ -	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX)) +	defined(CONFIG_OMAP44XX) || defined(CONFIG_AM33XX) || \ +	defined(CONFIG_OMAP54XX))  			w |= ((++i < 0) ? tmpbuf[2+i] : buffer[i]) << 8;  #endif  			writew(w, &i2c_base->data); |