diff options
Diffstat (limited to 'common/cmd_i2c.c')
| -rw-r--r-- | common/cmd_i2c.c | 77 | 
1 files changed, 45 insertions, 32 deletions
| diff --git a/common/cmd_i2c.c b/common/cmd_i2c.c index 7531702bf..11ed511bb 100644 --- a/common/cmd_i2c.c +++ b/common/cmd_i2c.c @@ -1242,46 +1242,59 @@ int do_i2c_bus_speed(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  	return ret;  } -int do_i2c(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +int do_i2c_mm(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  { -	/* Strip off leading 'i2c' command argument */ -	argc--; -	argv++; +	return mod_i2c_mem (cmdtp, 1, flag, argc, argv); +} + +int do_i2c_nm(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +{ +	return mod_i2c_mem (cmdtp, 0, flag, argc, argv); +} +int do_i2c_reset(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +{ +	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); +	return 0; +} + +static cmd_tbl_t cmd_i2c_sub[] = {  #if defined(CONFIG_I2C_MUX) -	if (!strncmp(argv[0], "bu", 2)) -		return do_i2c_add_bus(cmdtp, flag, argc, argv); +	U_BOOT_CMD_MKENT(bus, 1, 1, do_i2c_add_bus, "", ""),  #endif  /* CONFIG_I2C_MUX */ -	if (!strncmp(argv[0], "sp", 2)) -		return do_i2c_bus_speed(cmdtp, flag, argc, argv); +	U_BOOT_CMD_MKENT(crc32, 3, 1, do_i2c_crc, "", ""),  #if defined(CONFIG_I2C_MULTI_BUS) -	if (!strncmp(argv[0], "de", 2)) -		return do_i2c_bus_num(cmdtp, flag, argc, argv); +	U_BOOT_CMD_MKENT(dev, 1, 1, do_i2c_bus_num, "", ""),  #endif  /* CONFIG_I2C_MULTI_BUS */ -	if (!strncmp(argv[0], "md", 2)) -		return do_i2c_md(cmdtp, flag, argc, argv); -	if (!strncmp(argv[0], "mm", 2)) -		return mod_i2c_mem (cmdtp, 1, flag, argc, argv); -	if (!strncmp(argv[0], "mw", 2)) -		return do_i2c_mw(cmdtp, flag, argc, argv); -	if (!strncmp(argv[0], "nm", 2)) -		return mod_i2c_mem (cmdtp, 0, flag, argc, argv); -	if (!strncmp(argv[0], "cr", 2)) -		return do_i2c_crc(cmdtp, flag, argc, argv); -	if (!strncmp(argv[0], "pr", 2)) -		return do_i2c_probe(cmdtp, flag, argc, argv); -	if (!strncmp(argv[0], "re", 2)) { -		i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); -		return 0; -	} -	if (!strncmp(argv[0], "lo", 2)) -		return do_i2c_loop(cmdtp, flag, argc, argv); +	U_BOOT_CMD_MKENT(loop, 3, 1, do_i2c_loop, "", ""), +	U_BOOT_CMD_MKENT(md, 3, 1, do_i2c_md, "", ""), +	U_BOOT_CMD_MKENT(mm, 2, 1, do_i2c_mm, "", ""), +	U_BOOT_CMD_MKENT(mw, 3, 1, do_i2c_mw, "", ""), +	U_BOOT_CMD_MKENT(nm, 2, 1, do_i2c_nm, "", ""), +	U_BOOT_CMD_MKENT(probe, 0, 1, do_i2c_probe, "", ""), +	U_BOOT_CMD_MKENT(reset, 0, 1, do_i2c_reset, "", ""),  #if defined(CONFIG_CMD_SDRAM) -	if (!strncmp(argv[0], "sd", 2)) -		return do_sdram(cmdtp, flag, argc, argv); +	U_BOOT_CMD_MKENT(sdram, 1, 1, do_sdram, "", ""),  #endif -	cmd_usage(cmdtp); -	return 0; +	U_BOOT_CMD_MKENT(speed, 1, 1, do_i2c_bus_speed, "", ""), +}; + +int do_i2c(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +{ +	cmd_tbl_t *c; + +	/* Strip off leading 'i2c' command argument */ +	argc--; +	argv++; + +	c = find_cmd_tbl(argv[0], &cmd_i2c_sub[0], ARRAY_SIZE(cmd_i2c_sub)); + +	if (c) { +		return  c->cmd(cmdtp, flag, argc, argv); +	} else { +		cmd_usage(cmdtp); +		return 1; +	}  }  /***************************************************/ |