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 point out instead of print
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.zh...@freescale.com>
---
Changes for V2:
        - Update the print content

 common/cmd_mmc.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index c124df0..90edb64 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -115,8 +115,10 @@ 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)) {
+                       puts("Got MMC device infor error\n");
+                       return 1;
+               }
                print_mmcinfo(mmc);
                return 0;
        } else {
@@ -191,9 +193,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;
-- 
1.8.4


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to