aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/platforms/cell/cbe_cpufreq.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/arch/powerpc/platforms/cell/cbe_cpufreq.c b/arch/powerpc/platforms/cell/cbe_cpufreq.c
index 4495973bff59..f9ac3fe3be97 100644
--- a/arch/powerpc/platforms/cell/cbe_cpufreq.c
+++ b/arch/powerpc/platforms/cell/cbe_cpufreq.c
@@ -25,6 +25,7 @@
25 25
26#include <asm/hw_irq.h> 26#include <asm/hw_irq.h>
27#include <asm/io.h> 27#include <asm/io.h>
28#include <asm/machdep.h>
28#include <asm/processor.h> 29#include <asm/processor.h>
29#include <asm/prom.h> 30#include <asm/prom.h>
30#include <asm/time.h> 31#include <asm/time.h>
@@ -155,7 +156,7 @@ static int set_pmode_reg(int cpu, unsigned int pmode)
155} 156}
156 157
157static int set_pmode(int cpu, unsigned int slow_mode) { 158static int set_pmode(int cpu, unsigned int slow_mode) {
158 if(pmi_dev) 159 if (pmi_dev)
159 return set_pmode_pmi(cpu, slow_mode); 160 return set_pmode_pmi(cpu, slow_mode);
160 else 161 else
161 return set_pmode_reg(cpu, slow_mode); 162 return set_pmode_reg(cpu, slow_mode);
@@ -167,7 +168,7 @@ static void cbe_cpufreq_handle_pmi(struct of_device *dev, pmi_message_t pmi_msg)
167 u8 cpu; 168 u8 cpu;
168 u8 cbe_pmode_new; 169 u8 cbe_pmode_new;
169 170
170 BUG_ON (pmi_msg.type != PMI_TYPE_FREQ_CHANGE); 171 BUG_ON(pmi_msg.type != PMI_TYPE_FREQ_CHANGE);
171 172
172 cpu = cbe_node_to_cpu(pmi_msg.data1); 173 cpu = cbe_node_to_cpu(pmi_msg.data1);
173 cbe_pmode_new = pmi_msg.data2; 174 cbe_pmode_new = pmi_msg.data2;
@@ -191,7 +192,7 @@ static struct pmi_handler cbe_pmi_handler = {
191 * cpufreq functions 192 * cpufreq functions
192 */ 193 */
193 194
194static int cbe_cpufreq_cpu_init (struct cpufreq_policy *policy) 195static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy)
195{ 196{
196 const u32 *max_freqp; 197 const u32 *max_freqp;
197 u32 max_freq; 198 u32 max_freq;
@@ -200,7 +201,7 @@ static int cbe_cpufreq_cpu_init (struct cpufreq_policy *policy)
200 201
201 cpu = of_get_cpu_node(policy->cpu, NULL); 202 cpu = of_get_cpu_node(policy->cpu, NULL);
202 203
203 if(!cpu) 204 if (!cpu)
204 return -ENODEV; 205 return -ENODEV;
205 206
206 pr_debug("init cpufreq on CPU %d\n", policy->cpu); 207 pr_debug("init cpufreq on CPU %d\n", policy->cpu);
@@ -210,13 +211,13 @@ static int cbe_cpufreq_cpu_init (struct cpufreq_policy *policy)
210 if (!max_freqp) 211 if (!max_freqp)
211 return -EINVAL; 212 return -EINVAL;
212 213
213 // we need the freq in kHz 214 /* we need the freq in kHz */
214 max_freq = *max_freqp / 1000; 215 max_freq = *max_freqp / 1000;
215 216
216 pr_debug("max clock-frequency is at %u kHz\n", max_freq); 217 pr_debug("max clock-frequency is at %u kHz\n", max_freq);
217 pr_debug("initializing frequency table\n"); 218 pr_debug("initializing frequency table\n");
218 219
219 // initialize frequency table 220 /* initialize frequency table */
220 for (i=0; cbe_freqs[i].frequency!=CPUFREQ_TABLE_END; i++) { 221 for (i=0; cbe_freqs[i].frequency!=CPUFREQ_TABLE_END; i++) {
221 cbe_freqs[i].frequency = max_freq / cbe_freqs[i].index; 222 cbe_freqs[i].frequency = max_freq / cbe_freqs[i].index;
222 pr_debug("%d: %d\n", i, cbe_freqs[i].frequency); 223 pr_debug("%d: %d\n", i, cbe_freqs[i].frequency);
@@ -235,10 +236,10 @@ static int cbe_cpufreq_cpu_init (struct cpufreq_policy *policy)
235 policy->cpus = cpu_sibling_map[policy->cpu]; 236 policy->cpus = cpu_sibling_map[policy->cpu];
236#endif 237#endif
237 238
238 cpufreq_frequency_table_get_attr (cbe_freqs, policy->cpu); 239 cpufreq_frequency_table_get_attr(cbe_freqs, policy->cpu);
239 240
240 /* this ensures that policy->cpuinfo_min and policy->cpuinfo_max are set correctly */ 241 /* this ensures that policy->cpuinfo_min and policy->cpuinfo_max are set correctly */
241 return cpufreq_frequency_table_cpuinfo (policy, cbe_freqs); 242 return cpufreq_frequency_table_cpuinfo(policy, cbe_freqs);
242} 243}
243 244
244static int cbe_cpufreq_cpu_exit(struct cpufreq_policy *policy) 245static int cbe_cpufreq_cpu_exit(struct cpufreq_policy *policy)
@@ -270,7 +271,7 @@ static int cbe_cpufreq_target(struct cpufreq_policy *policy, unsigned int target
270 freqs.new = cbe_freqs[cbe_pmode_new].frequency; 271 freqs.new = cbe_freqs[cbe_pmode_new].frequency;
271 freqs.cpu = policy->cpu; 272 freqs.cpu = policy->cpu;
272 273
273 mutex_lock (&cbe_switch_mutex); 274 mutex_lock(&cbe_switch_mutex);
274 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 275 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
275 276
276 pr_debug("setting frequency for cpu %d to %d kHz, 1/%d of max frequency\n", 277 pr_debug("setting frequency for cpu %d to %d kHz, 1/%d of max frequency\n",
@@ -303,6 +304,9 @@ static int __init cbe_cpufreq_init(void)
303{ 304{
304 struct device_node *np; 305 struct device_node *np;
305 306
307 if (!machine_is(cell))
308 return -ENODEV;
309
306 np = of_find_node_by_type(NULL, "ibm,pmi"); 310 np = of_find_node_by_type(NULL, "ibm,pmi");
307 311
308 pmi_dev = of_find_device_by_node(np); 312 pmi_dev = of_find_device_by_node(np);
@@ -315,7 +319,7 @@ static int __init cbe_cpufreq_init(void)
315 319
316static void __exit cbe_cpufreq_exit(void) 320static void __exit cbe_cpufreq_exit(void)
317{ 321{
318 if(pmi_dev) 322 if (pmi_dev)
319 pmi_unregister_handler(pmi_dev, &cbe_pmi_handler); 323 pmi_unregister_handler(pmi_dev, &cbe_pmi_handler);
320 324
321 cpufreq_unregister_driver(&cbe_cpufreq_driver); 325 cpufreq_unregister_driver(&cbe_cpufreq_driver);