|
@@ -1248,13 +1248,22 @@ EXPORT_SYMBOL(cpufreq_get);
|
|
|
|
|
|
static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg)
|
|
|
{
|
|
|
- int cpu = sysdev->id;
|
|
|
int ret = 0;
|
|
|
+
|
|
|
+#ifdef __powerpc__
|
|
|
+ int cpu = sysdev->id;
|
|
|
unsigned int cur_freq = 0;
|
|
|
struct cpufreq_policy *cpu_policy;
|
|
|
|
|
|
dprintk("suspending cpu %u\n", cpu);
|
|
|
|
|
|
+ /*
|
|
|
+ * This whole bogosity is here because Powerbooks are made of fail.
|
|
|
+ * No sane platform should need any of the code below to be run.
|
|
|
+ * (it's entirely the wrong thing to do, as driver->get may
|
|
|
+ * reenable interrupts on some architectures).
|
|
|
+ */
|
|
|
+
|
|
|
if (!cpu_online(cpu))
|
|
|
return 0;
|
|
|
|
|
@@ -1313,6 +1322,7 @@ static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg)
|
|
|
|
|
|
out:
|
|
|
cpufreq_cpu_put(cpu_policy);
|
|
|
+#endif /* __powerpc__ */
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1326,12 +1336,18 @@ out:
|
|
|
*/
|
|
|
static int cpufreq_resume(struct sys_device *sysdev)
|
|
|
{
|
|
|
- int cpu = sysdev->id;
|
|
|
int ret = 0;
|
|
|
+
|
|
|
+#ifdef __powerpc__
|
|
|
+ int cpu = sysdev->id;
|
|
|
struct cpufreq_policy *cpu_policy;
|
|
|
|
|
|
dprintk("resuming cpu %u\n", cpu);
|
|
|
|
|
|
+ /* As with the ->suspend method, all the code below is
|
|
|
+ * only necessary because Powerbooks suck.
|
|
|
+ * See commit 42d4dc3f4e1e for jokes. */
|
|
|
+
|
|
|
if (!cpu_online(cpu))
|
|
|
return 0;
|
|
|
|
|
@@ -1395,6 +1411,7 @@ out:
|
|
|
schedule_work(&cpu_policy->update);
|
|
|
fail:
|
|
|
cpufreq_cpu_put(cpu_policy);
|
|
|
+#endif /* __powerpc__ */
|
|
|
return ret;
|
|
|
}
|
|
|
|