Lines Matching +full:clock +full:- +full:freq
1 // SPDX-License-Identifier: GPL-2.0-only
11 #include <linux/clk-provider.h>
25 * @pclk: the parent clock of cpu
34 * struct soc_data - SoC specific data
48 /* get platform freq by searching bus-frequency property */ in get_bus_freq()
51 ret = of_property_read_u32(soc, "bus-frequency", &sysfreq); in get_bus_freq()
57 /* get platform freq by its clock name */ in get_bus_freq()
58 pltclk = clk_get(NULL, "cg-pll0-div1"); in get_bus_freq()
85 /* traverse cpu nodes to get cpu mask of sharing clock wire */
88 struct cpumask *dstp = policy->cpus; in set_affected_cpus()
95 pr_err("%s: no clock for cpu %d\n", __func__, i); in set_affected_cpus()
99 if (clk_is_match(policy->clk, clk)) in set_affected_cpus()
128 unsigned int freq, max_freq; in freq_table_sort() local
131 for (i = 0; i < count - 1; i++) { in freq_table_sort()
135 freq = freq_table[j].frequency; in freq_table_sort()
136 if (freq == CPUFREQ_ENTRY_INVALID || in freq_table_sort()
137 freq <= max_freq) in freq_table_sort()
140 max_freq = freq; in freq_table_sort()
159 u32 freq; in qoriq_cpufreq_cpu_init() local
164 unsigned int cpu = policy->cpu; in qoriq_cpufreq_cpu_init()
169 return -ENODEV; in qoriq_cpufreq_cpu_init()
175 policy->clk = of_clk_get(np, 0); in qoriq_cpufreq_cpu_init()
176 if (IS_ERR(policy->clk)) { in qoriq_cpufreq_cpu_init()
177 pr_err("%s: no clock information\n", __func__); in qoriq_cpufreq_cpu_init()
181 hwclk = __clk_get_hw(policy->clk); in qoriq_cpufreq_cpu_init()
184 data->pclk = kcalloc(count, sizeof(struct clk *), GFP_KERNEL); in qoriq_cpufreq_cpu_init()
185 if (!data->pclk) in qoriq_cpufreq_cpu_init()
193 clk = clk_hw_get_parent_by_index(hwclk, i)->clk; in qoriq_cpufreq_cpu_init()
194 data->pclk[i] = clk; in qoriq_cpufreq_cpu_init()
195 freq = clk_get_rate(clk); in qoriq_cpufreq_cpu_init()
196 table[i].frequency = freq / 1000; in qoriq_cpufreq_cpu_init()
202 policy->freq_table = table; in qoriq_cpufreq_cpu_init()
203 data->table = table; in qoriq_cpufreq_cpu_init()
205 /* update ->cpus if we have cluster, no harm if not */ in qoriq_cpufreq_cpu_init()
207 policy->driver_data = data; in qoriq_cpufreq_cpu_init()
212 policy->cpuinfo.transition_latency = u64temp + 1; in qoriq_cpufreq_cpu_init()
219 kfree(data->pclk); in qoriq_cpufreq_cpu_init()
225 return -ENODEV; in qoriq_cpufreq_cpu_init()
230 struct cpu_data *data = policy->driver_data; in qoriq_cpufreq_cpu_exit()
232 kfree(data->pclk); in qoriq_cpufreq_cpu_exit()
233 kfree(data->table); in qoriq_cpufreq_cpu_exit()
235 policy->driver_data = NULL; in qoriq_cpufreq_cpu_exit()
244 struct cpu_data *data = policy->driver_data; in qoriq_cpufreq_target()
246 parent = data->pclk[data->table[index].driver_data]; in qoriq_cpufreq_target()
247 return clk_set_parent(policy->clk, parent); in qoriq_cpufreq_target()
263 /* e6500 cannot use cpufreq due to erratum A-008083 */
264 { .compatible = "fsl,b4420-clockgen", },
265 { .compatible = "fsl,b4860-clockgen", },
266 { .compatible = "fsl,t2080-clockgen", },
267 { .compatible = "fsl,t4240-clockgen", },
278 dev_info(&pdev->dev, "Disabling due to erratum A-008083"); in qoriq_cpufreq_probe()
279 return -ENODEV; in qoriq_cpufreq_probe()
286 dev_info(&pdev->dev, "Freescale QorIQ CPU frequency scaling driver\n"); in qoriq_cpufreq_probe()
299 .name = "qoriq-cpufreq",
306 MODULE_ALIAS("platform:qoriq-cpufreq");