imx7: mmc_select_hs200 failed, error -74

Fabio Estevam festevam at gmail.com
Tue May 16 08:37:08 PDT 2017


On Tue, May 16, 2017 at 10:58 AM, Fabio Estevam <festevam at gmail.com> wrote:
> Hi,
>
> On a imx7s-warp board (sdhci-esdhc-imx.c driver) running 4.12-rc1 the
> following mmc1 error message is seen:
>
> [    1.796192] mmc1: mmc_select_hs200 failed, error -74
> [    1.810220] mmc1: new MMC card at address 0001
> [    1.823066] mmcblk1: mmc1:0001 V10008 7.05 GiB
> [    1.834155] mmcblk1boot0: mmc1:0001 V10008 partition 1 4.00 MiB
> [    1.841608] mmcblk1boot1: mmc1:0001 V10008 partition 2 4.00 MiB
> [    1.848971] mmcblk1rpmb: mmc1:0001 V10008 partition 3 4.00 MiB
> [    1.859576]  mmcblk1: p1 p2
>
> The rootfs can be mounted correctly from eMMC though.
>
> What is the proper way to fix the 'mmc_select_hs200 failed' error message?

with the following changes:

--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1454,7 +1454,7 @@ static int mmc_select_hs200(struct mmc_card *card)
                if (mmc_set_signal_voltage(host, old_signal_voltage))
                        err = -EIO;

-               pr_err("%s: %s failed, error %d\n", mmc_hostname(card->host),
+               pr_debug("%s: %s failed, error %d\n", mmc_hostname(card->host),
                       __func__, err);
        }
        return err;
@@ -1474,7 +1474,7 @@ static int mmc_select_timing(struct mmc_card *card)
                err = mmc_select_hs400es(card);
        else if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200)
                err = mmc_select_hs200(card);
-       else if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS)
+       if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS)
                err = mmc_select_hs(card);

        if (err && err != -EBADMSG)

the card is probed as DDR MMC and the error message is gone:

# dmesg | grep mmc1
[    1.702797] mmc1: SDHCI controller on 30b60000.usdhc [30b60000.usdhc] using A
[    1.811211] mmc1: new DDR MMC card at address 0001
[    1.820786] mmcblk1: mmc1:0001 V10008 7.05 GiB
[    1.833340] mmcblk1boot0: mmc1:0001 V10008 partition 1 4.00 MiB
[    1.840518] mmcblk1boot1: mmc1:0001 V10008 partition 2 4.00 MiB
[    1.847812] mmcblk1rpmb: mmc1:0001 V10008 partition 3 4.00 MiB

Is this a correct fix?

Thanks



More information about the linux-arm-kernel mailing list