int mmc_resume_clk_scaling(struct mmc_host *host)
{
int err = 0;
+ u32 max_clk_idx = 0;
+ u32 devfreq_max_clk = 0;
+ u32 devfreq_min_clk = 0;
if (!host) {
WARN(1, "bad host parameter\n");
}
atomic_set(&host->clk_scaling.devfreq_abort, 0);
- host->clk_scaling.curr_freq = host->ios.clock;
+
+ max_clk_idx = host->clk_scaling.freq_table_sz - 1;
+ devfreq_max_clk = host->clk_scaling.freq_table[max_clk_idx];
+ devfreq_min_clk = host->clk_scaling.freq_table[0];
+
+ host->clk_scaling.curr_freq = devfreq_max_clk;
+ if (host->ios.clock < host->card->clk_scaling_highest)
+ host->clk_scaling.curr_freq = devfreq_min_clk;
+
host->clk_scaling.clk_scaling_in_progress = false;
host->clk_scaling.need_freq_change = false;