Lines Matching refs:rate

109 static void cdce925_pll_find_rate(unsigned long rate,  in cdce925_pll_find_rate()  argument
116 if (rate <= parent_rate) { in cdce925_pll_find_rate()
118 rate = parent_rate; in cdce925_pll_find_rate()
123 if (rate < CDCE925_PLL_FREQUENCY_MIN) in cdce925_pll_find_rate()
124 rate = CDCE925_PLL_FREQUENCY_MIN; in cdce925_pll_find_rate()
125 else if (rate > CDCE925_PLL_FREQUENCY_MAX) in cdce925_pll_find_rate()
126 rate = CDCE925_PLL_FREQUENCY_MAX; in cdce925_pll_find_rate()
128 g = gcd(rate, parent_rate); in cdce925_pll_find_rate()
130 un = rate / g; in cdce925_pll_find_rate()
146 static long cdce925_pll_round_rate(struct clk_hw *hw, unsigned long rate, in cdce925_pll_round_rate() argument
151 cdce925_pll_find_rate(rate, *parent_rate, &n, &m); in cdce925_pll_round_rate()
155 static int cdce925_pll_set_rate(struct clk_hw *hw, unsigned long rate, in cdce925_pll_set_rate() argument
160 if (!rate || (rate == parent_rate)) { in cdce925_pll_set_rate()
166 if ((rate < CDCE925_PLL_FREQUENCY_MIN) || in cdce925_pll_set_rate()
167 (rate > CDCE925_PLL_FREQUENCY_MAX)) { in cdce925_pll_set_rate()
168 pr_debug("%s: rate %lu outside PLL range.\n", __func__, rate); in cdce925_pll_set_rate()
172 if (rate < parent_rate) { in cdce925_pll_set_rate()
174 rate, parent_rate); in cdce925_pll_set_rate()
178 cdce925_pll_find_rate(rate, parent_rate, &data->n, &data->m); in cdce925_pll_set_rate()
203 unsigned long rate = clk_get_rate(parent); in cdce925_pll_calc_range_bits() local
205 rate = mult_frac(rate, (unsigned long)n, (unsigned long)m); in cdce925_pll_calc_range_bits()
206 if (rate >= 175000000) in cdce925_pll_calc_range_bits()
208 if (rate >= 150000000) in cdce925_pll_calc_range_bits()
210 if (rate >= 125000000) in cdce925_pll_calc_range_bits()
378 static u16 cdce925_calc_divider(unsigned long rate, in cdce925_calc_divider() argument
383 if (!rate) in cdce925_calc_divider()
385 if (rate >= parent_rate) in cdce925_calc_divider()
388 divider = DIV_ROUND_CLOSEST(parent_rate, rate); in cdce925_calc_divider()
396 struct clk_hw *hw, unsigned long rate) in cdce925_clk_best_parent_rate() argument
401 unsigned long best_rate_error = rate; in cdce925_clk_best_parent_rate()
407 if (root_rate % rate == 0) in cdce925_clk_best_parent_rate()
410 pdiv_min = (u16)max(1ul, DIV_ROUND_UP(CDCE925_PLL_FREQUENCY_MIN, rate)); in cdce925_clk_best_parent_rate()
411 pdiv_max = (u16)min(127ul, CDCE925_PLL_FREQUENCY_MAX / rate); in cdce925_clk_best_parent_rate()
418 unsigned long target_rate = rate * pdiv_now; in cdce925_clk_best_parent_rate()
426 rate_error = abs((long)actual_rate - (long)rate); in cdce925_clk_best_parent_rate()
435 return rate * pdiv_best; in cdce925_clk_best_parent_rate()
438 static long cdce925_clk_round_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_round_rate() argument
442 u16 divider = cdce925_calc_divider(rate, l_parent_rate); in cdce925_clk_round_rate()
444 if (l_parent_rate / divider != rate) { in cdce925_clk_round_rate()
445 l_parent_rate = cdce925_clk_best_parent_rate(hw, rate); in cdce925_clk_round_rate()
446 divider = cdce925_calc_divider(rate, l_parent_rate); in cdce925_clk_round_rate()
455 static int cdce925_clk_set_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_set_rate() argument
460 data->pdiv = cdce925_calc_divider(rate, parent_rate); in cdce925_clk_set_rate()
474 static u16 cdce925_y1_calc_divider(unsigned long rate, in cdce925_y1_calc_divider() argument
479 if (!rate) in cdce925_y1_calc_divider()
481 if (rate >= parent_rate) in cdce925_y1_calc_divider()
484 divider = DIV_ROUND_CLOSEST(parent_rate, rate); in cdce925_y1_calc_divider()
491 static long cdce925_clk_y1_round_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_y1_round_rate() argument
495 u16 divider = cdce925_y1_calc_divider(rate, l_parent_rate); in cdce925_clk_y1_round_rate()
502 static int cdce925_clk_y1_set_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_y1_set_rate() argument
507 data->pdiv = cdce925_y1_calc_divider(rate, parent_rate); in cdce925_clk_y1_set_rate()