Lines Matching full:rate

166  * calc_rate() - Calculate rate based on m/n:d values
168 * @rate: Parent rate.
175 * Return calculated rate according to formula:
178 * rate = ----------- x ---
182 calc_rate(unsigned long rate, u32 m, u32 n, u32 mode, u32 hid_div) in calc_rate() argument
185 rate = mult_frac(rate, 2, hid_div + 1); in calc_rate()
188 rate = mult_frac(rate, m, n); in calc_rate()
190 return rate; in calc_rate()
233 unsigned long clk_flags, rate = req->rate; in _freq_tbl_determine_rate() local
240 f = qcom_find_freq_floor(f, rate); in _freq_tbl_determine_rate()
243 f = qcom_find_freq(f, rate); in _freq_tbl_determine_rate()
262 rate = f->freq; in _freq_tbl_determine_rate()
264 if (!rate) in _freq_tbl_determine_rate()
265 rate = req->rate; in _freq_tbl_determine_rate()
266 rate /= 2; in _freq_tbl_determine_rate()
267 rate *= f->pre_div + 1; in _freq_tbl_determine_rate()
271 u64 tmp = rate; in _freq_tbl_determine_rate()
274 rate = tmp; in _freq_tbl_determine_rate()
277 rate = clk_hw_get_rate(p); in _freq_tbl_determine_rate()
280 req->best_parent_rate = rate; in _freq_tbl_determine_rate()
281 req->rate = f->freq; in _freq_tbl_determine_rate()
294 unsigned long parent_rate, rate; in __clk_rcg2_select_conf() local
304 /* Search in each provided config the one that is near the wanted rate */ 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()
317 if (rate == req_rate) { in __clk_rcg2_select_conf()
322 rate_diff = abs_diff(req_rate, rate); in __clk_rcg2_select_conf()
334 WARN(1, "%s: can't find a configuration for rate %lu\n", in __clk_rcg2_select_conf()
346 unsigned long clk_flags, rate = req->rate; in _freq_tbl_fm_determine_rate() local
352 f = qcom_find_freq_multi(f, rate); in _freq_tbl_fm_determine_rate()
356 conf = __clk_rcg2_select_conf(hw, f, rate); in _freq_tbl_fm_determine_rate()
369 rate = f->freq; in _freq_tbl_fm_determine_rate()
371 if (!rate) in _freq_tbl_fm_determine_rate()
372 rate = req->rate; in _freq_tbl_fm_determine_rate()
373 rate /= 2; in _freq_tbl_fm_determine_rate()
374 rate *= conf->pre_div + 1; in _freq_tbl_fm_determine_rate()
378 u64 tmp = rate; in _freq_tbl_fm_determine_rate()
382 rate = tmp; in _freq_tbl_fm_determine_rate()
385 rate = clk_hw_get_rate(p); in _freq_tbl_fm_determine_rate()
389 req->best_parent_rate = rate; in _freq_tbl_fm_determine_rate()
390 req->rate = f->freq; in _freq_tbl_fm_determine_rate()
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()
443 m = div64_u64(rate, rates_gcd); in clk_rcg2_calc_mnd()
496 clk_rcg2_calc_mnd(parent_rate, req->rate, f, mnd_max, hid_max / 2); in clk_rcg2_determine_gp_rate()
498 req->rate = calc_rate(parent_rate, f->m, f->n, f->n, f->pre_div); in clk_rcg2_determine_gp_rate()
620 static int __clk_rcg2_set_rate(struct clk_hw *hw, unsigned long rate, in __clk_rcg2_set_rate() argument
628 f = qcom_find_freq_floor(rcg->freq_tbl, rate); in __clk_rcg2_set_rate()
631 f = qcom_find_freq(rcg->freq_tbl, rate); in __clk_rcg2_set_rate()
643 static int __clk_rcg2_fm_set_rate(struct clk_hw *hw, unsigned long rate) in __clk_rcg2_fm_set_rate() argument
650 f = qcom_find_freq_multi(rcg->freq_multi_tbl, rate); in __clk_rcg2_fm_set_rate()
654 conf = __clk_rcg2_select_conf(hw, f, rate); in __clk_rcg2_fm_set_rate()
667 static int clk_rcg2_set_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_set_rate() argument
670 return __clk_rcg2_set_rate(hw, rate, CEIL); in clk_rcg2_set_rate()
673 static int clk_rcg2_set_gp_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_set_gp_rate() argument
682 clk_rcg2_calc_mnd(parent_rate, rate, f, mnd_max, hid_max / 2); in clk_rcg2_set_gp_rate()
689 static int clk_rcg2_set_floor_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_set_floor_rate() argument
692 return __clk_rcg2_set_rate(hw, rate, FLOOR); in clk_rcg2_set_floor_rate()
695 static int clk_rcg2_fm_set_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_fm_set_rate() argument
698 return __clk_rcg2_fm_set_rate(hw, rate); in clk_rcg2_fm_set_rate()
702 unsigned long rate, unsigned long parent_rate, u8 index) in clk_rcg2_set_rate_and_parent() argument
704 return __clk_rcg2_set_rate(hw, rate, CEIL); in clk_rcg2_set_rate_and_parent()
708 unsigned long rate, unsigned long parent_rate, u8 index) in clk_rcg2_set_floor_rate_and_parent() argument
710 return __clk_rcg2_set_rate(hw, rate, FLOOR); in clk_rcg2_set_floor_rate_and_parent()
714 unsigned long rate, unsigned long parent_rate, u8 index) in clk_rcg2_fm_set_rate_and_parent() argument
716 return __clk_rcg2_fm_set_rate(hw, rate); in clk_rcg2_fm_set_rate_and_parent()
866 static const struct frac_entry frac_table_675m[] = { /* link rate of 270M */
877 static struct frac_entry frac_table_810m[] = { /* Link rate of 162M */
888 static int clk_edp_pixel_set_rate(struct clk_hw *hw, unsigned long rate, in clk_edp_pixel_set_rate() argument
906 request = rate; in clk_edp_pixel_set_rate()
928 unsigned long rate, unsigned long parent_rate, u8 index) in clk_edp_pixel_set_rate_and_parent() argument
931 return clk_edp_pixel_set_rate(hw, rate, parent_rate); in clk_edp_pixel_set_rate_and_parent()
956 request = req->rate; in clk_edp_pixel_determine_rate()
968 req->rate = calc_rate(req->best_parent_rate, in clk_edp_pixel_determine_rate()
998 if (req->rate == 0) in clk_byte_determine_rate()
1002 req->best_parent_rate = parent_rate = clk_hw_round_rate(p, req->rate); in clk_byte_determine_rate()
1004 div = DIV_ROUND_UP((2 * parent_rate), req->rate) - 1; in clk_byte_determine_rate()
1007 req->rate = calc_rate(parent_rate, 0, 0, 0, div); in clk_byte_determine_rate()
1012 static int clk_byte_set_rate(struct clk_hw *hw, unsigned long rate, in clk_byte_set_rate() argument
1020 div = DIV_ROUND_UP((2 * parent_rate), rate) - 1; in clk_byte_set_rate()
1029 unsigned long rate, unsigned long parent_rate, u8 index) in clk_byte_set_rate_and_parent() argument
1032 return clk_byte_set_rate(hw, rate, parent_rate); in clk_byte_set_rate_and_parent()
1053 unsigned long rate = req->rate; in clk_byte2_determine_rate() local
1055 if (rate == 0) in clk_byte2_determine_rate()
1059 req->best_parent_rate = parent_rate = clk_hw_round_rate(p, rate); in clk_byte2_determine_rate()
1061 div = DIV_ROUND_UP((2 * parent_rate), rate) - 1; in clk_byte2_determine_rate()
1064 req->rate = calc_rate(parent_rate, 0, 0, 0, div); in clk_byte2_determine_rate()
1069 static int clk_byte2_set_rate(struct clk_hw *hw, unsigned long rate, in clk_byte2_set_rate() argument
1079 div = DIV_ROUND_UP((2 * parent_rate), rate) - 1; in clk_byte2_set_rate()
1099 unsigned long rate, unsigned long parent_rate, u8 index) in clk_byte2_set_rate_and_parent() argument
1102 return clk_byte2_set_rate(hw, rate, parent_rate); in clk_byte2_set_rate_and_parent()
1133 request = (req->rate * frac->den) / frac->num; in clk_pixel_determine_rate()
1141 req->rate = (src_rate * frac->num) / frac->den; in clk_pixel_determine_rate()
1148 static int clk_pixel_set_rate(struct clk_hw *hw, unsigned long rate, in clk_pixel_set_rate() argument
1171 request = (rate * frac->den) / frac->num; in clk_pixel_set_rate()
1190 static int clk_pixel_set_rate_and_parent(struct clk_hw *hw, unsigned long rate, in clk_pixel_set_rate_and_parent() argument
1193 return clk_pixel_set_rate(hw, rate, parent_rate); in clk_pixel_set_rate_and_parent()
1229 if (req->rate == clk_hw_get_rate(xo)) { in clk_gfx3d_determine_rate()
1237 parent_req.rate = req->rate * mux_div; in clk_gfx3d_determine_rate()
1239 /* This has to be a fixed rate PLL */ in clk_gfx3d_determine_rate()
1242 if (parent_req.rate == p0_rate) { in clk_gfx3d_determine_rate()
1243 req->rate = req->best_parent_rate = p0_rate; in clk_gfx3d_determine_rate()
1249 /* Are we going back to a previously used rate? */ in clk_gfx3d_determine_rate()
1250 if (clk_hw_get_rate(p2) == parent_req.rate) in clk_gfx3d_determine_rate()
1273 req->rate = req->best_parent_rate = parent_req.rate; in clk_gfx3d_determine_rate()
1274 req->rate /= mux_div; in clk_gfx3d_determine_rate()
1279 static int clk_gfx3d_set_rate_and_parent(struct clk_hw *hw, unsigned long rate, in clk_gfx3d_set_rate_and_parent() argument
1299 static int clk_gfx3d_set_rate(struct clk_hw *hw, unsigned long rate, in clk_gfx3d_set_rate() argument
1369 static int __clk_rcg2_shared_set_rate(struct clk_hw *hw, unsigned long rate, in __clk_rcg2_shared_set_rate() argument
1378 f = qcom_find_freq_floor(rcg->freq_tbl, rate); in __clk_rcg2_shared_set_rate()
1381 f = qcom_find_freq(rcg->freq_tbl, rate); in __clk_rcg2_shared_set_rate()
1398 static int clk_rcg2_shared_set_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_shared_set_rate() argument
1401 return __clk_rcg2_shared_set_rate(hw, rate, parent_rate, CEIL); in clk_rcg2_shared_set_rate()
1405 unsigned long rate, unsigned long parent_rate, u8 index) in clk_rcg2_shared_set_rate_and_parent() argument
1407 return __clk_rcg2_shared_set_rate(hw, rate, parent_rate, CEIL); in clk_rcg2_shared_set_rate_and_parent()
1410 static int clk_rcg2_shared_set_floor_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_shared_set_floor_rate() argument
1413 return __clk_rcg2_shared_set_rate(hw, rate, parent_rate, FLOOR); in clk_rcg2_shared_set_floor_rate()
1417 unsigned long rate, unsigned long parent_rate, u8 index) in clk_rcg2_shared_set_floor_rate_and_parent() argument
1419 return __clk_rcg2_shared_set_rate(hw, rate, parent_rate, FLOOR); in clk_rcg2_shared_set_floor_rate_and_parent()
1435 /* Write back the stored configuration corresponding to current rate */ in clk_rcg2_shared_enable()
1753 * Rate changes with consumer writing a register in in clk_rcg2_enable_dfs()
1779 static int clk_rcg2_dp_set_rate(struct clk_hw *hw, unsigned long rate, in clk_rcg2_dp_set_rate() argument
1789 rational_best_approximation(parent_rate, rate, in clk_rcg2_dp_set_rate()
1824 unsigned long rate, unsigned long parent_rate, u8 index) in clk_rcg2_dp_set_rate_and_parent() argument
1826 return clk_rcg2_dp_set_rate(hw, rate, parent_rate); in clk_rcg2_dp_set_rate_and_parent()
1836 /* Parent rate is a fixed phy link rate */ in clk_rcg2_dp_determine_rate()
1837 rational_best_approximation(req->best_parent_rate, req->rate, in clk_rcg2_dp_determine_rate()
1846 req->rate = tmp; in clk_rcg2_dp_determine_rate()