From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Sun, 10 May 2009 10:37:07 +0200 Subject: [U-Boot] [PATCH 22/29] cpu/mpc512x/i2c.c: use immr offsets from C struct instead of #define In-Reply-To: <1241898668-11903-23-git-send-email-wd@denx.de> References: <1241898668-11903-1-git-send-email-wd@denx.de> <1241898668-11903-23-git-send-email-wd@denx.de> Message-ID: <4A069233.2080101@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Wolfgang, Wolfgang Denk wrote: > Signed-off-by: Wolfgang Denk > Cc: John Rigby > --- > cpu/mpc512x/i2c.c | 33 ++++++++++++++++++++------------- > 1 files changed, 20 insertions(+), 13 deletions(-) > > diff --git a/cpu/mpc512x/i2c.c b/cpu/mpc512x/i2c.c > index 812f24a..e9bb3e7 100644 > --- a/cpu/mpc512x/i2c.c > +++ b/cpu/mpc512x/i2c.c > @@ -31,8 +31,6 @@ DECLARE_GLOBAL_DATA_PTR; > > #include > > -#define immr ((immap_t *)CONFIG_SYS_IMMR) > - > /* by default set I2C bus 0 active */ > static unsigned int bus_num = 0; If no other bus then the first needed, when running from Flash, its okay for me. > @@ -77,7 +75,8 @@ static void mpc_reg_out (volatile u32 *reg, int val, int mask) > > static int wait_for_bb (void) > { > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > int timeout = I2C_TIMEOUT; > int status; > > @@ -100,7 +99,8 @@ static int wait_for_bb (void) > > static int wait_for_pin (int *status) > { > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > int timeout = I2C_TIMEOUT; > > *status = mpc_reg_in (®s->msr); > @@ -121,7 +121,8 @@ static int wait_for_pin (int *status) > > static int do_address (uchar chip, char rdwr_flag) > { > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > int status; > > chip <<= 1; > @@ -146,7 +147,8 @@ static int do_address (uchar chip, char rdwr_flag) > > static int send_bytes (uchar chip, char *buf, int len) > { > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > int wrcount; > int status; > > @@ -169,7 +171,8 @@ static int send_bytes (uchar chip, char *buf, int len) > > static int receive_bytes (uchar chip, char *buf, int len) > { > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > int dummy = 1; > int rdcount = 0; > int status; > @@ -207,9 +210,10 @@ static int receive_bytes (uchar chip, char *buf, int len) > > void i2c_init (int speed, int saddr) > { > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > int i; > for(i = 0; i < I2C_BUS_CNT; i++){ > - i2c512x_dev_t *regs = &immr->i2c.dev[i]; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[i]; > mpc_reg_out (®s->mcr, 0, 0); > > /* Set clock */ > @@ -222,9 +226,9 @@ void i2c_init (int speed, int saddr) > } > > /* Disable interrupts */ > - immr->i2c.icr = 0; > + im->i2c.icr = 0; shouldn;t we use in/out accessors for this? > /* Turn off filters */ > - immr->i2c.mifr = 0; > + im->i2c.mifr = 0; here too (and so on) ... > return; > } > > @@ -280,7 +284,8 @@ static int mpc_get_fdr (int speed) > > int i2c_probe (uchar chip) > { > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > int i; > > for (i = 0; i < I2C_RETRIES; i++) { > @@ -301,8 +306,9 @@ int i2c_probe (uchar chip) > > int i2c_read (uchar chip, uint addr, int alen, uchar *buf, int len) > { > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > char xaddr[4]; > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > int ret = -1; > > xaddr[0] = (addr >> 24) & 0xFF; > @@ -345,8 +351,9 @@ Done: > > int i2c_write (uchar chip, uint addr, int alen, uchar *buf, int len) > { > + volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR; > + volatile i2c512x_dev_t *regs = &im->i2c.dev[bus_num]; > char xaddr[4]; > - i2c512x_dev_t *regs = &immr->i2c.dev[bus_num]; > int ret = -1; > > xaddr[0] = (addr >> 24) & 0xFF; bye Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany