forked from luck/tmp_suning_uos_patched
[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:
parent
86affd5a00
commit
ee5d1b7f2a
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user