static int dclk_lcdc_set_rate(struct clk *clk, unsigned long rate)
{
+ if (rate == 27 * MHZ)
+ return clkset_rate_freediv_autosel_parents(clk, rate);
+ else
+ return clkset_rate_evendiv_autosel_parents(clk, rate);
+
+#if 0
+
int ret = 0;
struct clk *parent;
}
}
return ret;
+#endif
}
static struct clk *dclk_lcdc0_parents[2] = {&codec_pll_clk, &general_pll_clk};
static struct clk dclk_lcdc0 = {
.name = "dclk_lcdc0",
.mode = gate_mode,
- .set_rate = clkset_rate_evendiv_autosel_parents,
+ .set_rate = dclk_lcdc_set_rate,
.recalc = clksel_recalc_div,
.gate_idx = CLK_GATE_DCLK_LCDC0_SRC,
.clksel_con = CRU_CLKSELS_CON(27),
static struct clk dclk_lcdc1 = {
.name = "dclk_lcdc1",
.mode = gate_mode,
- .set_rate = clkset_rate_evendiv_autosel_parents,
+ .set_rate = dclk_lcdc_set_rate,
.recalc = clksel_recalc_div,
.gate_idx = CLK_GATE_DCLK_LCDC1_SRC,
.clksel_con = CRU_CLKSELS_CON(28),