From: Jerry Huang <[email protected]> When first inserting the SD card to slot, the command "mmcinfo" can display the card information correctly. But, then removing the SD card or inserting another SD card to slot, the command "mmcinfo" can't display the information correctly.
Therefore remove this member 'has_init' from 'structure mmc', and add the codes to check the mmc_init, only when mmc_init return the right value, driver will print the information. Below is the error log SD card removed: => mmcinfo MMC: no card present Device: FSL_SDHC Manufacturer ID: 3 OEM: 5344 Name: SD02G Tran Speed: 25000000 Rd Block Len: 512 SD version 2.0 High Capacity: No Capacity: 1.8 GiB Bus Width: 4-bit Signed-off-by: Jerry Huang <[email protected]> CC: Andy Fleming <[email protected]> --- common/cmd_mmc.c | 7 ++----- drivers/mmc/mmc.c | 9 +-------- include/mmc.h | 1 - 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c index 8f13c22..382ea4e 100644 --- a/common/cmd_mmc.c +++ b/common/cmd_mmc.c @@ -131,9 +131,8 @@ 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); - - print_mmcinfo(mmc); + if (!mmc_init(mmc)) + print_mmcinfo(mmc); return 0; } else { printf("no mmc device at slot %x\n", curr_device); @@ -172,8 +171,6 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 1; } - mmc->has_init = 0; - if (mmc_init(mmc)) return 1; else diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 9055b01..ad0ebc3 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -1235,14 +1235,10 @@ int mmc_init(struct mmc *mmc) int err; if (mmc_getcd(mmc) == 0) { - mmc->has_init = 0; printf("MMC: no card present\n"); return NO_CARD_ERR; } - if (mmc->has_init) - return 0; - err = mmc->init(mmc); if (err) @@ -1277,10 +1273,7 @@ int mmc_init(struct mmc *mmc) } err = mmc_startup(mmc); - if (err) - mmc->has_init = 0; - else - mmc->has_init = 1; + return err; } diff --git a/include/mmc.h b/include/mmc.h index 8744604..8e37504 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -277,7 +277,6 @@ struct mmc { void *priv; uint voltages; uint version; - uint has_init; uint f_min; uint f_max; int high_capacity; -- 1.7.5.4 _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

