@ -22,6 +22,8 @@
# include <i2c.h>
# include <watchdog.h>
DECLARE_GLOBAL_DATA_PTR ;
# ifdef I2C_QUIRK_REG
struct mxc_i2c_regs {
uint8_t iadr ;
@ -411,12 +413,6 @@ struct sram_data {
struct i2c_parms i2c_data [ 3 ] ;
} ;
/*
* For SPL boot some boards need i2c before SDRAM is initialized so force
* variables to live in SRAM
*/
static struct sram_data __attribute__ ( ( section ( " .data " ) ) ) srdata ;
static void * const i2c_bases [ ] = {
# if defined(CONFIG_MX25)
( void * ) IMX_I2C_BASE ,
@ -445,9 +441,10 @@ void *i2c_get_base(struct i2c_adapter *adap)
static struct i2c_parms * i2c_get_parms ( void * base )
{
struct sram_data * srdata = ( void * ) gd - > srdata ;
int i = 0 ;
struct i2c_parms * p = srdata . i2c_data ;
while ( i < ARRAY_SIZE ( srdata . i2c_data ) ) {
struct i2c_parms * p = srdata - > i2c_data ;
while ( i < ARRAY_SIZE ( srdata - > i2c_data ) ) {
if ( p - > base = = base )
return p ;
p + + ;
@ -490,8 +487,9 @@ static int mxc_i2c_probe(struct i2c_adapter *adap, uint8_t chip)
void bus_i2c_init ( void * base , int speed , int unused ,
int ( * idle_bus_fn ) ( void * p ) , void * idle_bus_data )
{
struct sram_data * srdata = ( void * ) gd - > srdata ;
int i = 0 ;
struct i2c_parms * p = srdata . i2c_data ;
struct i2c_parms * p = srdata - > i2c_data ;
if ( ! base )
return ;
for ( ; ; ) {
@ -505,7 +503,7 @@ void bus_i2c_init(void *base, int speed, int unused,
}
p + + ;
i + + ;
if ( i > = ARRAY_SIZE ( srdata . i2c_data ) )
if ( i > = ARRAY_SIZE ( srdata - > i2c_data ) )
return ;
}
bus_i2c_set_bus_speed ( base , speed ) ;