diff options
| author | Heiko Schocher <hs@denx.de> | 2012-10-25 10:32:14 +0200 | 
|---|---|---|
| committer | Heiko Schocher <hs@denx.de> | 2013-07-23 08:34:53 +0200 | 
| commit | 9a2accb44f871af9c87c34d1c9ac95010f4e6f09 (patch) | |
| tree | f4fdbb502b7cd8572f848e20db5321bc2f07d30d /common/cmd_i2c.c | |
| parent | 00f792e0df9ae942427e44595a0f4379582accee (diff) | |
| download | olio-uboot-2014.01-9a2accb44f871af9c87c34d1c9ac95010f4e6f09.tar.xz olio-uboot-2014.01-9a2accb44f871af9c87c34d1c9ac95010f4e6f09.zip | |
i2c, multibus: get rid of CONFIG_I2C_MUX
CONFIG_I2C_MUX is replaced through the new i2c multibus/multiadapter
framework, configured through CONFIG_SYS_I2C. As CONFIG_I2C_MUX
is only used on the keymile boards, and they are now completely
moved to the new framework, remove CONFIG_I2C_MUX.
Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Holger Brunck <holger.brunck@keymile.com>
Tested-By: Holger Brunck <holger.brunck@keymile.com>
Diffstat (limited to 'common/cmd_i2c.c')
| -rw-r--r-- | common/cmd_i2c.c | 234 | 
1 files changed, 3 insertions, 231 deletions
| diff --git a/common/cmd_i2c.c b/common/cmd_i2c.c index 5614a6d06..5c60d313d 100644 --- a/common/cmd_i2c.c +++ b/common/cmd_i2c.c @@ -110,8 +110,7 @@ static uint	i2c_mm_last_alen;   * pairs.  The following macros take care of this */  #if defined(CONFIG_SYS_I2C_NOPROBES) -#if defined(CONFIG_SYS_I2C) || defined(CONFIG_I2C_MUX) || \ -	defined(CONFIG_I2C_MULTI_BUS) +#if defined(CONFIG_SYS_I2C) || defined(CONFIG_I2C_MULTI_BUS)  static struct  {  	uchar	bus; @@ -132,11 +131,6 @@ static uchar i2c_no_probes[] = CONFIG_SYS_I2C_NOPROBES;  #define NUM_ELEMENTS_NOPROBE (sizeof(i2c_no_probes)/sizeof(i2c_no_probes[0]))  #endif -#if defined(CONFIG_I2C_MUX) -static I2C_MUX_DEVICE	*i2c_mux_devices = NULL; -static	int	i2c_mux_busid = CONFIG_SYS_MAX_I2C_BUS; -#endif -  #define DISP_LINE_LEN	16  /** @@ -1554,7 +1548,7 @@ static int do_i2c_reset(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv  static cmd_tbl_t cmd_i2c_sub[] = {  #if defined(CONFIG_SYS_I2C)  	U_BOOT_CMD_MKENT(bus, 1, 1, do_i2c_show_bus, "", ""), -#endif  /* CONFIG_I2C_MUX */ +#endif  	U_BOOT_CMD_MKENT(crc32, 3, 1, do_i2c_crc, "", ""),  #if defined(CONFIG_SYS_I2C) || \  	defined(CONFIG_I2C_MULTI_BUS) @@ -1618,7 +1612,7 @@ static int do_i2c(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])  static char i2c_help_text[] =  #if defined(CONFIG_SYS_I2C)  	"bus [muxtype:muxaddr:muxchannel] - show I2C bus info\n" -#endif  /* CONFIG_I2C_MUX */ +#endif  	"crc32 chip address[.0, .1, .2] count - compute CRC32 checksum\n"  #if defined(CONFIG_SYS_I2C) || \  	defined(CONFIG_I2C_MULTI_BUS) @@ -1647,225 +1641,3 @@ U_BOOT_CMD(  	"I2C sub-system",  	i2c_help_text  ); - -#if defined(CONFIG_I2C_MUX) -static int i2c_mux_add_device(I2C_MUX_DEVICE *dev) -{ -	I2C_MUX_DEVICE	*devtmp = i2c_mux_devices; - -	if (i2c_mux_devices == NULL) { -		i2c_mux_devices = dev; -		return 0; -	} -	while (devtmp->next != NULL) -		devtmp = devtmp->next; - -	devtmp->next = dev; -	return 0; -} - -I2C_MUX_DEVICE	*i2c_mux_search_device(int id) -{ -	I2C_MUX_DEVICE	*device = i2c_mux_devices; - -	while (device != NULL) { -		if (device->busid == id) -			return device; -		device = device->next; -	} -	return NULL; -} - -/* searches in the buf from *pos the next ':'. - * returns: - *     0 if found (with *pos = where) - *   < 0 if an error occured - *   > 0 if the end of buf is reached - */ -static int i2c_mux_search_next (int *pos, uchar	*buf, int len) -{ -	while ((buf[*pos] != ':') && (*pos < len)) { -		*pos += 1; -	} -	if (*pos >= len) -		return 1; -	if (buf[*pos] != ':') -		return -1; -	return 0; -} - -static int i2c_mux_get_busid (void) -{ -	int	tmp = i2c_mux_busid; - -	i2c_mux_busid ++; -	return tmp; -} - -/* Analyses a Muxstring and immediately sends the -   commands to the muxes. Runs from flash. - */ -int i2c_mux_ident_muxstring_f (uchar *buf) -{ -	int	pos = 0; -	int	oldpos; -	int	ret = 0; -	int	len = strlen((char *)buf); -	int	chip; -	uchar	channel; -	int	was = 0; - -	while (ret == 0) { -		oldpos = pos; -		/* search name */ -		ret = i2c_mux_search_next(&pos, buf, len); -		if (ret != 0) -			printf ("ERROR\n"); -		/* search address */ -		pos ++; -		oldpos = pos; -		ret = i2c_mux_search_next(&pos, buf, len); -		if (ret != 0) -			printf ("ERROR\n"); -		buf[pos] = 0; -		chip = simple_strtoul((char *)&buf[oldpos], NULL, 16); -		buf[pos] = ':'; -		/* search channel */ -		pos ++; -		oldpos = pos; -		ret = i2c_mux_search_next(&pos, buf, len); -		if (ret < 0) -			printf ("ERROR\n"); -		was = 0; -		if (buf[pos] != 0) { -			buf[pos] = 0; -			was = 1; -		} -		channel = simple_strtoul((char *)&buf[oldpos], NULL, 16); -		if (was) -			buf[pos] = ':'; -		if (i2c_write(chip, 0, 0, &channel, 1) != 0) { -			printf ("Error setting Mux: chip:%x channel: \ -				%x\n", chip, channel); -			return -1; -		} -		pos ++; -		oldpos = pos; - -	} -	i2c_init_board(); - -	return 0; -} - -/* Analyses a Muxstring and if this String is correct - * adds a new I2C Bus. - */ -I2C_MUX_DEVICE *i2c_mux_ident_muxstring (uchar *buf) -{ -	I2C_MUX_DEVICE	*device; -	I2C_MUX		*mux; -	int	pos = 0; -	int	oldpos; -	int	ret = 0; -	int	len = strlen((char *)buf); -	int	was = 0; - -	device = (I2C_MUX_DEVICE *)malloc (sizeof(I2C_MUX_DEVICE)); -	device->mux = NULL; -	device->busid = i2c_mux_get_busid (); -	device->next = NULL; -	while (ret == 0) { -		mux = (I2C_MUX *)malloc (sizeof(I2C_MUX)); -		mux->next = NULL; -		/* search name of mux */ -		oldpos = pos; -		ret = i2c_mux_search_next(&pos, buf, len); -		if (ret != 0) -			printf ("%s no name.\n", __FUNCTION__); -		mux->name = (char *)malloc (pos - oldpos + 1); -		memcpy (mux->name, &buf[oldpos], pos - oldpos); -		mux->name[pos - oldpos] = 0; -		/* search address */ -		pos ++; -		oldpos = pos; -		ret = i2c_mux_search_next(&pos, buf, len); -		if (ret != 0) -			printf ("%s no mux address.\n", __FUNCTION__); -		buf[pos] = 0; -		mux->chip = simple_strtoul((char *)&buf[oldpos], NULL, 16); -		buf[pos] = ':'; -		/* search channel */ -		pos ++; -		oldpos = pos; -		ret = i2c_mux_search_next(&pos, buf, len); -		if (ret < 0) -			printf ("%s no mux channel.\n", __FUNCTION__); -		was = 0; -		if (buf[pos] != 0) { -			buf[pos] = 0; -			was = 1; -		} -		mux->channel = simple_strtoul((char *)&buf[oldpos], NULL, 16); -		if (was) -			buf[pos] = ':'; -		if (device->mux == NULL) -			device->mux = mux; -		else { -			I2C_MUX		*muxtmp = device->mux; -			while (muxtmp->next != NULL) { -				muxtmp = muxtmp->next; -			} -			muxtmp->next = mux; -		} -		pos ++; -		oldpos = pos; -	} -	if (ret > 0) { -		/* Add Device */ -		i2c_mux_add_device (device); -		return device; -	} - -	return NULL; -} - -int i2x_mux_select_mux(int bus) -{ -	I2C_MUX_DEVICE  *dev; -	I2C_MUX		*mux; - -	if ((gd->flags & GD_FLG_RELOC) != GD_FLG_RELOC) { -		/* select Default Mux Bus */ -#if defined(CONFIG_SYS_I2C_IVM_BUS) -		i2c_mux_ident_muxstring_f ((uchar *)CONFIG_SYS_I2C_IVM_BUS); -#else -		{ -		unsigned char *buf; -		buf = (unsigned char *) getenv("EEprom_ivm"); -		if (buf != NULL) -			i2c_mux_ident_muxstring_f (buf); -		} -#endif -		return 0; -	} -	dev = i2c_mux_search_device(bus); -	if (dev == NULL) -		return -1; - -	mux = dev->mux; -	while (mux != NULL) { -		/* do deblocking on each level of mux, before mux config */ -		i2c_init_board(); -		if (i2c_write(mux->chip, 0, 0, &mux->channel, 1) != 0) { -			printf ("Error setting Mux: chip:%x channel: \ -				%x\n", mux->chip, mux->channel); -			return -1; -		} -		mux = mux->next; -	} -	/* do deblocking on each level of mux and after mux config */ -	i2c_init_board(); -	return 0; -} -#endif /* CONFIG_I2C_MUX */ |