@@ -115,7 +115,8 @@ static int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
mmc = find_mmc_device(curr_device);
if (mmc) {
- mmc_init(mmc);
+ if (mmc_init(mmc))
+ return 1;
print_mmcinfo(mmc);
return 0;
@@ -191,9 +192,10 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
mmc->has_init = 0;
- if (mmc_init(mmc))
+ if (mmc_init(mmc)) {
+ mmc->has_init = 0;
return 1;
- else
+ } else
return 0;
} else if (strncmp(argv[1], "part", 4) == 0) {
block_dev_desc_t *mmc_dev;
Once mmc initialization was faild has_init should be set to 0, prepard for the next initialization to recover from error. Once mmcinfo command failed, error should be report instead of printing incorrect mmc device information. Error log: => mmcinfo Device: FSL_SDHC Manufacturer ID: 0 OEM: 0 Name: Tran Speed: 0 Rd Block Len: 0 MMC version 0.0 High Capacity: No Capacity: 0 Bytes Bus Width: 1-bit => mmcinfo Device: FSL_SDHC Manufacturer ID: 0 OEM: 0 Name: Tran Speed: 0 Rd Block Len: 0 MMC version 0.0 High Capacity: No Capacity: 0 Bytes Bus Width: 1-bit Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com> --- changes for V3: - Remove the error printings. common/cmd_mmc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)