[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>
This commit is contained in:
Christian Krafft 2007-06-28 21:14:38 +10:00 committed by Paul Mackerras
parent 86affd5a00
commit ee5d1b7f2a

View File

@ -74,6 +74,7 @@ static unsigned int pmi_frequency_limit = 0;
static struct of_device *pmi_dev; static struct of_device *pmi_dev;
#ifdef CONFIG_PPC_PMI
static int set_pmode_pmi(int cpu, unsigned int pmode) static int set_pmode_pmi(int cpu, unsigned int pmode)
{ {
int ret; int ret;
@ -102,7 +103,7 @@ static int set_pmode_pmi(int cpu, unsigned int pmode)
#endif #endif
return ret; return ret;
} }
#endif
static int get_pmode(int cpu) static int get_pmode(int cpu)
{ {
@ -157,9 +158,11 @@ static int set_pmode_reg(int cpu, unsigned int pmode)
} }
static int set_pmode(int cpu, unsigned int slow_mode) { static int set_pmode(int cpu, unsigned int slow_mode) {
#ifdef CONFIG_PPC_PMI
if (pmi_dev) if (pmi_dev)
return set_pmode_pmi(cpu, slow_mode); return set_pmode_pmi(cpu, slow_mode);
else else
#endif
return set_pmode_reg(cpu, slow_mode); return set_pmode_reg(cpu, slow_mode);
} }
@ -323,26 +326,28 @@ static struct cpufreq_driver cbe_cpufreq_driver = {
static int __init cbe_cpufreq_init(void) static int __init cbe_cpufreq_init(void)
{ {
#ifdef CONFIG_PPC_PMI
struct device_node *np; struct device_node *np;
#endif
if (!machine_is(cell)) if (!machine_is(cell))
return -ENODEV; return -ENODEV;
#ifdef CONFIG_PPC_PMI
np = of_find_node_by_type(NULL, "ibm,pmi"); np = of_find_node_by_type(NULL, "ibm,pmi");
pmi_dev = of_find_device_by_node(np); pmi_dev = of_find_device_by_node(np);
if (pmi_dev) if (pmi_dev)
pmi_register_handler(pmi_dev, &cbe_pmi_handler); pmi_register_handler(pmi_dev, &cbe_pmi_handler);
#endif
return cpufreq_register_driver(&cbe_cpufreq_driver); return cpufreq_register_driver(&cbe_cpufreq_driver);
} }
static void __exit cbe_cpufreq_exit(void) static void __exit cbe_cpufreq_exit(void)
{ {
#ifdef CONFIG_PPC_PMI
if (pmi_dev) if (pmi_dev)
pmi_unregister_handler(pmi_dev, &cbe_pmi_handler); pmi_unregister_handler(pmi_dev, &cbe_pmi_handler);
#endif
cpufreq_unregister_driver(&cbe_cpufreq_driver); cpufreq_unregister_driver(&cbe_cpufreq_driver);
} }