
This patch add I2C support for Freescale MX53 processor
Signed-off-by: Jason Liu r64343@freescale.com --- drivers/i2c/mxc_i2c.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) mode change 100644 => 100755 drivers/i2c/mxc_i2c.c
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c old mode 100644 new mode 100755 index 8e10fbb..f9f32cc --- a/drivers/i2c/mxc_i2c.c +++ b/drivers/i2c/mxc_i2c.c @@ -24,10 +24,11 @@
#include <common.h>
-#if defined(CONFIG_HARD_I2C) +#if defined(CONFIG_MX53) +#include <asm/arch/clock.h> +#endif
-#include <asm/arch/mx31.h> -#include <asm/arch/mx31-regs.h> +#if defined(CONFIG_HARD_I2C)
#define IADR 0x00 #define IFDR 0x04 @@ -56,8 +57,10 @@ #elif defined (CONFIG_SYS_I2C_MX31_PORT3) #define I2C_BASE 0x43f84000 #define I2C_CLK_OFFSET 30 +#elif defined(CONFIG_SYS_I2C_PORT) +#define I2C_BASE CONFIG_SYS_I2C_PORT #else -#error "define CONFIG_SYS_I2C_MX31_PORTx to use the mx31 I2C driver" +#error "define CONFIG_SYS_I2C_PORT to use the I2C driver" #endif
#ifdef DEBUG @@ -72,11 +75,16 @@ static u16 div[] = { 30, 32, 36, 42, 48, 52, 60, 72, 80, 88, 104, 128, 144,
void i2c_init(int speed, int unused) { - int freq = mx31_get_ipg_clk(); + int freq; int i;
+#ifdef CONFIG_MX31 + freq = mx31_get_ipg_clk(); /* start the required I2C clock */ __REG(CCM_CGR0) = __REG(CCM_CGR0) | (3 << I2C_CLK_OFFSET); +#else + freq = mxc_get_clock(MXC_IPG_PERCLK); +#endif
for (i = 0; i < 0x1f; i++) if (freq / div[i] <= speed)