| /linux/drivers/clk/ |
| H A D | clk-fractional-divider_test.c | 19 unsigned long rate, parent_rate, parent_rate_before, m, n, max_n; in clk_fd_test_approximation_max_denominator() local 29 parent_rate = (max_n + 1) * rate; /* so that it exceeds the maximum divisor */ in clk_fd_test_approximation_max_denominator() 30 parent_rate_before = parent_rate; in clk_fd_test_approximation_max_denominator() 32 clk_fractional_divider_general_approximation(&fd->hw, rate, &parent_rate, &m, &n); in clk_fd_test_approximation_max_denominator() 33 KUNIT_ASSERT_EQ(test, parent_rate, parent_rate_before); in clk_fd_test_approximation_max_denominator() 48 unsigned long rate, parent_rate, parent_rate_before, m, n, max_m; in clk_fd_test_approximation_max_numerator() local 58 parent_rate = rate / (max_m + 1); /* so that it exceeds the maximum numerator */ in clk_fd_test_approximation_max_numerator() 59 parent_rate_before = parent_rate; in clk_fd_test_approximation_max_numerator() 61 clk_fractional_divider_general_approximation(&fd->hw, rate, &parent_rate, &m, &n); in clk_fd_test_approximation_max_numerator() 62 KUNIT_ASSERT_EQ(test, parent_rate, parent_rate_before); in clk_fd_test_approximation_max_numerator() [all …]
|
| H A D | clk-vt8500.c | 115 unsigned long parent_rate) in vt8500_dclk_recalc_rate() argument 128 return parent_rate / div; in vt8500_dclk_recalc_rate() 159 unsigned long parent_rate) in vt8500_dclk_set_rate() argument 168 divisor = parent_rate / rate; in vt8500_dclk_set_rate() 351 static int vt8500_find_pll_bits(unsigned long rate, unsigned long parent_rate, in vt8500_find_pll_bits() argument 357 if ((rate < parent_rate * 4) || (rate > parent_rate * 62)) { in vt8500_find_pll_bits() 363 if (rate <= parent_rate * 31) in vt8500_find_pll_bits() 369 *multiplier = rate / (parent_rate / *prediv); in vt8500_find_pll_bits() 370 tclk = (parent_rate / *prediv) * *multiplier; in vt8500_find_pll_bits() 391 unsigned long parent_rate, u32 *multiplier, u32 *divisor1, in wm8650_find_pll_bits() argument [all …]
|
| H A D | clk-multiplier.c | 33 unsigned long parent_rate) in __get_mult() argument 36 return DIV_ROUND_CLOSEST(rate, parent_rate); in __get_mult() 38 return rate / parent_rate; in __get_mult() 42 unsigned long parent_rate) in clk_multiplier_recalc_rate() argument 53 return parent_rate * val; in clk_multiplier_recalc_rate() 71 unsigned long parent_rate, current_rate, best_rate = ~0; in __bestmult() local 101 parent_rate = clk_hw_round_rate(clk_hw_get_parent(hw), in __bestmult() 103 current_rate = parent_rate * i; in __bestmult() 108 *best_parent_rate = parent_rate; in __bestmult() 128 unsigned long parent_rate) in clk_multiplier_set_rate() argument [all …]
|
| H A D | clk-sparx5.c | 58 static unsigned long s5_calc_freq(unsigned long parent_rate, in s5_calc_freq() argument 61 unsigned long rate = parent_rate / conf->div; in s5_calc_freq() 76 unsigned long parent_rate, in s5_search_fractional() argument 94 conf->freq = s5_calc_freq(parent_rate, conf); in s5_search_fractional() 109 unsigned long parent_rate, in s5_calc_params() argument 112 if (parent_rate % rate) { in s5_calc_params() 116 div = DIV_ROUND_CLOSEST_ULL(parent_rate, rate); in s5_calc_params() 117 s5_search_fractional(rate, parent_rate, div, &alt1); in s5_calc_params() 124 div = parent_rate / rate; in s5_calc_params() 126 s5_search_fractional(rate, parent_rate, div, in s5_calc_params() [all …]
|
| H A D | clk-xgene.c | 72 unsigned long parent_rate) in xgene_clk_pll_recalc_rate() argument 91 fvco = parent_rate * (N_DIV_RD(pll) + 4); in xgene_clk_pll_recalc_rate() 101 fref = parent_rate / nref; in xgene_clk_pll_recalc_rate() 110 fvco = parent_rate * SC_N_DIV_RD(pll); in xgene_clk_pll_recalc_rate() 113 clk_hw_get_name(hw), fvco / nout, parent_rate, in xgene_clk_pll_recalc_rate() 238 unsigned long parent_rate) in xgene_clk_pmd_recalc_rate() argument 257 ret = (u64)parent_rate; in xgene_clk_pmd_recalc_rate() 269 ret = (u64)parent_rate; in xgene_clk_pmd_recalc_rate() 299 unsigned long parent_rate) in xgene_clk_pmd_set_rate() argument 313 scale = DIV_ROUND_UP_ULL(ret, (u64)parent_rate); in xgene_clk_pmd_set_rate() [all …]
|
| H A D | clk-divider.c | 136 unsigned long divider_recalc_rate(struct clk_hw *hw, unsigned long parent_rate, in divider_recalc_rate() argument 148 return parent_rate; in divider_recalc_rate() 151 return DIV_ROUND_UP_ULL((u64)parent_rate, div); in divider_recalc_rate() 156 unsigned long parent_rate) in clk_divider_recalc_rate() argument 164 return divider_recalc_rate(hw, parent_rate, val, divider->table, in clk_divider_recalc_rate() 226 unsigned long parent_rate, unsigned long rate, in _div_round_up() argument 229 int div = DIV_ROUND_UP_ULL((u64)parent_rate, rate); in _div_round_up() 240 unsigned long parent_rate, unsigned long rate, in _div_round_closest() argument 246 up = DIV_ROUND_UP_ULL((u64)parent_rate, rate); in _div_round_closest() 247 down = parent_rate / rate; in _div_round_closest() [all …]
|
| /linux/drivers/clk/actions/ |
| H A D | owl-factor.c | 44 unsigned long rate, unsigned long parent_rate) in _get_table_val() argument 51 calc_rate = parent_rate * clkt->mul; in _get_table_val() 71 unsigned long parent_rate, try_parent_rate, best = 0, cur_rate; in owl_clk_val_best() local 79 parent_rate = *best_parent_rate; in owl_clk_val_best() 80 bestval = _get_table_val(clkt, rate, parent_rate); in owl_clk_val_best() 100 parent_rate = clk_hw_round_rate(clk_hw_get_parent(hw), in owl_clk_val_best() 102 cur_rate = DIV_ROUND_UP(parent_rate, clkt->div) * clkt->mul; in owl_clk_val_best() 106 *best_parent_rate = parent_rate; in owl_clk_val_best() 122 unsigned long *parent_rate) in owl_factor_helper_round_rate() argument 127 val = owl_clk_val_best(factor_hw, &common->hw, rate, parent_rate); in owl_factor_helper_round_rate() [all …]
|
| H A D | owl-divider.c | 19 unsigned long *parent_rate) in owl_divider_helper_round_rate() argument 21 return divider_round_rate(&common->hw, rate, parent_rate, in owl_divider_helper_round_rate() 40 unsigned long parent_rate) in owl_divider_helper_recalc_rate() argument 49 return divider_recalc_rate(&common->hw, parent_rate, in owl_divider_helper_recalc_rate() 56 unsigned long parent_rate) in owl_divider_recalc_rate() argument 61 &div->div_hw, parent_rate); in owl_divider_recalc_rate() 67 unsigned long parent_rate) in owl_divider_helper_set_rate() argument 72 val = divider_get_val(rate, parent_rate, div_hw->table, in owl_divider_helper_set_rate() 85 unsigned long parent_rate) in owl_divider_set_rate() argument 90 rate, parent_rate); in owl_divider_set_rate()
|
| H A D | owl-composite.c | 72 unsigned long parent_rate) in owl_comp_div_recalc_rate() argument 77 parent_rate); in owl_comp_div_recalc_rate() 81 unsigned long parent_rate) in owl_comp_div_set_rate() argument 86 rate, parent_rate); in owl_comp_div_set_rate() 106 unsigned long parent_rate) in owl_comp_fact_recalc_rate() argument 112 parent_rate); in owl_comp_fact_recalc_rate() 116 unsigned long parent_rate) in owl_comp_fact_set_rate() argument 122 rate, parent_rate); in owl_comp_fact_set_rate() 135 unsigned long parent_rate) in owl_comp_fix_fact_recalc_rate() argument 140 return comp->fix_fact_ops->recalc_rate(&fix_fact_hw->hw, parent_rate); in owl_comp_fix_fact_recalc_rate() [all …]
|
| /linux/drivers/clk/sophgo/ |
| H A D | clk-cv18xx-ip.c | 43 unsigned long parent_rate) in gate_recalc_rate() argument 45 return parent_rate; in gate_recalc_rate() 57 unsigned long parent_rate) in gate_set_rate() argument 170 static long div_round_rate(struct clk_hw *parent, unsigned long *parent_rate, in div_round_rate() argument 176 rate, parent_rate); in div_round_rate() 215 unsigned long tmp_rate, parent_rate; in mux_helper_determine_rate() local 222 parent_rate = clk_hw_get_rate(parent); in mux_helper_determine_rate() 224 tmp_rate = round(parent, &parent_rate, req->rate, i, data); in mux_helper_determine_rate() 228 best_parent_rate = parent_rate; in mux_helper_determine_rate() 236 best_parent_rate = parent_rate; in mux_helper_determine_rate() [all …]
|
| /linux/drivers/clk/sunxi/ |
| H A D | clk-sun9i-cpus.c | 50 unsigned long parent_rate) in sun9i_a80_cpus_clk_recalc_rate() argument 61 parent_rate /= SUN9I_CPUS_PLL4_DIV_GET(reg) + 1; in sun9i_a80_cpus_clk_recalc_rate() 64 rate = parent_rate / (SUN9I_CPUS_DIV_GET(reg) + 1); in sun9i_a80_cpus_clk_recalc_rate() 70 u8 parent, unsigned long parent_rate) in sun9i_a80_cpus_clk_round() argument 78 if (parent_rate && rate > parent_rate) in sun9i_a80_cpus_clk_round() 79 rate = parent_rate; in sun9i_a80_cpus_clk_round() 81 div = DIV_ROUND_UP(parent_rate, rate); in sun9i_a80_cpus_clk_round() 107 return parent_rate / pre_div / div; in sun9i_a80_cpus_clk_round() 115 unsigned long parent_rate, best = 0, child_rate, best_child_rate = 0; in sun9i_a80_cpus_clk_determine_rate() local 125 parent_rate = clk_hw_round_rate(parent, rate); in sun9i_a80_cpus_clk_determine_rate() [all …]
|
| H A D | clk-sun9i-core.c | 103 if (req->parent_rate < req->rate) in sun9i_a80_get_gt_factors() 104 req->rate = req->parent_rate; in sun9i_a80_get_gt_factors() 106 div = DIV_ROUND_UP(req->parent_rate, req->rate); in sun9i_a80_get_gt_factors() 112 req->rate = req->parent_rate / div; in sun9i_a80_get_gt_factors() 158 if (req->parent_rate < req->rate) in sun9i_a80_get_ahb_factors() 159 req->rate = req->parent_rate; in sun9i_a80_get_ahb_factors() 161 _p = order_base_2(DIV_ROUND_UP(req->parent_rate, req->rate)); in sun9i_a80_get_ahb_factors() 167 req->rate = req->parent_rate >> _p; in sun9i_a80_get_ahb_factors() 238 if (req->parent_rate < req->rate) in sun9i_a80_get_apb1_factors() 239 req->rate = req->parent_rate; in sun9i_a80_get_apb1_factors() [all …]
|
| /linux/drivers/clk/sunxi-ng/ |
| H A D | ccu_mp.c | 58 unsigned long parent_rate, now; in ccu_mp_find_best_with_parent_adj() local 90 parent_rate = clk_hw_round_rate(hw, rate * div); in ccu_mp_find_best_with_parent_adj() 91 now = parent_rate / div; in ccu_mp_find_best_with_parent_adj() 95 *parent = parent_rate; in ccu_mp_find_best_with_parent_adj() 108 unsigned long *parent_rate, in ccu_mp_round_rate() argument 130 rate = ccu_mp_find_best(*parent_rate, rate, max_m, max_p, shift, in ccu_mp_round_rate() 133 rate = ccu_mp_find_best_with_parent_adj(hw, parent_rate, rate, in ccu_mp_round_rate() 165 unsigned long parent_rate) in ccu_mp_recalc_rate() argument 173 parent_rate = ccu_mux_helper_apply_prediv(&cmp->common, &cmp->mux, -1, in ccu_mp_recalc_rate() 174 parent_rate); in ccu_mp_recalc_rate() [all …]
|
| H A D | ccu_phase.c | 17 unsigned int parent_rate, grandparent_rate; in ccu_phase_get_phase() local 35 parent_rate = clk_hw_get_rate(parent); in ccu_phase_get_phase() 36 if (!parent_rate) in ccu_phase_get_phase() 50 parent_div = grandparent_rate / parent_rate; in ccu_phase_get_phase() 60 unsigned int parent_rate, grandparent_rate; in ccu_phase_set_phase() local 71 parent_rate = clk_hw_get_rate(parent); in ccu_phase_set_phase() 72 if (!parent_rate) in ccu_phase_set_phase() 89 parent_div = grandparent_rate / parent_rate; in ccu_phase_set_phase()
|
| H A D | ccu_mult.c | 34 unsigned long *parent_rate, in ccu_mult_round_rate() argument 48 ccu_mult_find_best(*parent_rate, rate, &_cm); in ccu_mult_round_rate() 50 return *parent_rate * _cm.mult; in ccu_mult_round_rate() 75 unsigned long parent_rate) in ccu_mult_recalc_rate() argument 88 parent_rate = ccu_mux_helper_apply_prediv(&cm->common, &cm->mux, -1, in ccu_mult_recalc_rate() 89 parent_rate); in ccu_mult_recalc_rate() 91 return parent_rate * (val + cm->mult.offset); in ccu_mult_recalc_rate() 104 unsigned long parent_rate) in ccu_mult_set_rate() argument 120 parent_rate = ccu_mux_helper_apply_prediv(&cm->common, &cm->mux, -1, in ccu_mult_set_rate() 121 parent_rate); in ccu_mult_set_rate() [all …]
|
| /linux/drivers/clk/pxa/ |
| H A D | clk-pxa27x.c | 202 unsigned long parent_rate) in clk_pxa27x_cpll_get_rate() argument 215 L = l * parent_rate; in clk_pxa27x_cpll_get_rate() 229 unsigned long parent_rate) in clk_pxa27x_cpll_set_rate() argument 233 pr_debug("%s(rate=%lu parent_rate=%lu)\n", __func__, rate, parent_rate); in clk_pxa27x_cpll_set_rate() 249 unsigned long parent_rate) in clk_pxa27x_lcd_base_get_rate() argument 259 return parent_rate * 2; in clk_pxa27x_lcd_base_get_rate() 261 return parent_rate; in clk_pxa27x_lcd_base_get_rate() 265 return parent_rate; in clk_pxa27x_lcd_base_get_rate() 267 return parent_rate / 2; in clk_pxa27x_lcd_base_get_rate() 268 return parent_rate / 4; in clk_pxa27x_lcd_base_get_rate() [all …]
|
| /linux/drivers/clk/at91/ |
| H A D | clk-utmi.c | 47 unsigned long parent_rate; in clk_utmi_prepare() local 55 parent_rate = clk_hw_get_rate(hw_parent); in clk_utmi_prepare() 57 switch (parent_rate) { in clk_utmi_prepare() 111 unsigned long parent_rate) in clk_utmi_recalc_rate() argument 198 unsigned long parent_rate; in clk_utmi_sama7g5_prepare() local 202 parent_rate = clk_hw_get_rate(hw_parent); in clk_utmi_sama7g5_prepare() 204 switch (parent_rate) { in clk_utmi_sama7g5_prepare() 232 unsigned long parent_rate; in clk_utmi_sama7g5_is_prepared() local 236 parent_rate = clk_hw_get_rate(hw_parent); in clk_utmi_sama7g5_is_prepared() 241 if (parent_rate == 16000000) in clk_utmi_sama7g5_is_prepared() [all …]
|
| H A D | clk-audio-pll.c | 159 static unsigned long clk_audio_pll_fout(unsigned long parent_rate, in clk_audio_pll_fout() argument 162 unsigned long long fr = (unsigned long long)parent_rate * fracr; in clk_audio_pll_fout() 170 return parent_rate * (nd + 1) + fr; in clk_audio_pll_fout() 174 unsigned long parent_rate) in clk_audio_pll_frac_recalc_rate() argument 179 fout = clk_audio_pll_fout(parent_rate, frac->nd, frac->fracr); in clk_audio_pll_frac_recalc_rate() 188 unsigned long parent_rate) in clk_audio_pll_pad_recalc_rate() argument 194 apad_rate = parent_rate / (apad_ck->qdaudio * apad_ck->div); in clk_audio_pll_pad_recalc_rate() 203 unsigned long parent_rate) in clk_audio_pll_pmc_recalc_rate() argument 208 apmc_rate = parent_rate / (apmc_ck->qdpmc + 1); in clk_audio_pll_pmc_recalc_rate() 217 unsigned long parent_rate, in clk_audio_pll_frac_compute_frac() argument [all …]
|
| H A D | clk-h32mx.c | 29 unsigned long parent_rate) in clk_sama5d4_h32mx_recalc_rate() argument 36 return parent_rate / 2; in clk_sama5d4_h32mx_recalc_rate() 38 if (parent_rate > H32MX_MAX_FREQ) in clk_sama5d4_h32mx_recalc_rate() 40 return parent_rate; in clk_sama5d4_h32mx_recalc_rate() 72 unsigned long parent_rate) in clk_sama5d4_h32mx_set_rate() argument 77 if (parent_rate != rate && (parent_rate / 2) != rate) in clk_sama5d4_h32mx_set_rate() 80 if ((parent_rate / 2) == rate) in clk_sama5d4_h32mx_set_rate()
|
| /linux/drivers/clk/nuvoton/ |
| H A D | clk-ma35d1-pll.c | 82 unsigned long parent_rate) in ma35d1_calc_smic_pll_freq() argument 88 return parent_rate; in ma35d1_calc_smic_pll_freq() 94 pll_freq = (u64)parent_rate * n; in ma35d1_calc_smic_pll_freq() 99 static unsigned long ma35d1_calc_pll_freq(u8 mode, u32 *reg_ctl, unsigned long parent_rate) in ma35d1_calc_pll_freq() argument 105 return parent_rate; in ma35d1_calc_pll_freq() 112 pll_freq = (u64)parent_rate * n; in ma35d1_calc_pll_freq() 118 pll_freq = div_u64(parent_rate * n, 100 * m * p); in ma35d1_calc_pll_freq() 124 unsigned long parent_rate, u32 *reg_ctl, in ma35d1_pll_find_closest() argument 148 tmp = div_u64(parent_rate, m); in ma35d1_pll_find_closest() 153 fclk = div_u64(parent_rate * n, m); in ma35d1_pll_find_closest() [all …]
|
| /linux/drivers/clk/microchip/ |
| H A D | clk-core.c | 120 unsigned long parent_rate, in calc_best_divided_rate() argument 131 div = parent_rate / rate; in calc_best_divided_rate() 135 divided_rate = parent_rate / div; in calc_best_divided_rate() 136 divided_rate_down = parent_rate / div_up; in calc_best_divided_rate() 151 unsigned long parent_rate) in pbclk_recalc_rate() argument 155 return parent_rate / pbclk_read_pbdiv(pb); in pbclk_recalc_rate() 168 unsigned long parent_rate) in pbclk_set_rate() argument 182 div = DIV_ROUND_CLOSEST(parent_rate, rate); in pbclk_set_rate() 296 static unsigned long roclk_calc_rate(unsigned long parent_rate, in roclk_calc_rate() argument 308 rate64 = parent_rate; in roclk_calc_rate() [all …]
|
| /linux/drivers/clk/qcom/ |
| H A D | clk-rcg2.c | 194 __clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate, u32 cfg) in __clk_rcg2_recalc_rate() argument 215 return calc_rate(parent_rate, m, n, mode, hid_div); in __clk_rcg2_recalc_rate() 219 clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) in clk_rcg2_recalc_rate() argument 226 return __clk_rcg2_recalc_rate(hw, parent_rate, cfg); in clk_rcg2_recalc_rate() 294 unsigned long parent_rate, rate; in __clk_rcg2_select_conf() local 314 parent_rate = clk_hw_get_rate(p); in __clk_rcg2_select_conf() 315 rate = calc_rate(parent_rate, conf->n, conf->m, conf->n, conf->pre_div); in __clk_rcg2_select_conf() 434 static void clk_rcg2_calc_mnd(u64 parent_rate, u64 rate, struct freq_tbl *f, in clk_rcg2_calc_mnd() argument 442 rates_gcd = gcd(parent_rate, rate); in clk_rcg2_calc_mnd() 444 scaled_parent_rate = div64_u64(parent_rate, rates_gcd); in clk_rcg2_calc_mnd() [all …]
|
| /linux/drivers/clk/sprd/ |
| H A D | div.c | 26 unsigned long parent_rate) in sprd_div_helper_recalc_rate() argument 35 return divider_recalc_rate(&common->hw, parent_rate, val, NULL, 0, in sprd_div_helper_recalc_rate() 41 unsigned long parent_rate) in sprd_div_recalc_rate() argument 45 return sprd_div_helper_recalc_rate(&cd->common, &cd->div, parent_rate); in sprd_div_recalc_rate() 51 unsigned long parent_rate) in sprd_div_helper_set_rate() argument 56 val = divider_get_val(rate, parent_rate, NULL, in sprd_div_helper_set_rate() 71 unsigned long parent_rate) in sprd_div_set_rate() argument 76 rate, parent_rate); in sprd_div_set_rate()
|
| /linux/drivers/clk/tegra/ |
| H A D | clk-tegra20-emc.c | 55 unsigned long parent_rate) in emc_recalc_rate() argument 63 return DIV_ROUND_UP(parent_rate * 2, div + 2); in emc_recalc_rate() 102 unsigned long parent_rate) in emc_set_rate() argument 108 div = div_frac_get(rate, parent_rate, 8, 1, 0); in emc_set_rate() 135 unsigned long parent_rate, in emc_set_rate_and_parent() argument 141 div = div_frac_get(rate, parent_rate, 8, 1, 0); in emc_set_rate_and_parent() 173 unsigned long parent_rate; in emc_determine_rate() local 187 parent_rate = req->best_parent_rate; in emc_determine_rate() 189 parent_rate = clk_hw_get_rate(parent_hw); in emc_determine_rate() 191 if (emc_rate > parent_rate) in emc_determine_rate() [all …]
|
| /linux/drivers/clk/mxs/ |
| H A D | clk-frac.c | 34 unsigned long parent_rate) in clk_frac_recalc_rate() argument 43 tmp_rate = (u64)parent_rate * div; in clk_frac_recalc_rate() 51 unsigned long parent_rate = req->best_parent_rate; in clk_frac_determine_rate() local 55 if (req->rate > parent_rate) in clk_frac_determine_rate() 60 do_div(tmp, parent_rate); in clk_frac_determine_rate() 66 tmp_rate = (u64)parent_rate * div; in clk_frac_determine_rate() 76 unsigned long parent_rate) in clk_frac_set_rate() argument 83 if (rate > parent_rate) in clk_frac_set_rate() 88 do_div(tmp, parent_rate); in clk_frac_set_rate()
|