[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