struct sd_clock *clock;
        struct clk *clk;
        unsigned int i;
-       u32 sd_fc;
+       u32 val;
 
        clock = kzalloc(sizeof(*clock), GFP_KERNEL);
        if (!clock)
        clock->div_table = cpg_sd_div_table;
        clock->div_num = ARRAY_SIZE(cpg_sd_div_table);
 
-       sd_fc = readl(clock->csn.reg) & CPG_SD_FC_MASK;
-       for (i = 0; i < clock->div_num; i++)
-               if (sd_fc == (clock->div_table[i].val & CPG_SD_FC_MASK))
-                       break;
-
-       if (WARN_ON(i >= clock->div_num)) {
-               kfree(clock);
-               return ERR_PTR(-EINVAL);
-       }
-
-       clock->cur_div_idx = i;
+       val = readl(clock->csn.reg) & ~CPG_SD_FC_MASK;
+       val |= CPG_SD_STP_MASK | (clock->div_table[0].val & CPG_SD_FC_MASK);
+       writel(val, clock->csn.reg);
 
        clock->div_max = clock->div_table[0].div;
        clock->div_min = clock->div_max;