|
@@ -1214,7 +1214,7 @@ static int mmc_set_ios(struct mmc *mmc)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-int mmc_set_clock(struct mmc *mmc, uint clock)
|
|
|
+int mmc_set_clock(struct mmc *mmc, uint clock, bool disable)
|
|
|
{
|
|
|
if (clock > mmc->cfg->f_max)
|
|
|
clock = mmc->cfg->f_max;
|
|
@@ -1223,6 +1223,7 @@ int mmc_set_clock(struct mmc *mmc, uint clock)
|
|
|
clock = mmc->cfg->f_min;
|
|
|
|
|
|
mmc->clock = clock;
|
|
|
+ mmc->clk_disable = disable;
|
|
|
|
|
|
return mmc_set_ios(mmc);
|
|
|
}
|
|
@@ -1322,7 +1323,7 @@ static int sd_select_mode_and_width(struct mmc *mmc)
|
|
|
|
|
|
/* configure the bus mode (host) */
|
|
|
mmc_select_mode(mmc, mwt->mode);
|
|
|
- mmc_set_clock(mmc, mmc->tran_speed);
|
|
|
+ mmc_set_clock(mmc, mmc->tran_speed, false);
|
|
|
|
|
|
err = sd_read_ssr(mmc);
|
|
|
if (!err)
|
|
@@ -1333,7 +1334,7 @@ static int sd_select_mode_and_width(struct mmc *mmc)
|
|
|
error:
|
|
|
/* revert to a safer bus speed */
|
|
|
mmc_select_mode(mmc, SD_LEGACY);
|
|
|
- mmc_set_clock(mmc, mmc->tran_speed);
|
|
|
+ mmc_set_clock(mmc, mmc->tran_speed, false);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1476,7 +1477,7 @@ static int mmc_select_mode_and_width(struct mmc *mmc)
|
|
|
|
|
|
/* configure the bus mode (host) */
|
|
|
mmc_select_mode(mmc, mwt->mode);
|
|
|
- mmc_set_clock(mmc, mmc->tran_speed);
|
|
|
+ mmc_set_clock(mmc, mmc->tran_speed, false);
|
|
|
|
|
|
/* do a transfer to check the configuration */
|
|
|
err = mmc_read_and_compare_ext_csd(mmc);
|
|
@@ -1950,7 +1951,7 @@ static void mmc_set_initial_state(struct mmc *mmc)
|
|
|
|
|
|
mmc_select_mode(mmc, MMC_LEGACY);
|
|
|
mmc_set_bus_width(mmc, 1);
|
|
|
- mmc_set_clock(mmc, 0);
|
|
|
+ mmc_set_clock(mmc, 0, false);
|
|
|
}
|
|
|
|
|
|
static int mmc_power_on(struct mmc *mmc)
|