
On 12 May 2017 at 12:16, Jean-Jacques Hiblot jjhiblot@ti.com wrote:
Please add commit message which what is happening and motivation.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
drivers/mmc/mmc.c | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 5d418c5..dc7985f 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -171,9 +171,35 @@ const char *mmc_mode_name(enum bus_mode mode) else return names[mode]; }
+static uint mmc_mode2freq(struct mmc *mmc, enum bus_mode mode) +{
static const int freqs[] = {
[SD_LEGACY] = 25000000,
[MMC_HS] = 26000000,
[SD_HS] = 50000000,
[UHS_SDR12] = 25000000,
[UHS_SDR25] = 50000000,
[UHS_SDR50] = 100000000,
[UHS_SDR104] = 208000000,
[UHS_DDR50] = 50000000,
[MMC_HS_52] = 52000000,
[MMC_DDR_52] = 52000000,
[MMC_HS_200] = 200000000,
};
if (mode == MMC_LEGACY)
return mmc->legacy_speed;
else if (mode >= MMC_MODES_END)
return 0;
else
return freqs[mode];
+}
static int mmc_select_mode(struct mmc *mmc, enum bus_mode mode) { mmc->selected_mode = mode;
mmc->tran_speed = mmc_mode2freq(mmc, mode); debug("selecting mode %s (freq : %d MHz)\n", mmc_mode_name(mode), mmc->tran_speed / 1000000); return 0;
@@ -1185,13 +1211,10 @@ static int sd_select_bus_freq_width(struct mmc *mmc) if (err) return err;
if (mmc->card_caps & MMC_MODE_HS) {
if (mmc->card_caps & MMC_MODE_HS) mmc_select_mode(mmc, SD_HS);
mmc->tran_speed = 50000000;
} else {
else mmc_select_mode(mmc, SD_LEGACY);
mmc->tran_speed = 25000000;
} return 0;
} @@ -1310,11 +1333,8 @@ static int mmc_select_bus_freq_width(struct mmc *mmc) mmc_select_mode(mmc, MMC_DDR_52); else mmc_select_mode(mmc, MMC_HS_52);
mmc->tran_speed = 52000000;
} else if (mmc->card_caps & MMC_MODE_HS) {
} else if (mmc->card_caps & MMC_MODE_HS) mmc_select_mode(mmc, MMC_HS);
mmc->tran_speed = 26000000;
} return err;
} @@ -1584,7 +1604,6 @@ static int mmc_startup(struct mmc *mmc) mult = multipliers[((cmd.response[0] >> 3) & 0xf)];
mmc->legacy_speed = freq * mult;
mmc->tran_speed = mmc->legacy_speed; mmc_select_mode(mmc, MMC_LEGACY); mmc->dsr_imp = ((cmd.response[1] >> 12) & 0x1);
@@ -1659,7 +1678,6 @@ static int mmc_startup(struct mmc *mmc) if (err) return err;
mmc_set_clock(mmc, mmc->tran_speed); /* Fix the block length for DDR mode */ if (mmc->ddr_mode) {
-- 1.9.1