diff options
| author | Tom Rini <trini@ti.com> | 2014-06-12 09:02:23 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2014-06-12 09:02:23 -0400 | 
| commit | d8a97f934c64a7ba6f11da5e4cc7f3be57fcb82d (patch) | |
| tree | 2892161319e812828594a2c9b6f93a1c752b212a /common/cmd_mmc.c | |
| parent | 6736ec15c518d013263fa97fc48ca22a50753792 (diff) | |
| parent | 3d6a5a4dfca25a202e356e4d63e89cdc6bd7255a (diff) | |
Merge branch 'master' of git://git.denx.de/u-boot-mmc
Diffstat (limited to 'common/cmd_mmc.c')
| -rw-r--r-- | common/cmd_mmc.c | 51 | 
1 files changed, 23 insertions, 28 deletions
| diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c index eea337506c3..1e40983c757 100644 --- a/common/cmd_mmc.c +++ b/common/cmd_mmc.c @@ -92,7 +92,7 @@ static void print_mmcinfo(struct mmc *mmc)  	printf("Bus Width: %d-bit\n", mmc->bus_width);  } -static struct mmc *init_mmc_device(int dev) +static struct mmc *init_mmc_device(int dev, bool force_init)  {  	struct mmc *mmc;  	mmc = find_mmc_device(dev); @@ -100,6 +100,8 @@ static struct mmc *init_mmc_device(int dev)  		printf("no mmc device at slot %x\n", dev);  		return NULL;  	} +	if (force_init) +		mmc->has_init = 0;  	if (mmc_init(mmc))  		return NULL;  	return mmc; @@ -117,7 +119,7 @@ static int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  		}  	} -	mmc = init_mmc_device(curr_device); +	mmc = init_mmc_device(curr_device, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -247,7 +249,7 @@ static int do_mmcrpmb(cmd_tbl_t *cmdtp, int flag,  	if (flag == CMD_FLAG_REPEAT && !cp->repeatable)  		return CMD_RET_SUCCESS; -	mmc = init_mmc_device(curr_device); +	mmc = init_mmc_device(curr_device, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -292,7 +294,7 @@ static int do_mmc_read(cmd_tbl_t *cmdtp, int flag,  	blk = simple_strtoul(argv[2], NULL, 16);  	cnt = simple_strtoul(argv[3], NULL, 16); -	mmc = init_mmc_device(curr_device); +	mmc = init_mmc_device(curr_device, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -320,7 +322,7 @@ static int do_mmc_write(cmd_tbl_t *cmdtp, int flag,  	blk = simple_strtoul(argv[2], NULL, 16);  	cnt = simple_strtoul(argv[3], NULL, 16); -	mmc = init_mmc_device(curr_device); +	mmc = init_mmc_device(curr_device, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -348,7 +350,7 @@ static int do_mmc_erase(cmd_tbl_t *cmdtp, int flag,  	blk = simple_strtoul(argv[1], NULL, 16);  	cnt = simple_strtoul(argv[2], NULL, 16); -	mmc = init_mmc_device(curr_device); +	mmc = init_mmc_device(curr_device, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -369,16 +371,10 @@ static int do_mmc_rescan(cmd_tbl_t *cmdtp, int flag,  {  	struct mmc *mmc; -	mmc = find_mmc_device(curr_device); -	if (!mmc) { -		printf("no mmc device at slot %x\n", curr_device); +	mmc = init_mmc_device(curr_device, true); +	if (!mmc)  		return CMD_RET_FAILURE; -	} - -	mmc->has_init = 0; -	if (mmc_init(mmc)) -		return CMD_RET_FAILURE;  	return CMD_RET_SUCCESS;  }  static int do_mmc_part(cmd_tbl_t *cmdtp, int flag, @@ -387,7 +383,7 @@ static int do_mmc_part(cmd_tbl_t *cmdtp, int flag,  	block_dev_desc_t *mmc_dev;  	struct mmc *mmc; -	mmc = init_mmc_device(curr_device); +	mmc = init_mmc_device(curr_device, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -403,7 +399,7 @@ static int do_mmc_part(cmd_tbl_t *cmdtp, int flag,  static int do_mmc_dev(cmd_tbl_t *cmdtp, int flag,  		      int argc, char * const argv[])  { -	int dev, part = -1, ret; +	int dev, part = 0, ret;  	struct mmc *mmc;  	if (argc == 1) { @@ -422,17 +418,16 @@ static int do_mmc_dev(cmd_tbl_t *cmdtp, int flag,  		return CMD_RET_USAGE;  	} -	mmc = init_mmc_device(dev); +	mmc = init_mmc_device(dev, true);  	if (!mmc)  		return CMD_RET_FAILURE; -	if (part != -1) { -		ret = mmc_select_hwpart(dev, part); -		printf("switch to partitions #%d, %s\n", -			part, (!ret) ? "OK" : "ERROR"); -		if (ret) -			return 1; -	} +	ret = mmc_select_hwpart(dev, part); +	printf("switch to partitions #%d, %s\n", +	       part, (!ret) ? "OK" : "ERROR"); +	if (ret) +		return 1; +  	curr_device = dev;  	if (mmc->part_config == MMCPART_NOAVAILABLE)  		printf("mmc%d is current device\n", curr_device); @@ -463,7 +458,7 @@ static int do_mmc_bootbus(cmd_tbl_t *cmdtp, int flag,  	reset = simple_strtoul(argv[3], NULL, 10);  	mode = simple_strtoul(argv[4], NULL, 10); -	mmc = init_mmc_device(dev); +	mmc = init_mmc_device(dev, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -488,7 +483,7 @@ static int do_mmc_boot_resize(cmd_tbl_t *cmdtp, int flag,  	bootsize = simple_strtoul(argv[2], NULL, 10);  	rpmbsize = simple_strtoul(argv[3], NULL, 10); -	mmc = init_mmc_device(dev); +	mmc = init_mmc_device(dev, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -521,7 +516,7 @@ static int do_mmc_partconf(cmd_tbl_t *cmdtp, int flag,  	part_num = simple_strtoul(argv[3], NULL, 10);  	access = simple_strtoul(argv[4], NULL, 10); -	mmc = init_mmc_device(dev); +	mmc = init_mmc_device(dev, false);  	if (!mmc)  		return CMD_RET_FAILURE; @@ -556,7 +551,7 @@ static int do_mmc_rst_func(cmd_tbl_t *cmdtp, int flag,  		return CMD_RET_USAGE;  	} -	mmc = init_mmc_device(dev); +	mmc = init_mmc_device(dev, false);  	if (!mmc)  		return CMD_RET_FAILURE; | 
