[PATCH 11/17] mci: handle SD cards < 2.0 correctly

Juergen Beisert jbe at pengutronix.de
Mon Oct 11 08:48:43 EDT 2010


Sascha Hauer wrote:
> With SD cards older than 2.0 the sd_send_if_cond() fails. Do
> not assume it's an MMC card in this case. Instead, assume
> it's a MMC card if sd_send_op_cond() fails.
>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
>  drivers/mci/mci-core.c |   24 +++++++-----------------
>  1 files changed, 7 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
> index a6c81b8..57b82bf 100644
> --- a/drivers/mci/mci-core.c
> +++ b/drivers/mci/mci-core.c
> @@ -1148,26 +1148,16 @@ static int mci_card_probe(struct device_d *mci_dev)
>
>  	/* Check if this card can handle the "SD Card Physical Layer
> Specification 2.0" */ rc = sd_send_if_cond(mci_dev);
> -	if (rc) {
> +	rc = sd_send_op_cond(mci_dev);
> +	if (rc && rc == -ETIMEDOUT) {
>  		/* If the command timed out, we check for an MMC card */
> -		if (rc == -ETIMEDOUT) {
> -			pr_debug("Card seems to be a MultiMediaCard\n");
> -			rc = mmc_send_op_cond(mci_dev);
> -			if (rc) {
> -				pr_err("MultiMediaCard voltage select failed with %d\n", rc);
> -				goto on_error;
> -			}
> -		} else
> -			goto on_error;
> -	} else {
> -		/* Its a 2.xx card. Setup operation conditions */
> -		rc = sd_send_op_cond(mci_dev);
> -		if (rc) {
> -			pr_debug("Cannot setup SD card's operation condition\n");
> -			goto on_error;
> -		}
> +		pr_debug("Card seems to be a MultiMediaCard\n");
> +		rc = mmc_send_op_cond(mci_dev);
>  	}
>
> +	if (rc)
> +		goto on_error;
> +
>  	rc = mci_startup(mci_dev);
>  	if (rc) {
>  		printf("Card's startup fails with %d\n", rc);

Tested-by: Juergen Beisert <jbe at pengutronix.de>

@Marek: You need this patch to make your SD card work on the mini2440.

jbe

-- 
Pengutronix e.K.                              | Juergen Beisert             |
Linux Solutions for Science and Industry      | Phone: +49-8766-939 228     |
Vertretung Sued/Muenchen, Germany             | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686              | http://www.pengutronix.de/  |



More information about the barebox mailing list