Lines Matching refs:req

33 static void sun4i_get_pll1_factors(struct factors_request *req)
38 div = req->rate / 6000000;
39 req->rate = 6000000 * div;
42 req->m = 0;
45 if (req->rate >= 768000000 || req->rate == 42000000 ||
46 req->rate == 54000000)
47 req->k = 1;
49 req->k = 0;
53 req->p = 3;
57 req->p = 2;
62 req->p = 1;
66 req->p = 0;
69 div <<= req->p;
70 div /= (req->k + 1);
71 req->n = div / 4;
80 static void sun6i_a31_get_pll1_factors(struct factors_request *req)
86 u32 freq_mhz = req->rate / 1000000;
87 u32 parent_freq_mhz = req->parent_rate / 1000000;
101 req->rate = freq_mhz * 1000000;
105 req->k = 3;
108 req->k = 2;
111 req->k = 1;
114 req->k = 0;
125 req->m = 2;
131 req->m = 3;
134 req->m = 1;
137 req->n = freq_mhz * (req->m + 1) / ((req->k + 1) * parent_freq_mhz)
144 if ((req->n + 1) > 31 && (req->m + 1) > 1) {
145 req->n = (req->n + 1) / 2 - 1;
146 req->m = (req->m + 1) / 2 - 1;
157 static void sun8i_a23_get_pll1_factors(struct factors_request *req)
162 div = req->rate / 6000000;
163 req->rate = 6000000 * div;
166 req->m = 0;
169 if (req->rate >= 768000000 || req->rate == 42000000 ||
170 req->rate == 54000000)
171 req->k = 1;
173 req->k = 0;
177 req->p = 2;
182 req->p = 1;
186 req->p = 0;
189 div <<= req->p;
190 div /= (req->k + 1);
191 req->n = div / 4 - 1;
201 static void sun4i_get_pll5_factors(struct factors_request *req)
206 div = req->rate / req->parent_rate;
207 req->rate = req->parent_rate * div;
210 req->k = 0;
212 req->k = 1;
214 req->k = 2;
216 req->k = 3;
218 req->n = DIV_ROUND_UP(div, (req->k + 1));
228 static void sun6i_a31_get_pll6_factors(struct factors_request *req)
233 div = req->rate / req->parent_rate;
234 req->rate = req->parent_rate * div;
236 req->k = div / 32;
237 if (req->k > 3)
238 req->k = 3;
240 req->n = DIV_ROUND_UP(div, (req->k + 1)) - 1;
249 static void sun5i_a13_get_ahb_factors(struct factors_request *req)
254 if (req->parent_rate < req->rate)
255 req->rate = req->parent_rate;
261 if (req->rate < 8000)
262 req->rate = 8000;
263 if (req->rate > 300000000)
264 req->rate = 300000000;
266 div = order_base_2(DIV_ROUND_UP(req->parent_rate, req->rate));
272 req->rate = req->parent_rate >> div;
274 req->p = div;
288 static void sun6i_get_ahb1_factors(struct factors_request *req)
296 if (req->parent_rate && req->rate > req->parent_rate)
297 req->rate = req->parent_rate;
299 div = DIV_ROUND_UP(req->parent_rate, req->rate);
302 if (req->parent_index == SUN6I_AHB1_PARENT_PLL6) {
318 req->rate = (req->parent_rate / calcm) >> calcp;
319 req->p = calcp;
320 req->m = calcm - 1;
327 static void sun6i_ahb1_recalc(struct factors_request *req)
329 req->rate = req->parent_rate;
332 if (req->parent_index == SUN6I_AHB1_PARENT_PLL6)
333 req->rate /= req->m + 1;
336 req->rate >>= req->p;
345 static void sun4i_get_apb1_factors(struct factors_request *req)
350 if (req->parent_rate < req->rate)
351 req->rate = req->parent_rate;
353 div = DIV_ROUND_UP(req->parent_rate, req->rate);
370 req->rate = (req->parent_rate >> calcp) / (calcm + 1);
371 req->m = calcm;
372 req->p = calcp;
384 static void sun7i_a20_get_out_factors(struct factors_request *req)
390 if (req->rate > req->parent_rate)
391 req->rate = req->parent_rate;
393 div = DIV_ROUND_UP(req->parent_rate, req->rate);
406 req->rate = (req->parent_rate >> calcp) / calcm;
407 req->m = calcm - 1;
408 req->p = calcp;
1136 static void sun6i_display_factors(struct factors_request *req)
1140 if (req->rate > req->parent_rate)
1141 req->rate = req->parent_rate;
1143 m = DIV_ROUND_UP(req->parent_rate, req->rate);
1145 req->rate = req->parent_rate / m;
1146 req->m = m - 1;