diff options
| author | Patil, Rachna <rachna@ti.com> | 2012-01-22 23:46:23 +0000 | 
|---|---|---|
| committer | Heiko Schocher <hs@denx.de> | 2012-01-23 11:57:31 +0100 | 
| commit | 498cbdfe62a8330f6c89765bdd15e60328a26511 (patch) | |
| tree | 75aba11ac162f8f19009d1bbde35895a665024b4 /drivers/i2c/omap24xx_i2c.c | |
| parent | 2faa76196af4b3e93bcb9e38ed9090cbd3b06db3 (diff) | |
| download | olio-uboot-2014.01-498cbdfe62a8330f6c89765bdd15e60328a26511.tar.xz olio-uboot-2014.01-498cbdfe62a8330f6c89765bdd15e60328a26511.zip | |
ARM: AM33XX: Add AM33XX I2C driver support
1. Compliant with Philips I2C specification version 2.1
2. Supports upto 100Kbps in standard mode
Signed-off-by: Chandan Nath <chandan.nath@ti.com>
Signed-off-by: Patil, Rachna <rachna@ti.com>
Diffstat (limited to 'drivers/i2c/omap24xx_i2c.c')
| -rw-r--r-- | drivers/i2c/omap24xx_i2c.c | 20 | 
1 files changed, 13 insertions, 7 deletions
| diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c index 80932eff8..f06af02ba 100644 --- a/drivers/i2c/omap24xx_i2c.c +++ b/drivers/i2c/omap24xx_i2c.c @@ -147,7 +147,7 @@ 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_OMAP44XX) || defined(CONFIG_AM33XX)  			readb(&i2c_base->data);  #else  			readw(&i2c_base->data); @@ -247,7 +247,8 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)  			switch (alen) {  			case 2:  				/* Send address MSByte */ -#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) +#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ +			defined(CONFIG_AM33XX)  				writew(((addr >> 8) & 0xFF), &i2c_base->data);  				/* Clearing XRDY event */ @@ -264,7 +265,8 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)  				}  #endif  			case 1: -#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) +#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ +			defined(CONFIG_AM33XX)  				/* Send address LSByte */  				writew((addr & 0xFF), &i2c_base->data);  #else @@ -313,7 +315,8 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)  			}  			if (status & I2C_STAT_RRDY) { -#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) +#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ +			defined(CONFIG_AM33XX)  				buffer[i] = readb(&i2c_base->data);  #else  				*((u16 *)&buffer[i]) = @@ -400,7 +403,8 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  	if (!i2c_error) {  		if (status & I2C_STAT_XRDY) {  			switch (alen) { -#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) +#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ +			defined(CONFIG_AM33XX)  			case 2:  				/* send out MSB byte */  				writeb(((addr >> 8) & 0xFF), &i2c_base->data); @@ -420,7 +424,8 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  					break;  				}  			case 1: -#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) +#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ +			defined(CONFIG_AM33XX)  				/* send out MSB byte */  				writeb((addr  & 0xFF), &i2c_base->data);  #else @@ -442,7 +447,8 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  		if (!i2c_error) {  			for (i = ((alen > 1) ? 0 : 1); i < len; i++) {  				if (status & I2C_STAT_XRDY) { -#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) +#if defined(CONFIG_OMAP243X) || defined(CONFIG_OMAP34XX) || \ +				defined(CONFIG_AM33XX)  					writeb((buffer[i] & 0xFF),  						&i2c_base->data);  #else |