aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/wakeup.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-06-27 10:03:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-06-27 10:03:12 -0400
commit02c646ef4e9040aa538fa6ed22bb3fb502df5a77 (patch)
tree7fc4595c4a8b9b1053aba6838063a18ce7661993 /drivers/acpi/wakeup.c
parent4303ef19c6e6d16ea845c04b02b9cf086bcb8ed7 (diff)
parent2cebc5e27e18acb2226b22f66b3b1b11deb76aa0 (diff)
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI / PM: Do not enable GPEs for system wakeup in advance ACPICA: Truncate I/O addresses to 16 bits for Windows compatibility ACPICA: Limit maximum time for Sleep() operator ACPICA: Fix namestring associated with AE_NO_HANDLER exception ACPI / ACPICA: Fix sysfs GPE interface ACPI / ACPICA: Fix GPE initialization ACPI / ACPICA: Avoid writing full enable masks to GPE registers ACPI / ACPICA: Fix low-level GPE manipulation code ACPI / ACPICA: Use helper function for computing GPE masks ACPI / ACPICA: Do not attempt to disable GPE when installing handler ACPI: Disable Vista compatibility for Sony VGN-NS50B_L ACPI: fan: fix unbalanced code block ACPI: Store NVS state even when entering suspend to RAM suspend: Move NVS save/restore code to generic suspend functionality ACPI: Do not try to set up acpi processor stuff on cores exceeding maxcpus= ACPI: acpi_pad: Don't needlessly mark LAPIC unstable
Diffstat (limited to 'drivers/acpi/wakeup.c')
-rw-r--r--drivers/acpi/wakeup.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c
index 4b9d339a6e28..388747a7ef4f 100644
--- a/drivers/acpi/wakeup.c
+++ b/drivers/acpi/wakeup.c
@@ -64,16 +64,13 @@ void acpi_enable_wakeup_device(u8 sleep_state)
64 struct acpi_device *dev = 64 struct acpi_device *dev =
65 container_of(node, struct acpi_device, wakeup_list); 65 container_of(node, struct acpi_device, wakeup_list);
66 66
67 if (!dev->wakeup.flags.valid) 67 if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled
68 continue;
69
70 if ((!dev->wakeup.state.enabled && !dev->wakeup.prepare_count)
71 || sleep_state > (u32) dev->wakeup.sleep_state) 68 || sleep_state > (u32) dev->wakeup.sleep_state)
72 continue; 69 continue;
73 70
74 /* The wake-up power should have been enabled already. */ 71 /* The wake-up power should have been enabled already. */
75 acpi_set_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, 72 acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
76 ACPI_GPE_ENABLE); 73 ACPI_GPE_TYPE_WAKE);
77 } 74 }
78} 75}
79 76
@@ -96,6 +93,8 @@ void acpi_disable_wakeup_device(u8 sleep_state)
96 || (sleep_state > (u32) dev->wakeup.sleep_state)) 93 || (sleep_state > (u32) dev->wakeup.sleep_state))
97 continue; 94 continue;
98 95
96 acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
97 ACPI_GPE_TYPE_WAKE);
99 acpi_disable_wakeup_device_power(dev); 98 acpi_disable_wakeup_device_power(dev);
100 } 99 }
101} 100}
@@ -109,13 +108,8 @@ int __init acpi_wakeup_device_init(void)
109 struct acpi_device *dev = container_of(node, 108 struct acpi_device *dev = container_of(node,
110 struct acpi_device, 109 struct acpi_device,
111 wakeup_list); 110 wakeup_list);
112 /* In case user doesn't load button driver */ 111 if (dev->wakeup.flags.always_enabled)
113 if (!dev->wakeup.flags.always_enabled || 112 dev->wakeup.state.enabled = 1;
114 dev->wakeup.state.enabled)
115 continue;
116 acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number,
117 ACPI_GPE_TYPE_WAKE);
118 dev->wakeup.state.enabled = 1;
119 } 113 }
120 mutex_unlock(&acpi_device_lock); 114 mutex_unlock(&acpi_device_lock);
121 return 0; 115 return 0;