Lines Matching refs:ccu

28 static bool ccu_data_offsets_valid(struct ccu_data *ccu)  in ccu_data_offsets_valid()  argument
30 struct ccu_policy *ccu_policy = &ccu->policy; in ccu_data_offsets_valid()
33 limit = ccu->range - sizeof(u32); in ccu_data_offsets_valid()
39 ccu->name, ccu_policy->enable.offset, limit); in ccu_data_offsets_valid()
45 ccu->name, ccu_policy->control.offset, limit); in ccu_data_offsets_valid()
95 range = bcm_clk->ccu->range; in peri_clk_data_offsets_valid()
758 static void ccu_clks_teardown(struct ccu_data *ccu) in ccu_clks_teardown() argument
762 for (i = 0; i < ccu->clk_data.clk_num; i++) in ccu_clks_teardown()
763 kona_clk_teardown(ccu->clk_data.clks[i]); in ccu_clks_teardown()
764 kfree(ccu->clk_data.clks); in ccu_clks_teardown()
767 static void kona_ccu_teardown(struct ccu_data *ccu) in kona_ccu_teardown() argument
769 kfree(ccu->clk_data.clks); in kona_ccu_teardown()
770 ccu->clk_data.clks = NULL; in kona_ccu_teardown()
771 if (!ccu->base) in kona_ccu_teardown()
774 of_clk_del_provider(ccu->node); /* safe if never added */ in kona_ccu_teardown()
775 ccu_clks_teardown(ccu); in kona_ccu_teardown()
776 list_del(&ccu->links); in kona_ccu_teardown()
777 of_node_put(ccu->node); in kona_ccu_teardown()
778 ccu->node = NULL; in kona_ccu_teardown()
779 iounmap(ccu->base); in kona_ccu_teardown()
780 ccu->base = NULL; in kona_ccu_teardown()
783 static bool ccu_data_valid(struct ccu_data *ccu) in ccu_data_valid() argument
787 if (!ccu_data_offsets_valid(ccu)) in ccu_data_valid()
790 ccu_policy = &ccu->policy; in ccu_data_valid()
792 if (!ccu_policy_valid(ccu_policy, ccu->name)) in ccu_data_valid()
802 void __init kona_dt_ccu_setup(struct ccu_data *ccu, in kona_dt_ccu_setup() argument
810 if (ccu->clk_data.clk_num) { in kona_dt_ccu_setup()
813 size = ccu->clk_data.clk_num * sizeof(*ccu->clk_data.clks); in kona_dt_ccu_setup()
814 ccu->clk_data.clks = kzalloc(size, GFP_KERNEL); in kona_dt_ccu_setup()
815 if (!ccu->clk_data.clks) { in kona_dt_ccu_setup()
817 __func__, ccu->clk_data.clk_num, node->name); in kona_dt_ccu_setup()
836 ccu->range = (u32)range; in kona_dt_ccu_setup()
838 if (!ccu_data_valid(ccu)) { in kona_dt_ccu_setup()
843 ccu->base = ioremap(res.start, ccu->range); in kona_dt_ccu_setup()
844 if (!ccu->base) { in kona_dt_ccu_setup()
849 ccu->node = of_node_get(node); in kona_dt_ccu_setup()
850 list_add_tail(&ccu->links, &ccu_list); in kona_dt_ccu_setup()
857 for (i = 0; i < ccu->clk_data.clk_num; i++) { in kona_dt_ccu_setup()
858 if (!ccu->kona_clks[i].ccu) in kona_dt_ccu_setup()
860 ccu->clk_data.clks[i] = kona_clk_setup(&ccu->kona_clks[i]); in kona_dt_ccu_setup()
863 ret = of_clk_add_provider(node, of_clk_src_onecell_get, &ccu->clk_data); in kona_dt_ccu_setup()
870 if (!kona_ccu_init(ccu)) in kona_dt_ccu_setup()
875 kona_ccu_teardown(ccu); in kona_dt_ccu_setup()