Lines Matching refs:ccu

18 static bool ccu_data_offsets_valid(struct ccu_data *ccu)
20 struct ccu_policy *ccu_policy = &ccu->policy;
23 limit = ccu->range - sizeof(u32);
29 ccu->name, ccu_policy->enable.offset, limit);
35 ccu->name, ccu_policy->control.offset, limit);
85 range = bcm_clk->ccu->range;
408 * where we need something from the ccu, so we do these
739 static void ccu_clks_teardown(struct ccu_data *ccu)
743 for (i = 0; i < ccu->clk_num; i++)
744 kona_clk_teardown(&ccu->kona_clks[i].hw);
747 static void kona_ccu_teardown(struct ccu_data *ccu)
749 if (!ccu->base)
752 of_clk_del_provider(ccu->node); /* safe if never added */
753 ccu_clks_teardown(ccu);
754 of_node_put(ccu->node);
755 ccu->node = NULL;
756 iounmap(ccu->base);
757 ccu->base = NULL;
760 static bool ccu_data_valid(struct ccu_data *ccu)
764 if (!ccu_data_offsets_valid(ccu))
767 ccu_policy = &ccu->policy;
769 if (!ccu_policy_valid(ccu_policy, ccu->name))
778 struct ccu_data *ccu = data;
781 if (idx >= ccu->clk_num) {
786 return &ccu->kona_clks[idx].hw;
793 void __init kona_dt_ccu_setup(struct ccu_data *ccu,
815 ccu->range = (u32)range;
817 if (!ccu_data_valid(ccu)) {
818 pr_err("%s: ccu data not valid for %pOFn\n", __func__, node);
822 ccu->base = ioremap(res.start, ccu->range);
823 if (!ccu->base) {
828 ccu->node = of_node_get(node);
832 * the clock framework clock array (in ccu->data). Then
835 for (i = 0; i < ccu->clk_num; i++) {
836 if (!ccu->kona_clks[i].ccu)
838 kona_clk_setup(&ccu->kona_clks[i]);
841 ret = of_clk_add_hw_provider(node, of_clk_kona_onecell_get, ccu);
843 pr_err("%s: error adding ccu %pOFn as provider (%d)\n", __func__,
848 if (!kona_ccu_init(ccu))
853 kona_ccu_teardown(ccu);