Lines Matching refs:main_cfg
103 static int of_get_clk_cfg(const void *blob, struct mainpll_cfg *main_cfg, in of_get_clk_cfg() argument
136 sizeof(*main_cfg)/sizeof(u32), in of_get_clk_cfg()
137 main_cfg)) in of_get_clk_cfg()
150 main_cfg->mpuclk = altrgrp_cfg->mpuclk; in of_get_clk_cfg()
151 main_cfg->nocclk = altrgrp_cfg->nocclk; in of_get_clk_cfg()
166 (struct mainpll_cfg *main_cfg) in cm_calc_handoff_main_vco_clk_hz() argument
171 switch (main_cfg->vco0_psrc) { in cm_calc_handoff_main_vco_clk_hz()
186 clk_hz /= 1 + main_cfg->vco1_denom; in cm_calc_handoff_main_vco_clk_hz()
187 clk_hz *= 1 + main_cfg->vco1_numer; in cm_calc_handoff_main_vco_clk_hz()
194 struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg) in cm_calc_handoff_periph_vco_clk_hz() argument
210 clk_hz = cm_calc_handoff_main_vco_clk_hz(main_cfg); in cm_calc_handoff_periph_vco_clk_hz()
211 clk_hz /= main_cfg->cntr15clk_cnt; in cm_calc_handoff_periph_vco_clk_hz()
225 static unsigned int cm_calc_handoff_mpu_clk_hz(struct mainpll_cfg *main_cfg, in cm_calc_handoff_mpu_clk_hz() argument
231 switch (main_cfg->mpuclk_src) { in cm_calc_handoff_mpu_clk_hz()
233 clk_hz = cm_calc_handoff_main_vco_clk_hz(main_cfg); in cm_calc_handoff_mpu_clk_hz()
234 clk_hz /= (main_cfg->mpuclk & CLKMGR_MAINPLL_MPUCLK_CNT_MSK) in cm_calc_handoff_mpu_clk_hz()
238 clk_hz = cm_calc_handoff_periph_vco_clk_hz(main_cfg, per_cfg); in cm_calc_handoff_mpu_clk_hz()
239 clk_hz /= ((main_cfg->mpuclk >> in cm_calc_handoff_mpu_clk_hz()
256 clk_hz /= main_cfg->mpuclk_cnt + 1; in cm_calc_handoff_mpu_clk_hz()
261 static unsigned int cm_calc_handoff_noc_clk_hz(struct mainpll_cfg *main_cfg, in cm_calc_handoff_noc_clk_hz() argument
267 switch (main_cfg->nocclk_src) { in cm_calc_handoff_noc_clk_hz()
269 clk_hz = cm_calc_handoff_main_vco_clk_hz(main_cfg); in cm_calc_handoff_noc_clk_hz()
270 clk_hz /= (main_cfg->nocclk & CLKMGR_MAINPLL_NOCCLK_CNT_MSK) in cm_calc_handoff_noc_clk_hz()
274 clk_hz = cm_calc_handoff_periph_vco_clk_hz(main_cfg, per_cfg); in cm_calc_handoff_noc_clk_hz()
275 clk_hz /= ((main_cfg->nocclk >> in cm_calc_handoff_noc_clk_hz()
292 clk_hz /= main_cfg->nocclk_cnt + 1; in cm_calc_handoff_noc_clk_hz()
298 struct mainpll_cfg *main_cfg, in cm_is_pll_ramp_required() argument
307 if (main_cfg->mpuclk_src != CLKMGR_MAINPLL_MPUCLK_SRC_MAIN && in cm_is_pll_ramp_required()
308 main_cfg->nocclk_src != CLKMGR_MAINPLL_NOCCLK_SRC_MAIN) in cm_is_pll_ramp_required()
315 if (main_cfg->mpuclk_src == CLKMGR_MAINPLL_MPUCLK_SRC_MAIN && in cm_is_pll_ramp_required()
316 (cm_calc_handoff_mpu_clk_hz(main_cfg, per_cfg) > in cm_is_pll_ramp_required()
324 if (main_cfg->nocclk_src == CLKMGR_MAINPLL_NOCCLK_SRC_MAIN && in cm_is_pll_ramp_required()
325 (cm_calc_handoff_noc_clk_hz(main_cfg, per_cfg) > in cm_is_pll_ramp_required()
334 if (main_cfg->mpuclk_src != CLKMGR_MAINPLL_MPUCLK_SRC_PERI && in cm_is_pll_ramp_required()
335 main_cfg->nocclk_src != CLKMGR_MAINPLL_NOCCLK_SRC_PERI) in cm_is_pll_ramp_required()
342 if (main_cfg->mpuclk_src == CLKMGR_MAINPLL_MPUCLK_SRC_PERI && in cm_is_pll_ramp_required()
343 (cm_calc_handoff_mpu_clk_hz(main_cfg, per_cfg) > in cm_is_pll_ramp_required()
351 if (main_cfg->nocclk_src == CLKMGR_MAINPLL_NOCCLK_SRC_PERI && in cm_is_pll_ramp_required()
352 (cm_calc_handoff_noc_clk_hz(main_cfg, per_cfg) > in cm_is_pll_ramp_required()
360 static u32 cm_calculate_numer(struct mainpll_cfg *main_cfg, in cm_calculate_numer() argument
370 if (main_cfg->mpuclk_src == CLKMGR_MAINPLL_MPUCLK_SRC_MAIN) { in cm_calculate_numer()
371 cnt = main_cfg->mpuclk_cnt; in cm_calculate_numer()
372 clk = main_cfg->mpuclk; in cm_calculate_numer()
375 denom = main_cfg->vco1_denom; in cm_calculate_numer()
376 } else if (main_cfg->nocclk_src == CLKMGR_MAINPLL_NOCCLK_SRC_MAIN) { in cm_calculate_numer()
377 cnt = main_cfg->nocclk_cnt; in cm_calculate_numer()
378 clk = main_cfg->nocclk; in cm_calculate_numer()
381 denom = main_cfg->vco1_denom; in cm_calculate_numer()
382 } else if (main_cfg->mpuclk_src == CLKMGR_MAINPLL_MPUCLK_SRC_PERI) { in cm_calculate_numer()
383 cnt = main_cfg->mpuclk_cnt; in cm_calculate_numer()
384 clk = main_cfg->mpuclk; in cm_calculate_numer()
388 } else if (main_cfg->nocclk_src == CLKMGR_MAINPLL_NOCCLK_SRC_PERI) { in cm_calculate_numer()
389 cnt = main_cfg->nocclk_cnt; in cm_calculate_numer()
390 clk = main_cfg->nocclk; in cm_calculate_numer()
411 struct mainpll_cfg *main_cfg, in cm_calc_safe_pll_numer() argument
420 switch (main_cfg->vco0_psrc) { in cm_calc_safe_pll_numer()
446 clk_hz = cm_calc_handoff_main_vco_clk_hz(main_cfg); in cm_calc_safe_pll_numer()
447 clk_hz /= main_cfg->cntr15clk_cnt; in cm_calc_safe_pll_numer()
456 return cm_calculate_numer(main_cfg, per_cfg, safe_hz, clk_hz); in cm_calc_safe_pll_numer()
460 static void cm_pll_ramp_main(struct mainpll_cfg *main_cfg, in cm_pll_ramp_main() argument
467 if (main_cfg->mpuclk_src == CLKMGR_MAINPLL_MPUCLK_SRC_MAIN) { in cm_pll_ramp_main()
469 clk_final_hz = cm_calc_handoff_mpu_clk_hz(main_cfg, per_cfg); in cm_pll_ramp_main()
470 } else if (main_cfg->nocclk_src == CLKMGR_MAINPLL_NOCCLK_SRC_MAIN) { in cm_pll_ramp_main()
472 clk_final_hz = cm_calc_handoff_noc_clk_hz(main_cfg, per_cfg); in cm_pll_ramp_main()
478 writel((main_cfg->vco1_denom << in cm_pll_ramp_main()
480 cm_calc_safe_pll_numer(0, main_cfg, per_cfg, clk_hz), in cm_pll_ramp_main()
485 writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) | in cm_pll_ramp_main()
486 main_cfg->vco1_numer, &clock_manager_base->main_pll.vco1); in cm_pll_ramp_main()
492 static void cm_pll_ramp_periph(struct mainpll_cfg *main_cfg, in cm_pll_ramp_periph() argument
499 if (main_cfg->mpuclk_src == CLKMGR_MAINPLL_MPUCLK_SRC_PERI) { in cm_pll_ramp_periph()
501 clk_final_hz = cm_calc_handoff_mpu_clk_hz(main_cfg, per_cfg); in cm_pll_ramp_periph()
502 } else if (main_cfg->nocclk_src == CLKMGR_MAINPLL_NOCCLK_SRC_PERI) { in cm_pll_ramp_periph()
504 clk_final_hz = cm_calc_handoff_noc_clk_hz(main_cfg, per_cfg); in cm_pll_ramp_periph()
510 cm_calc_safe_pll_numer(1, main_cfg, per_cfg, clk_hz), in cm_pll_ramp_periph()
560 static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg) in cm_full_cfg() argument
586 (main_cfg->vco0_psrc << CLKMGR_MAINPLL_VCO0_PSRC_LSB), in cm_full_cfg()
609 ramp_required = cm_is_pll_ramp_required(0, main_cfg, per_cfg); in cm_full_cfg()
617 writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) | in cm_full_cfg()
618 cm_calc_safe_pll_numer(0, main_cfg, per_cfg, in cm_full_cfg()
622 writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) | in cm_full_cfg()
623 main_cfg->vco1_numer, in cm_full_cfg()
627 ramp_required = cm_is_pll_ramp_required(1, main_cfg, per_cfg); in cm_full_cfg()
638 cm_calc_safe_pll_numer(1, main_cfg, per_cfg, in cm_full_cfg()
671 writel(main_cfg->nocclk, in cm_full_cfg()
673 writel(main_cfg->mpuclk, in cm_full_cfg()
677 writel(main_cfg->cntr2clk_cnt, &clock_manager_base->main_pll.cntr2clk); in cm_full_cfg()
679 writel(main_cfg->cntr3clk_cnt, &clock_manager_base->main_pll.cntr3clk); in cm_full_cfg()
681 writel(main_cfg->cntr4clk_cnt, &clock_manager_base->main_pll.cntr4clk); in cm_full_cfg()
683 writel(main_cfg->cntr5clk_cnt, &clock_manager_base->main_pll.cntr5clk); in cm_full_cfg()
685 writel(main_cfg->cntr6clk_cnt, &clock_manager_base->main_pll.cntr6clk); in cm_full_cfg()
687 writel(main_cfg->cntr7clk_cnt | in cm_full_cfg()
688 (main_cfg->cntr7clk_src << CLKMGR_MAINPLL_CNTR7CLK_SRC_LSB), in cm_full_cfg()
691 writel(main_cfg->cntr8clk_cnt, &clock_manager_base->main_pll.cntr8clk); in cm_full_cfg()
693 writel(main_cfg->cntr9clk_cnt | in cm_full_cfg()
694 (main_cfg->cntr9clk_src << CLKMGR_MAINPLL_CNTR9CLK_SRC_LSB), in cm_full_cfg()
697 writel(main_cfg->cntr15clk_cnt, in cm_full_cfg()
732 writel(main_cfg->mpuclk_cnt | in cm_full_cfg()
733 (main_cfg->mpuclk_src << CLKMGR_MAINPLL_MPUCLK_SRC_LSB), in cm_full_cfg()
736 writel(main_cfg->nocclk_cnt | in cm_full_cfg()
737 (main_cfg->nocclk_src << CLKMGR_MAINPLL_NOCCLK_SRC_LSB), in cm_full_cfg()
740 writel(main_cfg->nocdiv_l4mainclk | in cm_full_cfg()
741 (main_cfg->nocdiv_l4mpclk << in cm_full_cfg()
743 (main_cfg->nocdiv_l4spclk << in cm_full_cfg()
745 (main_cfg->nocdiv_csatclk << in cm_full_cfg()
747 (main_cfg->nocdiv_cstraceclk << in cm_full_cfg()
749 (main_cfg->nocdiv_cspdbclk << in cm_full_cfg()
806 cm_pll_ramp_main(main_cfg, per_cfg, pll_ramp_main_hz); in cm_full_cfg()
808 cm_pll_ramp_periph(main_cfg, per_cfg, pll_ramp_periph_hz); in cm_full_cfg()
881 struct mainpll_cfg main_cfg; in cm_basic_init() local
887 memset(&main_cfg, 0, sizeof(main_cfg)); in cm_basic_init()
891 rval = of_get_clk_cfg(blob, &main_cfg, &per_cfg, &altrgrp_cfg); in cm_basic_init()
895 rval = cm_full_cfg(&main_cfg, &per_cfg); in cm_basic_init()