mmc: skip select_mode_and_width for MMC SPI host
authorAnup Patel <Anup.Patel@wdc.com>
Mon, 8 Jul 2019 04:10:43 +0000 (04:10 +0000)
committerPeng Fan <peng.fan@nxp.com>
Mon, 15 Jul 2019 02:16:49 +0000 (10:16 +0800)
The MMC mode and width are fixed for MMC SPI host hence we skip
sd_select_mode_and_width() and mmc_select_mode_and_width() for
MMC SPI host.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
drivers/mmc/mmc.c

index cec39a9acf40730099d3a0cb6f6ef81d61270e9a..2a1ba6e51dc9cbf7a5c91f7a64bf298e2ca9691b 100644 (file)
@@ -1686,6 +1686,13 @@ static int sd_select_mode_and_width(struct mmc *mmc, uint card_caps)
        mmc_dump_capabilities("host", mmc->host_caps);
 #endif
 
+       if (mmc_host_is_spi(mmc)) {
+               mmc_set_bus_width(mmc, 1);
+               mmc_select_mode(mmc, SD_LEGACY);
+               mmc_set_clock(mmc, mmc->tran_speed, MMC_CLK_ENABLE);
+               return 0;
+       }
+
        /* Restrict card's capabilities by what the host can do */
        caps = card_caps & mmc->host_caps;
 
@@ -1948,6 +1955,13 @@ static int mmc_select_mode_and_width(struct mmc *mmc, uint card_caps)
        mmc_dump_capabilities("host", mmc->host_caps);
 #endif
 
+       if (mmc_host_is_spi(mmc)) {
+               mmc_set_bus_width(mmc, 1);
+               mmc_select_mode(mmc, MMC_LEGACY);
+               mmc_set_clock(mmc, mmc->tran_speed, MMC_CLK_ENABLE);
+               return 0;
+       }
+
        /* Restrict card's capabilities by what the host can do */
        card_caps &= mmc->host_caps;