On 14:26 Mon 21 Jul , Timur Tabi wrote: > Prevent i2c_init() in fsl_i2c.c from writing to the data segment before > relocation. Commit d8c82db4 added the ability for i2c_init() to program the > I2C bus speed and save the value in i2c_bus_speed[], which is a global > variable. It is an error to write to the data segment before relocation, > which is what i2c_init() does when it stores the bus speed in i2c_bus_speed[]. > > Signed-off-by: Timur Tabi <[EMAIL PROTECTED]> > --- > > Wolfgang, please apply this directly to fix the I2C bug we've been talking > about. > > drivers/i2c/fsl_i2c.c | 9 +++++++-- > 1 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c > index 9f2c1ec..9d5df8a 100644 > --- a/drivers/i2c/fsl_i2c.c > +++ b/drivers/i2c/fsl_i2c.c > @@ -143,12 +143,15 @@ void > i2c_init(int speed, int slaveadd) > { > struct fsl_i2c *dev; > + unsigned int temp; > > dev = (struct fsl_i2c *) (CFG_IMMR + CFG_I2C_OFFSET); > > writeb(0, &dev->cr); /* stop I2C controller */ > udelay(5); /* let it shutdown in peace */ > - i2c_bus_speed[0] = set_i2c_bus_speed(dev, gd->i2c1_clk, speed); > + temp = set_i2c_bus_speed(dev, gd->i2c1_clk, speed); > + if (gd->flags & GD_FLG_RELOC) Maybe a macro will more clear like if(is_relacated()) i2c_bus_speed[0] = temp;
Best Regards, J. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users