diff options
| author | Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com> | 2007-02-10 01:32:16 -0500 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2007-02-10 01:32:16 -0500 |
| commit | aafbcd165a2a02e6dff173f66772b3148229ace8 (patch) | |
| tree | 57b808dad805d7708721e3c0ebddb718a14a3328 | |
| parent | ed41dab90eb40ac4911e60406bc653661f0e4ce1 (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.c | 13 | ||||
| -rw-r--r-- | drivers/acpi/sleep/main.c | 3 | ||||
| -rw-r--r-- | include/acpi/acpi_drivers.h | 10 |
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 | ||
| 203 | static int __init acpi_sleep_init(void) | 203 | int __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 | ||
| 232 | late_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 | ||
| 136 | extern 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__*/ |
