diff options
Diffstat (limited to 'drivers/acpi/processor_idle.c')
-rw-r--r-- | drivers/acpi/processor_idle.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index d9b8af763e1e..f18261368e76 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -325,6 +325,23 @@ static void acpi_state_timer_broadcast(struct acpi_processor *pr, | |||
325 | 325 | ||
326 | #endif | 326 | #endif |
327 | 327 | ||
328 | /* | ||
329 | * Suspend / resume control | ||
330 | */ | ||
331 | static int acpi_idle_suspend; | ||
332 | |||
333 | int acpi_processor_suspend(struct acpi_device * device, pm_message_t state) | ||
334 | { | ||
335 | acpi_idle_suspend = 1; | ||
336 | return 0; | ||
337 | } | ||
338 | |||
339 | int acpi_processor_resume(struct acpi_device * device) | ||
340 | { | ||
341 | acpi_idle_suspend = 0; | ||
342 | return 0; | ||
343 | } | ||
344 | |||
328 | static void acpi_processor_idle(void) | 345 | static void acpi_processor_idle(void) |
329 | { | 346 | { |
330 | struct acpi_processor *pr = NULL; | 347 | struct acpi_processor *pr = NULL; |
@@ -355,7 +372,7 @@ static void acpi_processor_idle(void) | |||
355 | } | 372 | } |
356 | 373 | ||
357 | cx = pr->power.state; | 374 | cx = pr->power.state; |
358 | if (!cx) { | 375 | if (!cx || acpi_idle_suspend) { |
359 | if (pm_idle_save) | 376 | if (pm_idle_save) |
360 | pm_idle_save(); | 377 | pm_idle_save(); |
361 | else | 378 | else |