Lines Matching +full:cluster +full:- +full:cpufreq
1 // SPDX-License-Identifier: GPL-2.0-only
11 #include <linux/clk-provider.h>
12 #include <linux/cpufreq.h>
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()
58 pltclk = clk_get(NULL, "cg-pll0-div1"); in get_bus_freq()
88 struct cpumask *dstp = policy->cpus; in set_affected_cpus()
99 if (clk_is_match(policy->clk, clk)) in set_affected_cpus()
131 for (i = 0; i < count - 1; i++) { in freq_table_sort()
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()
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()
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()
242 struct cpu_data *data = policy->driver_data; in qoriq_cpufreq_target()
244 parent = data->pclk[data->table[index].driver_data]; in qoriq_cpufreq_target()
245 return clk_set_parent(policy->clk, parent); in qoriq_cpufreq_target()
261 /* e6500 cannot use cpufreq due to erratum A-008083 */
262 { .compatible = "fsl,b4420-clockgen", },
263 { .compatible = "fsl,b4860-clockgen", },
264 { .compatible = "fsl,t2080-clockgen", },
265 { .compatible = "fsl,t4240-clockgen", },
277 dev_info(&pdev->dev, "Disabling due to erratum A-008083"); in qoriq_cpufreq_probe()
278 return -ENODEV; in qoriq_cpufreq_probe()
285 dev_info(&pdev->dev, "Freescale QorIQ CPU frequency scaling driver\n"); in qoriq_cpufreq_probe()
296 .name = "qoriq-cpufreq",
303 MODULE_ALIAS("platform:qoriq-cpufreq");
306 MODULE_DESCRIPTION("cpufreq driver for Freescale QorIQ series SoCs");