Lines Matching refs:rate
22 u64 rate = parent;
24 rate *= n;
25 do_div(rate, m);
27 return rate;
31 unsigned long rate, struct _ccu_nm *nm)
42 if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) {
81 unsigned long rate;
86 rate = ccu_frac_helper_read_rate(&nm->common, &nm->frac);
89 rate /= nm->fixed_post_div;
91 return rate;
109 rate = ccu_sdm_helper_read_rate(&nm->common, &nm->sdm, m, n);
111 rate = ccu_nm_calc_rate(parent_rate, n, m);
114 rate /= nm->fixed_post_div;
116 return rate;
119 static long ccu_nm_round_rate(struct clk_hw *hw, unsigned long rate,
126 rate *= nm->fixed_post_div;
128 if (rate < nm->min_rate) {
129 rate = nm->min_rate;
131 rate /= nm->fixed_post_div;
132 return rate;
135 if (nm->max_rate && rate > nm->max_rate) {
136 rate = nm->max_rate;
138 rate /= nm->fixed_post_div;
139 return rate;
142 if (ccu_frac_helper_has_rate(&nm->common, &nm->frac, rate)) {
144 rate /= nm->fixed_post_div;
145 return rate;
148 if (ccu_sdm_helper_has_rate(&nm->common, &nm->sdm, rate)) {
150 rate /= nm->fixed_post_div;
151 return rate;
159 rate = ccu_nm_find_best(&nm->common, *parent_rate, rate, &_nm);
162 rate /= nm->fixed_post_div;
164 return rate;
167 static int ccu_nm_set_rate(struct clk_hw *hw, unsigned long rate,
175 /* Adjust target rate according to post-dividers */
177 rate = rate * nm->fixed_post_div;
179 if (ccu_frac_helper_has_rate(&nm->common, &nm->frac, rate)) {
192 rate, nm->lock);
202 if (ccu_sdm_helper_has_rate(&nm->common, &nm->sdm, rate)) {
203 ccu_sdm_helper_enable(&nm->common, &nm->sdm, rate);
206 ccu_sdm_helper_get_factors(&nm->common, &nm->sdm, rate,
210 ccu_nm_find_best(&nm->common, parent_rate, rate, &_nm);