]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/commitdiff
mmc: Fix HS400 init sequence
authorPavan Kunapuli <pkunapuli@nvidia.com>
Thu, 14 May 2015 08:27:40 +0000 (13:57 +0530)
committerPavan Kunapuli <pkunapuli@nvidia.com>
Thu, 14 May 2015 11:25:09 +0000 (04:25 -0700)
Set HS400 clock after switching HS400 mode timing
Set ddr power class for HS400
Differentiate between HS400 and HS533 when announcing the eMMC bus speed
characteristics.

Change-Id: I75e19254d10ae43fafb3548db63d8390f6041172
Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com>
Reviewed-on: http://git-master/r/742706

drivers/mmc/core/bus.c
drivers/mmc/core/mmc.c

index f9d2d4ab7a6a2bdd7dbdfb26b2c204e4fbaee6da..96d67d707b01858d9d3e8d0ff4c8e8e10344a6b0 100644 (file)
@@ -356,6 +356,7 @@ int mmc_add_card(struct mmc_card *card)
                        mmc_hostname(card->host),
                        mmc_card_uhs(card) ? "ultra high speed " :
                        (mmc_card_hs(card) ? "high speed " : ""),
+                       mmc_card_hs533(card) ? "HS533 " :
                        mmc_card_hs400(card) ? "HS400 " :
                        (mmc_card_hs200(card) ? "HS200 " : ""),
                        mmc_card_ddr52(card) ? "DDR " : "",
index 06b95a1bf3537d331507c1b27371c6705c111b5f..7daa246ef8bfbabe2fc9ec27681fd829b01d4bf7 100644 (file)
@@ -924,7 +924,8 @@ static int mmc_select_powerclass(struct mmc_card *card)
        if (bus_width == MMC_BUS_WIDTH_1)
                return 0;
 
-       ddr = card->mmc_avail_type & EXT_CSD_CARD_TYPE_DDR_52;
+       ddr = card->mmc_avail_type & (EXT_CSD_CARD_TYPE_DDR_52 |
+               EXT_CSD_CARD_TYPE_HS400);
        if (ddr)
                ext_csd_bits = (bus_width == MMC_BUS_WIDTH_8) ?
                        EXT_CSD_DDR_BUS_WIDTH_8 : EXT_CSD_DDR_BUS_WIDTH_4;
@@ -1135,8 +1136,6 @@ static int mmc_select_hs400(struct mmc_card *card)
         * it is required to convert from HS200 mode to HS mode.
         */
        mmc_set_timing(card->host, MMC_TIMING_MMC_HS);
-       mmc_set_bus_speed(card);
-
        err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
                           EXT_CSD_HS_TIMING, EXT_CSD_TIMING_HS,
                           card->ext_csd.generic_cmd6_time,
@@ -1146,6 +1145,7 @@ static int mmc_select_hs400(struct mmc_card *card)
                        mmc_hostname(host), err);
                return err;
        }
+       mmc_set_bus_speed(card);
 
        /* Enable enhanced strobe support if supported by both host and card */
        if (card->ext_csd.strobe_support &&