Lines Matching refs:rate
138 static int calc_dsor_exp(unsigned long rate, unsigned long realrate)
157 if (realrate <= rate)
171 /* update locally maintained rate, required by arm_ck for omap1_show_rates() */
172 clk->rate = p_rate / dsor;
173 return clk->rate;
230 int omap1_select_table_rate(struct omap1_clk *clk, unsigned long rate, unsigned long p_rate)
232 /* Find the highest supported frequency <= rate and switch to it */
236 ref_rate = ck_ref_p->rate;
238 for (ptr = omap1_rate_table; ptr->rate; ptr++) {
246 if (ptr->rate <= rate)
250 if (!ptr->rate)
260 ck_dpll1_p->rate = ptr->pll_rate;
265 int omap1_clk_set_rate_dsp_domain(struct omap1_clk *clk, unsigned long rate, unsigned long p_rate)
270 dsor_exp = calc_dsor_exp(rate, p_rate);
280 clk->rate = p_rate / (1 << dsor_exp);
285 long omap1_clk_round_rate_ckctl_arm(struct omap1_clk *clk, unsigned long rate,
288 int dsor_exp = calc_dsor_exp(rate, *p_rate);
297 int omap1_clk_set_rate_ckctl_arm(struct omap1_clk *clk, unsigned long rate, unsigned long p_rate)
303 dsor_exp = calc_dsor_exp(rate, p_rate);
317 clk->rate = p_rate / (1 << dsor_exp);
324 long omap1_round_to_table_rate(struct omap1_clk *clk, unsigned long rate, unsigned long *p_rate)
326 /* Find the highest supported frequency <= rate */
331 ref_rate = ck_ref_p->rate;
335 for (ptr = omap1_rate_table; ptr->rate; ptr++) {
342 highest_rate = ptr->rate;
345 if (ptr->rate <= rate)
352 static unsigned calc_ext_dsor(unsigned long rate)
368 if (rate >= 96000000 / dsor)
375 long omap1_round_uart_rate(struct omap1_clk *clk, unsigned long rate, unsigned long *p_rate)
377 return rate > 24000000 ? 48000000 : 12000000;
380 int omap1_set_uart_rate(struct omap1_clk *clk, unsigned long rate, unsigned long p_rate)
385 if (rate == 12000000)
387 else if (rate == 48000000)
400 clk->rate = rate;
406 int omap1_set_ext_clk_rate(struct omap1_clk *clk, unsigned long rate, unsigned long p_rate)
412 dsor = calc_ext_dsor(rate);
413 clk->rate = 96000000 / dsor;
430 static int calc_div_sossi(unsigned long rate, unsigned long p_rate)
435 div = (p_rate + rate - 1) / rate;
440 long omap1_round_sossi_rate(struct omap1_clk *clk, unsigned long rate, unsigned long *p_rate)
444 div = calc_div_sossi(rate, *p_rate);
453 int omap1_set_sossi_rate(struct omap1_clk *clk, unsigned long rate, unsigned long p_rate)
459 div = calc_div_sossi(rate, p_rate);
471 clk->rate = p_rate / (div + 1);
478 long omap1_round_ext_clk_rate(struct omap1_clk *clk, unsigned long rate, unsigned long *p_rate)
480 return 96000000 / calc_ext_dsor(rate);
488 /* Determine current rate and ensure clock is based on 96MHz APLL */
498 clk-> rate = 96000000 / dsor;
705 return clk->rate;
708 static long omap1_clk_round_rate(struct clk_hw *hw, unsigned long rate, unsigned long *p_rate)
713 return clk->round_rate(clk, rate, p_rate);
718 static int omap1_clk_set_rate(struct clk_hw *hw, unsigned long rate, unsigned long p_rate)
724 ret = clk->set_rate(clk, rate, p_rate);
813 /* Propagate rate to children */