Message ID | 1293024212-4858-2-git-send-email-r64343@freescale.com |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
Le 22/12/2010 14:23, Jason Liu a écrit : > This patch add I2C support for Freescale MX53 processor > > Signed-off-by: Jason Liu<r64343@freescale.com> > > --- > Changes for v2: > -address the comments of Heiko, add #if defined(CONFIG_MX31) > to avoid break MX31 build. Move CONFIG_HARD_I2C to the top > of the file and fix the error message from: > #error "define CONFIG_SYS_I2C_PORT to use the I2C driver" > to #error "define CONFIG_SYS_I2C_MXxx_PORTx to use the I2C driver" > --- > drivers/i2c/mxc_i2c.c | 19 +++++++++++++++++-- > 1 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c > old mode 100644 > new mode 100755 > index 8e10fbb..95d27ae > --- a/drivers/i2c/mxc_i2c.c > +++ b/drivers/i2c/mxc_i2c.c > @@ -26,8 +26,14 @@ > > #if defined(CONFIG_HARD_I2C) > > +#ifdef CONFIG_MX31 Can you make this an #if defined() like all others you are adding here? > #include<asm/arch/mx31.h> > #include<asm/arch/mx31-regs.h> > +#endif > + > +#if defined(CONFIG_MX53) > +#include<asm/arch/clock.h> > +#endif > > #define IADR 0x00 > #define IFDR 0x04 > @@ -56,8 +62,12 @@ > #elif defined (CONFIG_SYS_I2C_MX31_PORT3) > #define I2C_BASE 0x43f84000 > #define I2C_CLK_OFFSET 30 > +#elif defined(CONFIG_SYS_I2C_MX53_PORT1) > +#define I2C_BASE I2C1_BASE_ADDR > +#elif defined(CONFIG_SYS_I2C_MX53_PORT2) > +#define I2C_BASE I2C2_BASE_ADDR > #else > -#error "define CONFIG_SYS_I2C_MX31_PORTx to use the mx31 I2C driver" > +#error "define CONFIG_SYS_I2C_MXxx_PORTx to use the I2C driver" > #endif > > #ifdef DEBUG > @@ -72,11 +82,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 Ditto, for the sake of homogeneity. > + 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) Amicalement,
Hi, Albert, 2010/12/23 Albert ARIBAUD <albert.aribaud@free.fr>: > Le 22/12/2010 14:23, Jason Liu a écrit : >> This patch add I2C support for Freescale MX53 processor >> >> Signed-off-by: Jason Liu<r64343@freescale.com> >> >> --- >> Changes for v2: >> -address the comments of Heiko, add #if defined(CONFIG_MX31) >> to avoid break MX31 build. Move CONFIG_HARD_I2C to the top >> of the file and fix the error message from: >> #error "define CONFIG_SYS_I2C_PORT to use the I2C driver" >> to #error "define CONFIG_SYS_I2C_MXxx_PORTx to use the I2C driver" >> --- >> drivers/i2c/mxc_i2c.c | 19 +++++++++++++++++-- >> 1 files changed, 17 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c >> old mode 100644 >> new mode 100755 >> index 8e10fbb..95d27ae >> --- a/drivers/i2c/mxc_i2c.c >> +++ b/drivers/i2c/mxc_i2c.c >> @@ -26,8 +26,14 @@ >> >> #if defined(CONFIG_HARD_I2C) >> >> +#ifdef CONFIG_MX31 > > Can you make this an #if defined() like all others you are adding here? OK, I will do it. Thanks, > >> #include<asm/arch/mx31.h> >> #include<asm/arch/mx31-regs.h> >> +#endif >> + >> +#if defined(CONFIG_MX53) >> +#include<asm/arch/clock.h> >> +#endif >> >> #define IADR 0x00 >> #define IFDR 0x04 >> @@ -56,8 +62,12 @@ >> #elif defined (CONFIG_SYS_I2C_MX31_PORT3) >> #define I2C_BASE 0x43f84000 >> #define I2C_CLK_OFFSET 30 >> +#elif defined(CONFIG_SYS_I2C_MX53_PORT1) >> +#define I2C_BASE I2C1_BASE_ADDR >> +#elif defined(CONFIG_SYS_I2C_MX53_PORT2) >> +#define I2C_BASE I2C2_BASE_ADDR >> #else >> -#error "define CONFIG_SYS_I2C_MX31_PORTx to use the mx31 I2C driver" >> +#error "define CONFIG_SYS_I2C_MXxx_PORTx to use the I2C driver" >> #endif >> >> #ifdef DEBUG >> @@ -72,11 +82,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 > > Ditto, for the sake of homogeneity. > >> + 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) > > > Amicalement, > -- > Albert. > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot >
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c old mode 100644 new mode 100755 index 8e10fbb..95d27ae --- a/drivers/i2c/mxc_i2c.c +++ b/drivers/i2c/mxc_i2c.c @@ -26,8 +26,14 @@ #if defined(CONFIG_HARD_I2C) +#ifdef CONFIG_MX31 #include <asm/arch/mx31.h> #include <asm/arch/mx31-regs.h> +#endif + +#if defined(CONFIG_MX53) +#include <asm/arch/clock.h> +#endif #define IADR 0x00 #define IFDR 0x04 @@ -56,8 +62,12 @@ #elif defined (CONFIG_SYS_I2C_MX31_PORT3) #define I2C_BASE 0x43f84000 #define I2C_CLK_OFFSET 30 +#elif defined(CONFIG_SYS_I2C_MX53_PORT1) +#define I2C_BASE I2C1_BASE_ADDR +#elif defined(CONFIG_SYS_I2C_MX53_PORT2) +#define I2C_BASE I2C2_BASE_ADDR #else -#error "define CONFIG_SYS_I2C_MX31_PORTx to use the mx31 I2C driver" +#error "define CONFIG_SYS_I2C_MXxx_PORTx to use the I2C driver" #endif #ifdef DEBUG @@ -72,11 +82,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)
This patch add I2C support for Freescale MX53 processor Signed-off-by: Jason Liu <r64343@freescale.com> --- Changes for v2: -address the comments of Heiko, add #if defined(CONFIG_MX31) to avoid break MX31 build. Move CONFIG_HARD_I2C to the top of the file and fix the error message from: #error "define CONFIG_SYS_I2C_PORT to use the I2C driver" to #error "define CONFIG_SYS_I2C_MXxx_PORTx to use the I2C driver" --- drivers/i2c/mxc_i2c.c | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-)