aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2009-03-24 18:50:19 -0400
committerLen Brown <len.brown@intel.com>2009-03-27 12:51:31 -0400
commit201b8c655f7a48563f6a0b66f9e388460a1ea611 (patch)
tree262341b6fd76e17ddce25c9ea87f081104aca6a8
parent9cee43e07940bee13462e63bd75ce4430b155886 (diff)
ACPI: call acpi_wakeup_device_init() explicitly rather than as initcall
This patch makes acpi_init() call acpi_wakeup_device_init() directly. Previously, acpi_wakeup_device_init() was a late_initcall (sequence 7). acpi_wakeup_device_init() depends on acpi_wakeup_device_list, which is populated when ACPI devices are enumerated by acpi_init() -> acpi_scan_init(). Using late_initcall is certainly enough to make sure acpi_wakeup_device_list is populated, but it is more than necessary. We can just as easily call acpi_wakeup_device_init() directly from acpi_init(), which avoids the initcall magic. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> CC: Li Shaohua <shaohua.li@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r--drivers/acpi/bus.c1
-rw-r--r--drivers/acpi/internal.h2
-rw-r--r--drivers/acpi/wakeup.c7
3 files changed, 4 insertions, 6 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index a812e841cb64..7fe0945f7bcf 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -886,6 +886,7 @@ static int __init acpi_init(void)
886 acpi_system_init(); 886 acpi_system_init();
887 acpi_debug_init(); 887 acpi_debug_init();
888 acpi_sleep_proc_init(); 888 acpi_sleep_proc_init();
889 acpi_wakeup_device_init();
889 return result; 890 return result;
890} 891}
891 892
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 8870e5fd8494..11a69b53004e 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -22,6 +22,8 @@ int acpi_power_get_inferred_state(struct acpi_device *device);
22int acpi_power_transition(struct acpi_device *device, int state); 22int acpi_power_transition(struct acpi_device *device, int state);
23extern int acpi_power_nocheck; 23extern int acpi_power_nocheck;
24 24
25int acpi_wakeup_device_init(void);
26
25/* -------------------------------------------------------------------------- 27/* --------------------------------------------------------------------------
26 Embedded Controller 28 Embedded Controller
27 -------------------------------------------------------------------------- */ 29 -------------------------------------------------------------------------- */
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c
index 3f29fd53e9a6..5aee8c26cc9f 100644
--- a/drivers/acpi/wakeup.c
+++ b/drivers/acpi/wakeup.c
@@ -138,13 +138,10 @@ void acpi_disable_wakeup_device(u8 sleep_state)
138 spin_unlock(&acpi_device_lock); 138 spin_unlock(&acpi_device_lock);
139} 139}
140 140
141static int __init acpi_wakeup_device_init(void) 141int __init acpi_wakeup_device_init(void)
142{ 142{
143 struct list_head *node, *next; 143 struct list_head *node, *next;
144 144
145 if (acpi_disabled)
146 return 0;
147
148 spin_lock(&acpi_device_lock); 145 spin_lock(&acpi_device_lock);
149 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 146 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
150 struct acpi_device *dev = container_of(node, 147 struct acpi_device *dev = container_of(node,
@@ -165,5 +162,3 @@ static int __init acpi_wakeup_device_init(void)
165 spin_unlock(&acpi_device_lock); 162 spin_unlock(&acpi_device_lock);
166 return 0; 163 return 0;
167} 164}
168
169late_initcall(acpi_wakeup_device_init);