[U-Boot] [PATCH 1/2 v2] SDHC/MMC: fix the wrong infomation after change SD card

Huang Changming-R66093 r66093 at freescale.com
Wed Jul 11 11:29:19 CEST 2012


Hi, Andy,
There is not any feedback for very long time,
Could it be applied to the u-boot?

Best Regards
Jerry Huang


> -----Original Message-----
> From: Huang Changming-R66093
> Sent: Friday, May 18, 2012 5:57 PM
> To: u-boot at lists.denx.de
> Cc: Huang Changming-R66093; Andy Fleming; Marek Vasut
> Subject: [PATCH 1/2 v2] SDHC/MMC: fix the wrong infomation after change
> SD card
> 
> From: Jerry Huang <Chang-Ming.Huang at freescale.com>
> 
> 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.
> 
> when we use command "mmcinfo" every time, the driver must initialize the
> SD card again, instead of assuming the card has been initialized.
> 
> Therefore remove the detect codes from mmc_init function.
> 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 <Chang-Ming.Huang at freescale.com>
> CC: Andy Fleming <afleming at gmail.com>
> CC: Marek Vasut <marex at denx.de>
> ---
> changes for v2:
> 	- keep the member has_init
> 	- only remove the detect code
> 
>  common/cmd_mmc.c  |    5 ++---
>  drivers/mmc/mmc.c |    3 ---
>  2 files changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index 750509d..e73ce03 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);
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index f92b662..af644bb 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1323,9 +1323,6 @@ int mmc_init(struct mmc *mmc)
>  		return NO_CARD_ERR;
>  	}
> 
> -	if (mmc->has_init)
> -		return 0;
> -
>  	err = mmc->init(mmc);
> 
>  	if (err)
> --
> 1.7.5.4




More information about the U-Boot mailing list