Skip to content

Commit

Permalink
[POWERPC] Fix PMI breakage in cbe_cbufreq driver
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Christian Krafft authored and Paul Mackerras committed Jul 2, 2007
1 parent 86affd5 commit ee5d1b7
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions arch/powerpc/platforms/cell/cbe_cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ static unsigned int pmi_frequency_limit = 0;

static struct of_device *pmi_dev;

#ifdef CONFIG_PPC_PMI
static int set_pmode_pmi(int cpu, unsigned int pmode)
{
int ret;
Expand Down Expand Up @@ -102,7 +103,7 @@ static int set_pmode_pmi(int cpu, unsigned int pmode)
#endif
return ret;
}

#endif

static int get_pmode(int cpu)
{
Expand Down Expand Up @@ -157,9 +158,11 @@ static int set_pmode_reg(int cpu, unsigned int pmode)
}

static int set_pmode(int cpu, unsigned int slow_mode) {
#ifdef CONFIG_PPC_PMI
if (pmi_dev)
return set_pmode_pmi(cpu, slow_mode);
else
#endif
return set_pmode_reg(cpu, slow_mode);
}

Expand Down Expand Up @@ -323,26 +326,28 @@ static struct cpufreq_driver cbe_cpufreq_driver = {

static int __init cbe_cpufreq_init(void)
{
#ifdef CONFIG_PPC_PMI
struct device_node *np;

#endif
if (!machine_is(cell))
return -ENODEV;

#ifdef CONFIG_PPC_PMI
np = of_find_node_by_type(NULL, "ibm,pmi");

pmi_dev = of_find_device_by_node(np);

if (pmi_dev)
pmi_register_handler(pmi_dev, &cbe_pmi_handler);

#endif
return cpufreq_register_driver(&cbe_cpufreq_driver);
}

static void __exit cbe_cpufreq_exit(void)
{
#ifdef CONFIG_PPC_PMI
if (pmi_dev)
pmi_unregister_handler(pmi_dev, &cbe_pmi_handler);

#endif
cpufreq_unregister_driver(&cbe_cpufreq_driver);
}

Expand Down

0 comments on commit ee5d1b7

Please sign in to comment.