diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2010-07-01 18:12:26 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2010-07-06 18:29:47 -0400 |
commit | 25bed55753b8cf243406e8837990b55946c5278d (patch) | |
tree | b0c5549e45036cbf93a90e8d7c66a6148c5a8c61 /drivers/acpi | |
parent | e96c4b081df0991a57b244f68c3955a9ea00bd0a (diff) |
ACPI / Sleep: Rework enabling wakeup devices
There is no reason why acpi_enable_wakeup_device() should be called
with interrupts disabled, because it doesn't access hardware. Thus
it is possible to move it next to acpi_enable_wakeup_device_prep()
and make the ACPI suspend, hibernate and poweroff code more
straightforward.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/sleep.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index da68ed24f4c5..8704ca78a8c4 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c | |||
@@ -70,10 +70,11 @@ static int acpi_sleep_prepare(u32 acpi_state) | |||
70 | 70 | ||
71 | } | 71 | } |
72 | ACPI_FLUSH_CPU_CACHE(); | 72 | ACPI_FLUSH_CPU_CACHE(); |
73 | acpi_enable_wakeup_device_prep(acpi_state); | ||
74 | #endif | 73 | #endif |
75 | printk(KERN_INFO PREFIX "Preparing to enter system sleep state S%d\n", | 74 | printk(KERN_INFO PREFIX "Preparing to enter system sleep state S%d\n", |
76 | acpi_state); | 75 | acpi_state); |
76 | acpi_enable_wakeup_device_prep(acpi_state); | ||
77 | acpi_enable_wakeup_device(acpi_state); | ||
77 | acpi_enter_sleep_state_prep(acpi_state); | 78 | acpi_enter_sleep_state_prep(acpi_state); |
78 | return 0; | 79 | return 0; |
79 | } | 80 | } |
@@ -238,7 +239,6 @@ static int acpi_suspend_enter(suspend_state_t pm_state) | |||
238 | } | 239 | } |
239 | 240 | ||
240 | local_irq_save(flags); | 241 | local_irq_save(flags); |
241 | acpi_enable_wakeup_device(acpi_state); | ||
242 | switch (acpi_state) { | 242 | switch (acpi_state) { |
243 | case ACPI_STATE_S1: | 243 | case ACPI_STATE_S1: |
244 | barrier(); | 244 | barrier(); |
@@ -442,7 +442,6 @@ static int acpi_hibernation_enter(void) | |||
442 | ACPI_FLUSH_CPU_CACHE(); | 442 | ACPI_FLUSH_CPU_CACHE(); |
443 | 443 | ||
444 | local_irq_save(flags); | 444 | local_irq_save(flags); |
445 | acpi_enable_wakeup_device(ACPI_STATE_S4); | ||
446 | /* This shouldn't return. If it returns, we have a problem */ | 445 | /* This shouldn't return. If it returns, we have a problem */ |
447 | status = acpi_enter_sleep_state(ACPI_STATE_S4); | 446 | status = acpi_enter_sleep_state(ACPI_STATE_S4); |
448 | /* Reprogram control registers and execute _BFS */ | 447 | /* Reprogram control registers and execute _BFS */ |
@@ -696,7 +695,6 @@ static void acpi_power_off(void) | |||
696 | /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ | 695 | /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ |
697 | printk(KERN_DEBUG "%s called\n", __func__); | 696 | printk(KERN_DEBUG "%s called\n", __func__); |
698 | local_irq_disable(); | 697 | local_irq_disable(); |
699 | acpi_enable_wakeup_device(ACPI_STATE_S5); | ||
700 | acpi_enter_sleep_state(ACPI_STATE_S5); | 698 | acpi_enter_sleep_state(ACPI_STATE_S5); |
701 | } | 699 | } |
702 | 700 | ||