Lines Matching refs:clk_data

38 static void mtk_init_clk_data(struct clk_hw_onecell_data *clk_data,  in mtk_init_clk_data()  argument
43 clk_data->num = clk_num; in mtk_init_clk_data()
46 clk_data->hws[i] = ERR_PTR(-ENOENT); in mtk_init_clk_data()
52 struct clk_hw_onecell_data *clk_data; in mtk_devm_alloc_clk_data() local
54 clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, clk_num), in mtk_devm_alloc_clk_data()
56 if (!clk_data) in mtk_devm_alloc_clk_data()
59 mtk_init_clk_data(clk_data, clk_num); in mtk_devm_alloc_clk_data()
61 return clk_data; in mtk_devm_alloc_clk_data()
67 struct clk_hw_onecell_data *clk_data; in mtk_alloc_clk_data() local
69 clk_data = kzalloc(struct_size(clk_data, hws, clk_num), GFP_KERNEL); in mtk_alloc_clk_data()
70 if (!clk_data) in mtk_alloc_clk_data()
73 mtk_init_clk_data(clk_data, clk_num); in mtk_alloc_clk_data()
75 return clk_data; in mtk_alloc_clk_data()
79 void mtk_free_clk_data(struct clk_hw_onecell_data *clk_data) in mtk_free_clk_data() argument
81 kfree(clk_data); in mtk_free_clk_data()
86 struct clk_hw_onecell_data *clk_data) in mtk_clk_register_fixed_clks() argument
91 if (!clk_data) in mtk_clk_register_fixed_clks()
97 if (!IS_ERR_OR_NULL(clk_data->hws[rc->id])) { in mtk_clk_register_fixed_clks()
111 clk_data->hws[rc->id] = hw; in mtk_clk_register_fixed_clks()
120 if (IS_ERR_OR_NULL(clk_data->hws[rc->id])) in mtk_clk_register_fixed_clks()
123 clk_hw_unregister_fixed_rate(clk_data->hws[rc->id]); in mtk_clk_register_fixed_clks()
124 clk_data->hws[rc->id] = ERR_PTR(-ENOENT); in mtk_clk_register_fixed_clks()
132 struct clk_hw_onecell_data *clk_data) in mtk_clk_unregister_fixed_clks() argument
136 if (!clk_data) in mtk_clk_unregister_fixed_clks()
142 if (IS_ERR_OR_NULL(clk_data->hws[rc->id])) in mtk_clk_unregister_fixed_clks()
145 clk_hw_unregister_fixed_rate(clk_data->hws[rc->id]); in mtk_clk_unregister_fixed_clks()
146 clk_data->hws[rc->id] = ERR_PTR(-ENOENT); in mtk_clk_unregister_fixed_clks()
152 struct clk_hw_onecell_data *clk_data) in mtk_clk_register_factors() argument
157 if (!clk_data) in mtk_clk_register_factors()
163 if (!IS_ERR_OR_NULL(clk_data->hws[ff->id])) { in mtk_clk_register_factors()
177 clk_data->hws[ff->id] = hw; in mtk_clk_register_factors()
186 if (IS_ERR_OR_NULL(clk_data->hws[ff->id])) in mtk_clk_register_factors()
189 clk_hw_unregister_fixed_factor(clk_data->hws[ff->id]); in mtk_clk_register_factors()
190 clk_data->hws[ff->id] = ERR_PTR(-ENOENT); in mtk_clk_register_factors()
198 struct clk_hw_onecell_data *clk_data) in mtk_clk_unregister_factors() argument
202 if (!clk_data) in mtk_clk_unregister_factors()
208 if (IS_ERR_OR_NULL(clk_data->hws[ff->id])) in mtk_clk_unregister_factors()
211 clk_hw_unregister_fixed_factor(clk_data->hws[ff->id]); in mtk_clk_unregister_factors()
212 clk_data->hws[ff->id] = ERR_PTR(-ENOENT); in mtk_clk_unregister_factors()
331 struct clk_hw_onecell_data *clk_data) in mtk_clk_register_composites() argument
336 if (!clk_data) in mtk_clk_register_composites()
342 if (!IS_ERR_OR_NULL(clk_data->hws[mc->id])) { in mtk_clk_register_composites()
356 clk_data->hws[mc->id] = hw; in mtk_clk_register_composites()
365 if (IS_ERR_OR_NULL(clk_data->hws[mcs->id])) in mtk_clk_register_composites()
368 mtk_clk_unregister_composite(clk_data->hws[mc->id]); in mtk_clk_register_composites()
369 clk_data->hws[mc->id] = ERR_PTR(-ENOENT); in mtk_clk_register_composites()
377 struct clk_hw_onecell_data *clk_data) in mtk_clk_unregister_composites() argument
381 if (!clk_data) in mtk_clk_unregister_composites()
387 if (IS_ERR_OR_NULL(clk_data->hws[mc->id])) in mtk_clk_unregister_composites()
390 mtk_clk_unregister_composite(clk_data->hws[mc->id]); in mtk_clk_unregister_composites()
391 clk_data->hws[mc->id] = ERR_PTR(-ENOENT); in mtk_clk_unregister_composites()
399 struct clk_hw_onecell_data *clk_data) in mtk_clk_register_dividers() argument
404 if (!clk_data) in mtk_clk_register_dividers()
410 if (!IS_ERR_OR_NULL(clk_data->hws[mcd->id])) { in mtk_clk_register_dividers()
426 clk_data->hws[mcd->id] = hw; in mtk_clk_register_dividers()
435 if (IS_ERR_OR_NULL(clk_data->hws[mcd->id])) in mtk_clk_register_dividers()
438 clk_hw_unregister_divider(clk_data->hws[mcd->id]); in mtk_clk_register_dividers()
439 clk_data->hws[mcd->id] = ERR_PTR(-ENOENT); in mtk_clk_register_dividers()
447 struct clk_hw_onecell_data *clk_data) in mtk_clk_unregister_dividers() argument
451 if (!clk_data) in mtk_clk_unregister_dividers()
457 if (IS_ERR_OR_NULL(clk_data->hws[mcd->id])) in mtk_clk_unregister_dividers()
460 clk_hw_unregister_divider(clk_data->hws[mcd->id]); in mtk_clk_unregister_dividers()
461 clk_data->hws[mcd->id] = ERR_PTR(-ENOENT); in mtk_clk_unregister_dividers()
471 struct clk_hw_onecell_data *clk_data; in __mtk_clk_simple_probe() local
502 clk_data = mtk_alloc_clk_data(num_clks); in __mtk_clk_simple_probe()
503 if (!clk_data) { in __mtk_clk_simple_probe()
510 mcd->num_fixed_clks, clk_data); in __mtk_clk_simple_probe()
517 mcd->num_factor_clks, clk_data); in __mtk_clk_simple_probe()
525 mcd->clk_lock, clk_data); in __mtk_clk_simple_probe()
535 base, mcd->clk_lock, clk_data); in __mtk_clk_simple_probe()
544 base, mcd->clk_lock, clk_data); in __mtk_clk_simple_probe()
551 mcd->num_clks, clk_data); in __mtk_clk_simple_probe()
557 struct clk *mfg_mux = clk_data->hws[mcd->mfg_clk_idx]->clk; in __mtk_clk_simple_probe()
564 r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); in __mtk_clk_simple_probe()
568 platform_set_drvdata(pdev, clk_data); in __mtk_clk_simple_probe()
581 mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data); in __mtk_clk_simple_probe()
585 mcd->num_divider_clks, clk_data); in __mtk_clk_simple_probe()
589 mcd->num_composite_clks, clk_data); in __mtk_clk_simple_probe()
593 mcd->num_mux_clks, clk_data); in __mtk_clk_simple_probe()
597 mcd->num_factor_clks, clk_data); in __mtk_clk_simple_probe()
601 mcd->num_fixed_clks, clk_data); in __mtk_clk_simple_probe()
603 mtk_free_clk_data(clk_data); in __mtk_clk_simple_probe()
613 struct clk_hw_onecell_data *clk_data = platform_get_drvdata(pdev); in __mtk_clk_simple_remove() local
618 mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data); in __mtk_clk_simple_remove()
621 mcd->num_divider_clks, clk_data); in __mtk_clk_simple_remove()
624 mcd->num_composite_clks, clk_data); in __mtk_clk_simple_remove()
627 mcd->num_mux_clks, clk_data); in __mtk_clk_simple_remove()
630 mcd->num_factor_clks, clk_data); in __mtk_clk_simple_remove()
633 mcd->num_fixed_clks, clk_data); in __mtk_clk_simple_remove()
634 mtk_free_clk_data(clk_data); in __mtk_clk_simple_remove()