diff options
| -rw-r--r-- | drivers/cpufreq/cpufreq.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index bd74a0b12176..fd69086d08d5 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
| @@ -1248,13 +1248,22 @@ EXPORT_SYMBOL(cpufreq_get); | |||
| 1248 | 1248 | ||
| 1249 | static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg) | 1249 | static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg) |
| 1250 | { | 1250 | { |
| 1251 | int cpu = sysdev->id; | ||
| 1252 | int ret = 0; | 1251 | int ret = 0; |
| 1252 | |||
| 1253 | #ifdef __powerpc__ | ||
| 1254 | int cpu = sysdev->id; | ||
| 1253 | unsigned int cur_freq = 0; | 1255 | unsigned int cur_freq = 0; |
| 1254 | struct cpufreq_policy *cpu_policy; | 1256 | struct cpufreq_policy *cpu_policy; |
| 1255 | 1257 | ||
| 1256 | dprintk("suspending cpu %u\n", cpu); | 1258 | dprintk("suspending cpu %u\n", cpu); |
| 1257 | 1259 | ||
| 1260 | /* | ||
| 1261 | * This whole bogosity is here because Powerbooks are made of fail. | ||
| 1262 | * No sane platform should need any of the code below to be run. | ||
| 1263 | * (it's entirely the wrong thing to do, as driver->get may | ||
| 1264 | * reenable interrupts on some architectures). | ||
| 1265 | */ | ||
| 1266 | |||
| 1258 | if (!cpu_online(cpu)) | 1267 | if (!cpu_online(cpu)) |
| 1259 | return 0; | 1268 | return 0; |
| 1260 | 1269 | ||
| @@ -1313,6 +1322,7 @@ static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg) | |||
| 1313 | 1322 | ||
| 1314 | out: | 1323 | out: |
| 1315 | cpufreq_cpu_put(cpu_policy); | 1324 | cpufreq_cpu_put(cpu_policy); |
| 1325 | #endif /* __powerpc__ */ | ||
| 1316 | return ret; | 1326 | return ret; |
| 1317 | } | 1327 | } |
| 1318 | 1328 | ||
| @@ -1326,12 +1336,18 @@ out: | |||
| 1326 | */ | 1336 | */ |
| 1327 | static int cpufreq_resume(struct sys_device *sysdev) | 1337 | static int cpufreq_resume(struct sys_device *sysdev) |
| 1328 | { | 1338 | { |
| 1329 | int cpu = sysdev->id; | ||
| 1330 | int ret = 0; | 1339 | int ret = 0; |
| 1340 | |||
| 1341 | #ifdef __powerpc__ | ||
| 1342 | int cpu = sysdev->id; | ||
| 1331 | struct cpufreq_policy *cpu_policy; | 1343 | struct cpufreq_policy *cpu_policy; |
| 1332 | 1344 | ||
| 1333 | dprintk("resuming cpu %u\n", cpu); | 1345 | dprintk("resuming cpu %u\n", cpu); |
| 1334 | 1346 | ||
| 1347 | /* As with the ->suspend method, all the code below is | ||
| 1348 | * only necessary because Powerbooks suck. | ||
| 1349 | * See commit 42d4dc3f4e1e for jokes. */ | ||
| 1350 | |||
| 1335 | if (!cpu_online(cpu)) | 1351 | if (!cpu_online(cpu)) |
| 1336 | return 0; | 1352 | return 0; |
| 1337 | 1353 | ||
| @@ -1395,6 +1411,7 @@ out: | |||
| 1395 | schedule_work(&cpu_policy->update); | 1411 | schedule_work(&cpu_policy->update); |
| 1396 | fail: | 1412 | fail: |
| 1397 | cpufreq_cpu_put(cpu_policy); | 1413 | cpufreq_cpu_put(cpu_policy); |
| 1414 | #endif /* __powerpc__ */ | ||
| 1398 | return ret; | 1415 | return ret; |
| 1399 | } | 1416 | } |
| 1400 | 1417 | ||
