diff options
Diffstat (limited to 'board/keymile/common/common.c')
| -rw-r--r-- | board/keymile/common/common.c | 71 | 
1 files changed, 6 insertions, 65 deletions
diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c index 612dd2a05..f26230648 100644 --- a/board/keymile/common/common.c +++ b/board/keymile/common/common.c @@ -39,7 +39,10 @@  #include <i2c.h>  #endif +#if !defined(CONFIG_MPC83xx)  static void i2c_write_start_seq(void); +#endif +  DECLARE_GLOBAL_DATA_PTR;  /* @@ -89,9 +92,7 @@ int set_km_env(void)  	return 0;  } -#define DELAY_ABORT_SEQ		62  /* @200kHz 9 clocks = 44us, 62us is ok */ -#define DELAY_HALF_PERIOD	(500 / (CONFIG_SYS_I2C_SPEED / 1000)) - +#if defined(CONFIG_SYS_I2C_INIT_BOARD)  #if !defined(CONFIG_MPC83xx)  static void i2c_write_start_seq(void)  { @@ -171,68 +172,6 @@ int i2c_make_abort(void)  #endif  	return ret;  } -#endif /* !MPC83xx */ - -#if defined(CONFIG_MPC83xx) -static void i2c_write_start_seq(void) -{ -	struct fsl_i2c *dev; -	dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET); -	udelay(DELAY_ABORT_SEQ); -	out_8(&dev->cr, (I2C_CR_MEN | I2C_CR_MSTA)); -	udelay(DELAY_ABORT_SEQ); -	out_8(&dev->cr, (I2C_CR_MEN)); -} - -int i2c_make_abort(void) -{ -	struct fsl_i2c *dev; -	dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET); -	uchar	dummy; -	uchar   last; -	int     nbr_read = 0; -	int     i = 0; -	int	    ret = 0; - -	/* wait after each operation to finsh with a delay */ -	out_8(&dev->cr, (I2C_CR_MSTA)); -	udelay(DELAY_ABORT_SEQ); -	out_8(&dev->cr, (I2C_CR_MEN | I2C_CR_MSTA)); -	udelay(DELAY_ABORT_SEQ); -	dummy = in_8(&dev->dr); -	udelay(DELAY_ABORT_SEQ); -	last = in_8(&dev->dr); -	nbr_read++; - -	/* -	 * do read until the last bit is 1, but stop if the full eeprom is -	 * read. -	 */ -	while (((last & 0x01) != 0x01) && -		(nbr_read < CONFIG_SYS_IVM_EEPROM_MAX_LEN)) { -		udelay(DELAY_ABORT_SEQ); -		last = in_8(&dev->dr); -		nbr_read++; -	} -	if ((last & 0x01) != 0x01) -		ret = -2; -	if ((last != 0xff) || (nbr_read > 1)) -		printf("[INFO] i2c abort after %d bytes (0x%02x)\n", -			nbr_read, last); -	udelay(DELAY_ABORT_SEQ); -	out_8(&dev->cr, (I2C_CR_MEN)); -	udelay(DELAY_ABORT_SEQ); -	/* clear status reg */ -	out_8(&dev->sr, 0); - -	for (i = 0; i < 5; i++) -		i2c_write_start_seq(); -	if (ret != 0) -		printf("[ERROR] i2c abort failed after %d bytes (0x%02x)\n", -			nbr_read, last); - -	return ret; -}  #endif  /** @@ -244,6 +183,8 @@ void i2c_init_board(void)  	/* Now run the AbortSequence() */  	i2c_make_abort();  } +#endif +  #if !defined(MACH_TYPE_KM_KIRKWOOD)  int ethernet_present(void)  |