Lines Matching +full:cpufreq +full:- +full:hw
1 // SPDX-License-Identifier: GPL-2.0
12 #include <linux/clk-provider.h>
15 #include "clk-krait.h"
51 mux->old_index = krait_mux_clk_ops.get_parent(&mux->hw);
52 ret = krait_mux_clk_ops.set_parent(&mux->hw, mux->safe_sel);
53 mux->reparent = false;
60 if (!mux->reparent)
61 ret = krait_mux_clk_ops.set_parent(&mux->hw,
62 mux->old_index);
73 mux->clk_nb.notifier_call = krait_notifier_cb;
74 ret = devm_clk_notifier_register(dev, clk, &mux->clk_nb);
97 return ERR_PTR(-ENOMEM);
99 div->width = 2;
100 div->shift = 6;
101 div->lpl = id >= 0;
102 div->offset = offset;
103 div->hw.init = &init;
107 return ERR_PTR(-ENOMEM);
112 clk = ERR_PTR(-ENOMEM);
119 ret = devm_clk_hw_register(dev, &div->hw);
125 clk = &div->hw;
127 /* clk-krait ignore any rate change if mux is not flagged as enabled */
130 clk_prepare_enable(div->hw.clk);
132 clk_prepare_enable(div->hw.clk);
163 return ERR_PTR(-ENOMEM);
165 mux->offset = offset;
166 mux->lpl = id >= 0;
167 mux->mask = 0x3;
168 mux->shift = 2;
169 mux->parent_map = sec_mux_map;
170 mux->hw.init = &init;
171 mux->safe_sel = 0;
173 /* Checking for qcom,krait-cc-v1 or qcom,krait-cc-v2 is not
179 mux->disable_sec_src_gating = true;
183 return ERR_PTR(-ENOMEM);
188 clk = ERR_PTR(-ENOMEM);
197 ret = devm_clk_hw_register(dev, &mux->hw);
203 clk = &mux->hw;
205 ret = krait_notifier_register(dev, mux->hw.clk, mux);
211 /* clk-krait ignore any rate change if mux is not flagged as enabled */
214 clk_prepare_enable(mux->hw.clk);
216 clk_prepare_enable(mux->hw.clk);
244 return ERR_PTR(-ENOMEM);
246 mux->mask = 0x3;
247 mux->shift = 0;
248 mux->offset = offset;
249 mux->lpl = id >= 0;
250 mux->parent_map = pri_mux_map;
251 mux->hw.init = &init;
252 mux->safe_sel = 2;
256 return ERR_PTR(-ENOMEM);
260 clk = ERR_PTR(-ENOMEM);
267 p_data[1].hw = hfpll_div;
268 p_data[2].hw = sec_mux;
270 ret = devm_clk_hw_register(dev, &mux->hw);
276 clk = &mux->hw;
278 ret = krait_notifier_register(dev, mux->hw.clk, mux);
301 return ERR_PTR(-ENOMEM);
328 unsigned int idx = clkspec->args[0];
333 return ERR_PTR(-EINVAL);
336 return clks[idx] ? : ERR_PTR(-ENODEV);
340 { .compatible = "qcom,krait-cc-v1", (void *)1UL },
341 { .compatible = "qcom,krait-cc-v2" },
348 struct device *dev = &pdev->dev;
370 return -ENOMEM;
376 clks[cpu] = mux->clk;
379 l2_pri_mux = krait_add_clks(dev, -1, unique_aux);
382 clks[l2_mux] = l2_pri_mux->clk;
386 * if CPUFREQ or HOTPLUG configs are disabled. So, bump up the
387 * refcount of these clocks. Any cpufreq/hotplug manager can assume
432 of_clk_add_provider(dev->of_node, krait_of_get, clks);
440 .name = "krait-cc",
448 MODULE_ALIAS("platform:krait-cc");