Lines Matching refs:ccu
26 static bool ccu_data_offsets_valid(struct ccu_data *ccu) in ccu_data_offsets_valid() argument
28 struct ccu_policy *ccu_policy = &ccu->policy; in ccu_data_offsets_valid()
31 limit = ccu->range - sizeof(u32); in ccu_data_offsets_valid()
37 ccu->name, ccu_policy->enable.offset, limit); in ccu_data_offsets_valid()
43 ccu->name, ccu_policy->control.offset, limit); in ccu_data_offsets_valid()
93 range = bcm_clk->ccu->range; in peri_clk_data_offsets_valid()
756 static void ccu_clks_teardown(struct ccu_data *ccu) in ccu_clks_teardown() argument
760 for (i = 0; i < ccu->clk_data.clk_num; i++) in ccu_clks_teardown()
761 kona_clk_teardown(ccu->clk_data.clks[i]); in ccu_clks_teardown()
762 kfree(ccu->clk_data.clks); in ccu_clks_teardown()
765 static void kona_ccu_teardown(struct ccu_data *ccu) in kona_ccu_teardown() argument
767 kfree(ccu->clk_data.clks); in kona_ccu_teardown()
768 ccu->clk_data.clks = NULL; in kona_ccu_teardown()
769 if (!ccu->base) in kona_ccu_teardown()
772 of_clk_del_provider(ccu->node); /* safe if never added */ in kona_ccu_teardown()
773 ccu_clks_teardown(ccu); in kona_ccu_teardown()
774 of_node_put(ccu->node); in kona_ccu_teardown()
775 ccu->node = NULL; in kona_ccu_teardown()
776 iounmap(ccu->base); in kona_ccu_teardown()
777 ccu->base = NULL; in kona_ccu_teardown()
780 static bool ccu_data_valid(struct ccu_data *ccu) in ccu_data_valid() argument
784 if (!ccu_data_offsets_valid(ccu)) in ccu_data_valid()
787 ccu_policy = &ccu->policy; in ccu_data_valid()
789 if (!ccu_policy_valid(ccu_policy, ccu->name)) in ccu_data_valid()
799 void __init kona_dt_ccu_setup(struct ccu_data *ccu, in kona_dt_ccu_setup() argument
807 if (ccu->clk_data.clk_num) { in kona_dt_ccu_setup()
810 size = ccu->clk_data.clk_num * sizeof(*ccu->clk_data.clks); in kona_dt_ccu_setup()
811 ccu->clk_data.clks = kzalloc(size, GFP_KERNEL); in kona_dt_ccu_setup()
812 if (!ccu->clk_data.clks) { in kona_dt_ccu_setup()
814 __func__, ccu->clk_data.clk_num, node->name); in kona_dt_ccu_setup()
833 ccu->range = (u32)range; in kona_dt_ccu_setup()
835 if (!ccu_data_valid(ccu)) { in kona_dt_ccu_setup()
840 ccu->base = ioremap(res.start, ccu->range); in kona_dt_ccu_setup()
841 if (!ccu->base) { in kona_dt_ccu_setup()
846 ccu->node = of_node_get(node); in kona_dt_ccu_setup()
853 for (i = 0; i < ccu->clk_data.clk_num; i++) { in kona_dt_ccu_setup()
854 if (!ccu->kona_clks[i].ccu) in kona_dt_ccu_setup()
856 ccu->clk_data.clks[i] = kona_clk_setup(&ccu->kona_clks[i]); in kona_dt_ccu_setup()
859 ret = of_clk_add_provider(node, of_clk_src_onecell_get, &ccu->clk_data); in kona_dt_ccu_setup()
866 if (!kona_ccu_init(ccu)) in kona_dt_ccu_setup()
871 kona_ccu_teardown(ccu); in kona_dt_ccu_setup()