Lines Matching +full:clk +full:- +full:source

2  * drivers/cpufreq/spear-cpufreq.c
16 #include <linux/clk.h>
28 struct clk *clk; member
34 static struct clk *spear1340_cpu_get_possible_parent(unsigned long newfreq) in spear1340_cpu_get_possible_parent()
36 struct clk *sys_pclk; in spear1340_cpu_get_possible_parent()
39 * In SPEAr1340, cpu clk's parent sys clk can take input from in spear1340_cpu_get_possible_parent()
50 * As sys clk can have multiple source with their own range in spear1340_cpu_get_possible_parent()
60 return ERR_PTR(-EINVAL); in spear1340_cpu_get_possible_parent()
72 * access a source clock (clk) which might not be ancestor of cpu at present.
73 * Hence in SPEAr1340 we would operate on source clock directly before switching
76 static int spear1340_set_cpu_rate(struct clk *sys_pclk, unsigned long newfreq) in spear1340_set_cpu_rate()
78 struct clk *sys_clk; in spear1340_set_cpu_rate()
81 sys_clk = clk_get_parent(spear_cpufreq.clk); in spear1340_set_cpu_rate()
87 /* Set the rate of the source clock before changing the parent */ in spear1340_set_cpu_rate()
90 pr_err("Failed to set sys clk rate to %lu\n", newfreq); in spear1340_set_cpu_rate()
96 pr_err("Failed to set sys clk parent\n"); in spear1340_set_cpu_rate()
107 struct clk *srcclk; in spear_cpufreq_target()
115 * of multiple clock sources for cpu clk's parent we can have in spear_cpufreq_target()
116 * different clock source for different frequency of cpu clk. in spear_cpufreq_target()
122 pr_err("Failed to get src clk\n"); in spear_cpufreq_target()
126 /* SPEAr1340: src clk is always 2 * intended cpu clk */ in spear_cpufreq_target()
131 * can directly work on cpu clk in spear_cpufreq_target()
133 srcclk = spear_cpufreq.clk; in spear_cpufreq_target()
145 ret = clk_set_rate(spear_cpufreq.clk, newfreq); in spear_cpufreq_target()
155 policy->clk = spear_cpufreq.clk; in spear_cpufreq_init()
162 .name = "cpufreq-spear",
182 return -ENODEV; in spear_cpufreq_probe()
185 if (of_property_read_u32(np, "clock-latency", in spear_cpufreq_probe()
190 if (!prop || !prop->value) { in spear_cpufreq_probe()
192 ret = -ENODEV; in spear_cpufreq_probe()
196 cnt = prop->length / sizeof(u32); in spear_cpufreq_probe()
197 val = prop->value; in spear_cpufreq_probe()
201 ret = -ENOMEM; in spear_cpufreq_probe()
214 spear_cpufreq.clk = clk_get(NULL, "cpu_clk"); in spear_cpufreq_probe()
215 if (IS_ERR(spear_cpufreq.clk)) { in spear_cpufreq_probe()
217 ret = PTR_ERR(spear_cpufreq.clk); in spear_cpufreq_probe()
226 clk_put(spear_cpufreq.clk); in spear_cpufreq_probe()
239 .name = "spear-cpufreq",