Lines Matching refs:rate
22 u64 rate = parent;
24 rate *= n;
25 do_div(rate, m);
27 return rate;
30 static void ccu_nm_find_best(unsigned long parent, unsigned long rate,
42 if (tmp_rate > rate)
45 if ((rate - tmp_rate) < (rate - best_rate)) {
82 unsigned long rate;
87 rate = ccu_frac_helper_read_rate(&nm->common, &nm->frac);
90 rate /= nm->fixed_post_div;
92 return rate;
110 rate = ccu_sdm_helper_read_rate(&nm->common, &nm->sdm, m, n);
112 rate = ccu_nm_calc_rate(parent_rate, n, m);
115 rate /= nm->fixed_post_div;
117 return rate;
120 static long ccu_nm_round_rate(struct clk_hw *hw, unsigned long rate,
127 rate *= nm->fixed_post_div;
129 if (rate < nm->min_rate) {
130 rate = nm->min_rate;
132 rate /= nm->fixed_post_div;
133 return rate;
136 if (nm->max_rate && rate > nm->max_rate) {
137 rate = nm->max_rate;
139 rate /= nm->fixed_post_div;
140 return rate;
143 if (ccu_frac_helper_has_rate(&nm->common, &nm->frac, rate)) {
145 rate /= nm->fixed_post_div;
146 return rate;
149 if (ccu_sdm_helper_has_rate(&nm->common, &nm->sdm, rate)) {
151 rate /= nm->fixed_post_div;
152 return rate;
160 ccu_nm_find_best(*parent_rate, rate, &_nm);
161 rate = ccu_nm_calc_rate(*parent_rate, _nm.n, _nm.m);
164 rate /= nm->fixed_post_div;
166 return rate;
169 static int ccu_nm_set_rate(struct clk_hw *hw, unsigned long rate,
177 /* Adjust target rate according to post-dividers */
179 rate = rate * nm->fixed_post_div;
181 if (ccu_frac_helper_has_rate(&nm->common, &nm->frac, rate)) {
194 rate, nm->lock);
204 if (ccu_sdm_helper_has_rate(&nm->common, &nm->sdm, rate)) {
205 ccu_sdm_helper_enable(&nm->common, &nm->sdm, rate);
208 ccu_sdm_helper_get_factors(&nm->common, &nm->sdm, rate,
212 ccu_nm_find_best(parent_rate, rate, &_nm);