Lines Matching full:pll

56 	struct clk_pll *pll = to_clk_pll(hw);  in clk_pll_prepare()  local
57 struct regmap *regmap = pll->regmap; in clk_pll_prepare()
58 const struct clk_pll_layout *layout = pll->layout; in clk_pll_prepare()
60 pll->characteristics; in clk_pll_prepare()
61 u8 id = pll->id; in clk_pll_prepare()
76 (div == pll->div && mul == pll->mul)) in clk_pll_prepare()
80 out = characteristics->out[pll->range]; in clk_pll_prepare()
84 characteristics->icpll[pll->range] << PLL_ICPR_SHIFT(id)); in clk_pll_prepare()
87 pll->div | (PLL_MAX_COUNT << PLL_COUNT_SHIFT) | in clk_pll_prepare()
89 ((pll->mul & layout->mul_mask) << layout->mul_shift)); in clk_pll_prepare()
91 while (!clk_pll_ready(regmap, pll->id)) in clk_pll_prepare()
99 struct clk_pll *pll = to_clk_pll(hw); in clk_pll_is_prepared() local
101 return clk_pll_ready(pll->regmap, pll->id); in clk_pll_is_prepared()
106 struct clk_pll *pll = to_clk_pll(hw); in clk_pll_unprepare() local
107 unsigned int mask = pll->layout->pllr_mask; in clk_pll_unprepare()
109 regmap_update_bits(pll->regmap, PLL_REG(pll->id), mask, ~mask); in clk_pll_unprepare()
115 struct clk_pll *pll = to_clk_pll(hw); in clk_pll_recalc_rate() local
117 if (!pll->div || !pll->mul) in clk_pll_recalc_rate()
120 return (parent_rate / pll->div) * (pll->mul + 1); in clk_pll_recalc_rate()
123 static long clk_pll_get_best_div_mul(struct clk_pll *pll, unsigned long rate, in clk_pll_get_best_div_mul() argument
127 const struct clk_pll_layout *layout = pll->layout; in clk_pll_get_best_div_mul()
129 pll->characteristics; in clk_pll_get_best_div_mul()
145 * of the PLL blocks. in clk_pll_get_best_div_mul()
161 * Calculate the maximum divider which is limited by PLL register in clk_pll_get_best_div_mul()
236 struct clk_pll *pll = to_clk_pll(hw); in clk_pll_round_rate() local
238 return clk_pll_get_best_div_mul(pll, rate, *parent_rate, in clk_pll_round_rate()
245 struct clk_pll *pll = to_clk_pll(hw); in clk_pll_set_rate() local
251 ret = clk_pll_get_best_div_mul(pll, rate, parent_rate, in clk_pll_set_rate()
256 pll->range = index; in clk_pll_set_rate()
257 pll->div = div; in clk_pll_set_rate()
258 pll->mul = mul; in clk_pll_set_rate()
278 struct clk_pll *pll; in at91_clk_register_pll() local
288 pll = kzalloc(sizeof(*pll), GFP_KERNEL); in at91_clk_register_pll()
289 if (!pll) in at91_clk_register_pll()
298 pll->id = id; in at91_clk_register_pll()
299 pll->hw.init = &init; in at91_clk_register_pll()
300 pll->layout = layout; in at91_clk_register_pll()
301 pll->characteristics = characteristics; in at91_clk_register_pll()
302 pll->regmap = regmap; in at91_clk_register_pll()
304 pll->div = PLL_DIV(pllr); in at91_clk_register_pll()
305 pll->mul = PLL_MUL(pllr, layout); in at91_clk_register_pll()
307 hw = &pll->hw; in at91_clk_register_pll()
308 ret = clk_hw_register(NULL, &pll->hw); in at91_clk_register_pll()
310 kfree(pll); in at91_clk_register_pll()