• Home
  • Raw
  • Download

Lines Matching full:rate

25 	u64 rate = parent;  in ccu_nm_calc_rate()  local
27 rate *= n; in ccu_nm_calc_rate()
28 do_div(rate, m); in ccu_nm_calc_rate()
30 return rate; in ccu_nm_calc_rate()
33 static void ccu_nm_find_best(unsigned long parent, unsigned long rate, in ccu_nm_find_best() argument
45 if (tmp_rate > rate) in ccu_nm_find_best()
48 if ((rate - tmp_rate) < (rate - best_rate)) { in ccu_nm_find_best()
85 unsigned long rate; in ccu_nm_recalc_rate() local
90 rate = ccu_frac_helper_read_rate(&nm->common, &nm->frac); in ccu_nm_recalc_rate()
93 rate /= nm->fixed_post_div; in ccu_nm_recalc_rate()
95 return rate; in ccu_nm_recalc_rate()
113 rate = ccu_sdm_helper_read_rate(&nm->common, &nm->sdm, m, n); in ccu_nm_recalc_rate()
115 rate = ccu_nm_calc_rate(parent_rate, n, m); in ccu_nm_recalc_rate()
118 rate /= nm->fixed_post_div; in ccu_nm_recalc_rate()
120 return rate; in ccu_nm_recalc_rate()
123 static long ccu_nm_round_rate(struct clk_hw *hw, unsigned long rate, in ccu_nm_round_rate() argument
130 rate *= nm->fixed_post_div; in ccu_nm_round_rate()
132 if (rate < nm->min_rate) { in ccu_nm_round_rate()
133 rate = nm->min_rate; in ccu_nm_round_rate()
135 rate /= nm->fixed_post_div; in ccu_nm_round_rate()
136 return rate; in ccu_nm_round_rate()
139 if (ccu_frac_helper_has_rate(&nm->common, &nm->frac, rate)) { in ccu_nm_round_rate()
141 rate /= nm->fixed_post_div; in ccu_nm_round_rate()
142 return rate; in ccu_nm_round_rate()
145 if (ccu_sdm_helper_has_rate(&nm->common, &nm->sdm, rate)) { in ccu_nm_round_rate()
147 rate /= nm->fixed_post_div; in ccu_nm_round_rate()
148 return rate; in ccu_nm_round_rate()
156 ccu_nm_find_best(*parent_rate, rate, &_nm); in ccu_nm_round_rate()
157 rate = ccu_nm_calc_rate(*parent_rate, _nm.n, _nm.m); in ccu_nm_round_rate()
160 rate /= nm->fixed_post_div; in ccu_nm_round_rate()
162 return rate; in ccu_nm_round_rate()
165 static int ccu_nm_set_rate(struct clk_hw *hw, unsigned long rate, in ccu_nm_set_rate() argument
173 /* Adjust target rate according to post-dividers */ in ccu_nm_set_rate()
175 rate = rate * nm->fixed_post_div; in ccu_nm_set_rate()
177 if (ccu_frac_helper_has_rate(&nm->common, &nm->frac, rate)) { in ccu_nm_set_rate()
190 rate, nm->lock); in ccu_nm_set_rate()
200 if (ccu_sdm_helper_has_rate(&nm->common, &nm->sdm, rate)) { in ccu_nm_set_rate()
201 ccu_sdm_helper_enable(&nm->common, &nm->sdm, rate); in ccu_nm_set_rate()
204 ccu_sdm_helper_get_factors(&nm->common, &nm->sdm, rate, in ccu_nm_set_rate()
208 ccu_nm_find_best(parent_rate, rate, &_nm); in ccu_nm_set_rate()