aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com>2007-02-10 01:32:16 -0500
committerLen Brown <len.brown@intel.com>2007-02-10 01:32:16 -0500
commitaafbcd165a2a02e6dff173f66772b3148229ace8 (patch)
tree57b808dad805d7708721e3c0ebddb718a14a3328
parented41dab90eb40ac4911e60406bc653661f0e4ce1 (diff)
ACPI: invoke acpi_sleep_init() earlier
late_initcall() is too late for acpi_sleep_init(). Call it directly from acpi_init code. http://bugzilla.kernel.org/show_bug.cgi?id=7887 Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com> Signed-off-by: Vladimir Lebedev <vladimir.p.lebedev@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r--drivers/acpi/bus.c13
-rw-r--r--drivers/acpi/sleep/main.c3
-rw-r--r--include/acpi/acpi_drivers.h10
3 files changed, 19 insertions, 7 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index c26468da4295..41cebe5bc807 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -147,7 +147,7 @@ int acpi_bus_get_power(acpi_handle handle, int *state)
147 *state = ACPI_STATE_D0; 147 *state = ACPI_STATE_D0;
148 } else { 148 } else {
149 /* 149 /*
150 * Get the device's power state either directly (via _PSC) or 150 * Get the device's power state either directly (via _PSC) or
151 * indirectly (via power resources). 151 * indirectly (via power resources).
152 */ 152 */
153 if (device->power.flags.explicit_get) { 153 if (device->power.flags.explicit_get) {
@@ -462,7 +462,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
462 "Received BUS CHECK notification for device [%s]\n", 462 "Received BUS CHECK notification for device [%s]\n",
463 device->pnp.bus_id)); 463 device->pnp.bus_id));
464 result = acpi_bus_check_scope(device); 464 result = acpi_bus_check_scope(device);
465 /* 465 /*
466 * TBD: We'll need to outsource certain events to non-ACPI 466 * TBD: We'll need to outsource certain events to non-ACPI
467 * drivers via the device manager (device.c). 467 * drivers via the device manager (device.c).
468 */ 468 */
@@ -473,7 +473,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
473 "Received DEVICE CHECK notification for device [%s]\n", 473 "Received DEVICE CHECK notification for device [%s]\n",
474 device->pnp.bus_id)); 474 device->pnp.bus_id));
475 result = acpi_bus_check_device(device, NULL); 475 result = acpi_bus_check_device(device, NULL);
476 /* 476 /*
477 * TBD: We'll need to outsource certain events to non-ACPI 477 * TBD: We'll need to outsource certain events to non-ACPI
478 * drivers via the device manager (device.c). 478 * drivers via the device manager (device.c).
479 */ 479 */
@@ -543,7 +543,7 @@ static int __init acpi_bus_init_irq(void)
543 char *message = NULL; 543 char *message = NULL;
544 544
545 545
546 /* 546 /*
547 * Let the system know what interrupt model we are using by 547 * Let the system know what interrupt model we are using by
548 * evaluating the \_PIC object, if exists. 548 * evaluating the \_PIC object, if exists.
549 */ 549 */
@@ -684,7 +684,7 @@ static int __init acpi_bus_init(void)
684 * the EC device is found in the namespace (i.e. before acpi_initialize_objects() 684 * the EC device is found in the namespace (i.e. before acpi_initialize_objects()
685 * is called). 685 * is called).
686 * 686 *
687 * This is accomplished by looking for the ECDT table, and getting 687 * This is accomplished by looking for the ECDT table, and getting
688 * the EC parameters out of that. 688 * the EC parameters out of that.
689 */ 689 */
690 status = acpi_ec_ecdt_probe(); 690 status = acpi_ec_ecdt_probe();
@@ -699,6 +699,9 @@ static int __init acpi_bus_init(void)
699 699
700 printk(KERN_INFO PREFIX "Interpreter enabled\n"); 700 printk(KERN_INFO PREFIX "Interpreter enabled\n");
701 701
702 /* Initialize sleep structures */
703 acpi_sleep_init();
704
702 /* 705 /*
703 * Get the system interrupt model and evaluate \_PIC. 706 * Get the system interrupt model and evaluate \_PIC.
704 */ 707 */
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index 62ce87d71651..37a0930fc0a6 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -200,7 +200,7 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
200 {}, 200 {},
201}; 201};
202 202
203static int __init acpi_sleep_init(void) 203int __init acpi_sleep_init(void)
204{ 204{
205 int i = 0; 205 int i = 0;
206 206
@@ -229,4 +229,3 @@ static int __init acpi_sleep_init(void)
229 return 0; 229 return 0;
230} 230}
231 231
232late_initcall(acpi_sleep_init);
diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h
index 4dc8a5043ef0..ce0e62fb28c1 100644
--- a/include/acpi/acpi_drivers.h
+++ b/include/acpi/acpi_drivers.h
@@ -128,4 +128,14 @@ extern void unregister_hotplug_dock_device(acpi_handle handle);
128#define register_hotplug_dock_device(h1, h2, c) (-ENODEV) 128#define register_hotplug_dock_device(h1, h2, c) (-ENODEV)
129#define unregister_hotplug_dock_device(h) do { } while(0) 129#define unregister_hotplug_dock_device(h) do { } while(0)
130#endif 130#endif
131
132/*--------------------------------------------------------------------------
133 Suspend/Resume
134 -------------------------------------------------------------------------- */
135#ifdef CONFIG_ACPI_SLEEP
136extern int acpi_sleep_init(void);
137#else
138#define acpi_sleep_init() do {} while (0)
139#endif
140
131#endif /*__ACPI_DRIVERS_H__*/ 141#endif /*__ACPI_DRIVERS_H__*/