Lines Matching refs:rate
88 static void cdce925_pll_find_rate(unsigned long rate, in cdce925_pll_find_rate() argument
95 if (rate <= parent_rate) { in cdce925_pll_find_rate()
97 rate = parent_rate; in cdce925_pll_find_rate()
102 if (rate < CDCE925_PLL_FREQUENCY_MIN) in cdce925_pll_find_rate()
103 rate = CDCE925_PLL_FREQUENCY_MIN; in cdce925_pll_find_rate()
104 else if (rate > CDCE925_PLL_FREQUENCY_MAX) in cdce925_pll_find_rate()
105 rate = CDCE925_PLL_FREQUENCY_MAX; in cdce925_pll_find_rate()
107 g = gcd(rate, parent_rate); in cdce925_pll_find_rate()
109 un = rate / g; in cdce925_pll_find_rate()
125 static long cdce925_pll_round_rate(struct clk_hw *hw, unsigned long rate, in cdce925_pll_round_rate() argument
130 cdce925_pll_find_rate(rate, *parent_rate, &n, &m); in cdce925_pll_round_rate()
134 static int cdce925_pll_set_rate(struct clk_hw *hw, unsigned long rate, in cdce925_pll_set_rate() argument
139 if (!rate || (rate == parent_rate)) { in cdce925_pll_set_rate()
145 if ((rate < CDCE925_PLL_FREQUENCY_MIN) || in cdce925_pll_set_rate()
146 (rate > CDCE925_PLL_FREQUENCY_MAX)) { in cdce925_pll_set_rate()
147 pr_debug("%s: rate %lu outside PLL range.\n", __func__, rate); in cdce925_pll_set_rate()
151 if (rate < parent_rate) { in cdce925_pll_set_rate()
153 rate, parent_rate); in cdce925_pll_set_rate()
157 cdce925_pll_find_rate(rate, parent_rate, &data->n, &data->m); in cdce925_pll_set_rate()
182 unsigned long rate = clk_get_rate(parent); in cdce925_pll_calc_range_bits() local
184 rate = mult_frac(rate, (unsigned long)n, (unsigned long)m); in cdce925_pll_calc_range_bits()
185 if (rate >= 175000000) in cdce925_pll_calc_range_bits()
187 if (rate >= 150000000) in cdce925_pll_calc_range_bits()
189 if (rate >= 125000000) in cdce925_pll_calc_range_bits()
337 static u16 cdce925_calc_divider(unsigned long rate, in cdce925_calc_divider() argument
342 if (!rate) in cdce925_calc_divider()
344 if (rate >= parent_rate) in cdce925_calc_divider()
347 divider = DIV_ROUND_CLOSEST(parent_rate, rate); in cdce925_calc_divider()
355 struct clk_hw *hw, unsigned long rate) in cdce925_clk_best_parent_rate() argument
360 unsigned long best_rate_error = rate; in cdce925_clk_best_parent_rate()
366 if (root_rate % rate == 0) in cdce925_clk_best_parent_rate()
369 pdiv_min = (u16)max(1ul, DIV_ROUND_UP(CDCE925_PLL_FREQUENCY_MIN, rate)); in cdce925_clk_best_parent_rate()
370 pdiv_max = (u16)min(127ul, CDCE925_PLL_FREQUENCY_MAX / rate); in cdce925_clk_best_parent_rate()
377 unsigned long target_rate = rate * pdiv_now; in cdce925_clk_best_parent_rate()
385 rate_error = abs((long)actual_rate - (long)rate); in cdce925_clk_best_parent_rate()
394 return rate * pdiv_best; in cdce925_clk_best_parent_rate()
397 static long cdce925_clk_round_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_round_rate() argument
401 u16 divider = cdce925_calc_divider(rate, l_parent_rate); in cdce925_clk_round_rate()
403 if (l_parent_rate / divider != rate) { in cdce925_clk_round_rate()
404 l_parent_rate = cdce925_clk_best_parent_rate(hw, rate); in cdce925_clk_round_rate()
405 divider = cdce925_calc_divider(rate, l_parent_rate); in cdce925_clk_round_rate()
414 static int cdce925_clk_set_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_set_rate() argument
419 data->pdiv = cdce925_calc_divider(rate, parent_rate); in cdce925_clk_set_rate()
433 static u16 cdce925_y1_calc_divider(unsigned long rate, in cdce925_y1_calc_divider() argument
438 if (!rate) in cdce925_y1_calc_divider()
440 if (rate >= parent_rate) in cdce925_y1_calc_divider()
443 divider = DIV_ROUND_CLOSEST(parent_rate, rate); in cdce925_y1_calc_divider()
450 static long cdce925_clk_y1_round_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_y1_round_rate() argument
454 u16 divider = cdce925_y1_calc_divider(rate, l_parent_rate); in cdce925_clk_y1_round_rate()
461 static int cdce925_clk_y1_set_rate(struct clk_hw *hw, unsigned long rate, in cdce925_clk_y1_set_rate() argument
466 data->pdiv = cdce925_y1_calc_divider(rate, parent_rate); in cdce925_clk_y1_set_rate()