diff options
author | Christian Krafft <krafft@de.ibm.com> | 2007-06-28 07:14:38 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-07-01 20:35:58 -0400 |
commit | ee5d1b7f2a01ce4d95ca247b5a499b72f31cdbe8 (patch) | |
tree | 5769b466511cd7b8dad86686b6c60da7faa50507 | |
parent | 86affd5a00a92e491e5f00ed659492767519fdf7 (diff) |
[POWERPC] Fix PMI breakage in cbe_cbufreq driver
The recent change to cell_defconfig to enable cpufreq on Cell exposed
the fact that the cbe_cpufreq driver currently needs the PMI interface
code to compile, but Kconfig doesn't make sure that the PMI interface
code gets built if cbe_cpufreq is enabled.
In fact cbe_cpufreq can work without PMI, so this ifdefs out the code
that deals with PMI. This is a minimal solution for 2.6.22; a more
comprehensive solution will be merged for 2.6.23.
Signed-off-by: Christian Krafft <krafft@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/powerpc/platforms/cell/cbe_cpufreq.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/cell/cbe_cpufreq.c b/arch/powerpc/platforms/cell/cbe_cpufreq.c index ac445998d831..ab511d5b65a4 100644 --- a/arch/powerpc/platforms/cell/cbe_cpufreq.c +++ b/arch/powerpc/platforms/cell/cbe_cpufreq.c | |||
@@ -74,6 +74,7 @@ static unsigned int pmi_frequency_limit = 0; | |||
74 | 74 | ||
75 | static struct of_device *pmi_dev; | 75 | static struct of_device *pmi_dev; |
76 | 76 | ||
77 | #ifdef CONFIG_PPC_PMI | ||
77 | static int set_pmode_pmi(int cpu, unsigned int pmode) | 78 | static int set_pmode_pmi(int cpu, unsigned int pmode) |
78 | { | 79 | { |
79 | int ret; | 80 | int ret; |
@@ -102,7 +103,7 @@ static int set_pmode_pmi(int cpu, unsigned int pmode) | |||
102 | #endif | 103 | #endif |
103 | return ret; | 104 | return ret; |
104 | } | 105 | } |
105 | 106 | #endif | |
106 | 107 | ||
107 | static int get_pmode(int cpu) | 108 | static int get_pmode(int cpu) |
108 | { | 109 | { |
@@ -157,9 +158,11 @@ static int set_pmode_reg(int cpu, unsigned int pmode) | |||
157 | } | 158 | } |
158 | 159 | ||
159 | static int set_pmode(int cpu, unsigned int slow_mode) { | 160 | static int set_pmode(int cpu, unsigned int slow_mode) { |
161 | #ifdef CONFIG_PPC_PMI | ||
160 | if (pmi_dev) | 162 | if (pmi_dev) |
161 | return set_pmode_pmi(cpu, slow_mode); | 163 | return set_pmode_pmi(cpu, slow_mode); |
162 | else | 164 | else |
165 | #endif | ||
163 | return set_pmode_reg(cpu, slow_mode); | 166 | return set_pmode_reg(cpu, slow_mode); |
164 | } | 167 | } |
165 | 168 | ||
@@ -323,26 +326,28 @@ static struct cpufreq_driver cbe_cpufreq_driver = { | |||
323 | 326 | ||
324 | static int __init cbe_cpufreq_init(void) | 327 | static int __init cbe_cpufreq_init(void) |
325 | { | 328 | { |
329 | #ifdef CONFIG_PPC_PMI | ||
326 | struct device_node *np; | 330 | struct device_node *np; |
327 | 331 | #endif | |
328 | if (!machine_is(cell)) | 332 | if (!machine_is(cell)) |
329 | return -ENODEV; | 333 | return -ENODEV; |
330 | 334 | #ifdef CONFIG_PPC_PMI | |
331 | np = of_find_node_by_type(NULL, "ibm,pmi"); | 335 | np = of_find_node_by_type(NULL, "ibm,pmi"); |
332 | 336 | ||
333 | pmi_dev = of_find_device_by_node(np); | 337 | pmi_dev = of_find_device_by_node(np); |
334 | 338 | ||
335 | if (pmi_dev) | 339 | if (pmi_dev) |
336 | pmi_register_handler(pmi_dev, &cbe_pmi_handler); | 340 | pmi_register_handler(pmi_dev, &cbe_pmi_handler); |
337 | 341 | #endif | |
338 | return cpufreq_register_driver(&cbe_cpufreq_driver); | 342 | return cpufreq_register_driver(&cbe_cpufreq_driver); |
339 | } | 343 | } |
340 | 344 | ||
341 | static void __exit cbe_cpufreq_exit(void) | 345 | static void __exit cbe_cpufreq_exit(void) |
342 | { | 346 | { |
347 | #ifdef CONFIG_PPC_PMI | ||
343 | if (pmi_dev) | 348 | if (pmi_dev) |
344 | pmi_unregister_handler(pmi_dev, &cbe_pmi_handler); | 349 | pmi_unregister_handler(pmi_dev, &cbe_pmi_handler); |
345 | 350 | #endif | |
346 | cpufreq_unregister_driver(&cbe_cpufreq_driver); | 351 | cpufreq_unregister_driver(&cbe_cpufreq_driver); |
347 | } | 352 | } |
348 | 353 | ||