Lines Matching refs:core

40 	struct sam9x60_pll_core core;
46 struct sam9x60_pll_core core;
51 #define to_sam9x60_frac(core) container_of(core, struct sam9x60_frac, core)
52 #define to_sam9x60_div(core) container_of(core, struct sam9x60_div, core)
71 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
72 struct sam9x60_frac *frac = to_sam9x60_frac(core);
80 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
81 struct sam9x60_frac *frac = to_sam9x60_frac(core);
82 struct regmap *regmap = core->regmap;
86 spin_lock_irqsave(core->lock, flags);
89 AT91_PMC_PLL_UPDT_ID_MSK, core->id);
91 cmul = (val & core->layout->mul_mask) >> core->layout->mul_shift;
92 cfrac = (val & core->layout->frac_mask) >> core->layout->frac_shift;
94 if (sam9x60_frac_pll_ready(regmap, core->id) &&
99 if (core->characteristics->upll)
106 (frac->mul << core->layout->mul_shift) |
107 (frac->frac << core->layout->frac_shift));
109 if (core->characteristics->upll) {
125 AT91_PMC_PLL_UPDT_UPDATE | core->id);
133 AT91_PMC_PLL_UPDT_UPDATE | core->id);
135 while (!sam9x60_pll_ready(regmap, core->id))
139 spin_unlock_irqrestore(core->lock, flags);
146 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
147 struct regmap *regmap = core->regmap;
150 spin_lock_irqsave(core->lock, flags);
153 AT91_PMC_PLL_UPDT_ID_MSK, core->id);
157 if (core->characteristics->upll)
163 AT91_PMC_PLL_UPDT_UPDATE | core->id);
165 spin_unlock_irqrestore(core->lock, flags);
170 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
172 return sam9x60_pll_ready(core->regmap, core->id);
175 static long sam9x60_frac_pll_compute_mul_frac(struct sam9x60_pll_core *core,
180 struct sam9x60_frac *frac = to_sam9x60_frac(core);
219 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
221 return sam9x60_frac_pll_compute_mul_frac(core, rate, *parent_rate, false);
227 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
229 return sam9x60_frac_pll_compute_mul_frac(core, rate, parent_rate, true);
243 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
244 struct sam9x60_div *div = to_sam9x60_div(core);
245 struct regmap *regmap = core->regmap;
249 spin_lock_irqsave(core->lock, flags);
251 AT91_PMC_PLL_UPDT_ID_MSK, core->id);
253 cdiv = (val & core->layout->div_mask) >> core->layout->div_shift;
256 if (!!(val & core->layout->endiv_mask) && cdiv == div->div)
260 core->layout->div_mask | core->layout->endiv_mask,
261 (div->div << core->layout->div_shift) |
262 (1 << core->layout->endiv_shift));
266 AT91_PMC_PLL_UPDT_UPDATE | core->id);
268 while (!sam9x60_pll_ready(regmap, core->id))
272 spin_unlock_irqrestore(core->lock, flags);
279 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
280 struct regmap *regmap = core->regmap;
283 spin_lock_irqsave(core->lock, flags);
286 AT91_PMC_PLL_UPDT_ID_MSK, core->id);
289 core->layout->endiv_mask, 0);
293 AT91_PMC_PLL_UPDT_UPDATE | core->id);
295 spin_unlock_irqrestore(core->lock, flags);
300 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
301 struct regmap *regmap = core->regmap;
305 spin_lock_irqsave(core->lock, flags);
308 AT91_PMC_PLL_UPDT_ID_MSK, core->id);
311 spin_unlock_irqrestore(core->lock, flags);
313 return !!(val & core->layout->endiv_mask);
319 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
320 struct sam9x60_div *div = to_sam9x60_div(core);
325 static long sam9x60_div_pll_compute_div(struct sam9x60_pll_core *core,
330 core->characteristics;
331 struct clk_hw *parent = clk_hw_get_parent(&core->hw);
343 for (divid = 1; divid < core->layout->div_mask; divid++) {
371 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
373 return sam9x60_div_pll_compute_div(core, parent_rate, rate);
379 struct sam9x60_pll_core *core = to_sam9x60_pll_core(hw);
380 struct sam9x60_div *div = to_sam9x60_div(core);
425 frac->core.id = id;
426 frac->core.hw.init = &init;
427 frac->core.characteristics = characteristics;
428 frac->core.layout = layout;
429 frac->core.regmap = regmap;
430 frac->core.lock = lock;
432 spin_lock_irqsave(frac->core.lock, flags);
453 ret = sam9x60_frac_pll_compute_mul_frac(&frac->core, FCORE_MIN,
460 spin_unlock_irqrestore(frac->core.lock, flags);
462 hw = &frac->core.hw;
472 spin_unlock_irqrestore(frac->core.lock, flags);
506 div->core.id = id;
507 div->core.hw.init = &init;
508 div->core.characteristics = characteristics;
509 div->core.layout = layout;
510 div->core.regmap = regmap;
511 div->core.lock = lock;
513 spin_lock_irqsave(div->core.lock, flags);
520 spin_unlock_irqrestore(div->core.lock, flags);
522 hw = &div->core.hw;