diff options
Diffstat (limited to 'drivers/acpi/utilities/utxface.c')
-rw-r--r-- | drivers/acpi/utilities/utxface.c | 69 |
1 files changed, 45 insertions, 24 deletions
diff --git a/drivers/acpi/utilities/utxface.c b/drivers/acpi/utilities/utxface.c index f06bd5e5e9d1..308a960871be 100644 --- a/drivers/acpi/utilities/utxface.c +++ b/drivers/acpi/utilities/utxface.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2005, R. Byron Moore | 8 | * Copyright (C) 2000 - 2006, R. Byron Moore |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -75,8 +75,7 @@ acpi_status acpi_initialize_subsystem(void) | |||
75 | 75 | ||
76 | status = acpi_os_initialize(); | 76 | status = acpi_os_initialize(); |
77 | if (ACPI_FAILURE(status)) { | 77 | if (ACPI_FAILURE(status)) { |
78 | ACPI_REPORT_ERROR(("OSD failed to initialize, %s\n", | 78 | ACPI_EXCEPTION((AE_INFO, status, "During OSL initialization")); |
79 | acpi_format_exception(status))); | ||
80 | return_ACPI_STATUS(status); | 79 | return_ACPI_STATUS(status); |
81 | } | 80 | } |
82 | 81 | ||
@@ -88,8 +87,8 @@ acpi_status acpi_initialize_subsystem(void) | |||
88 | 87 | ||
89 | status = acpi_ut_mutex_initialize(); | 88 | status = acpi_ut_mutex_initialize(); |
90 | if (ACPI_FAILURE(status)) { | 89 | if (ACPI_FAILURE(status)) { |
91 | ACPI_REPORT_ERROR(("Global mutex creation failure, %s\n", | 90 | ACPI_EXCEPTION((AE_INFO, status, |
92 | acpi_format_exception(status))); | 91 | "During Global Mutex creation")); |
93 | return_ACPI_STATUS(status); | 92 | return_ACPI_STATUS(status); |
94 | } | 93 | } |
95 | 94 | ||
@@ -99,15 +98,14 @@ acpi_status acpi_initialize_subsystem(void) | |||
99 | */ | 98 | */ |
100 | status = acpi_ns_root_initialize(); | 99 | status = acpi_ns_root_initialize(); |
101 | if (ACPI_FAILURE(status)) { | 100 | if (ACPI_FAILURE(status)) { |
102 | ACPI_REPORT_ERROR(("Namespace initialization failure, %s\n", | 101 | ACPI_EXCEPTION((AE_INFO, status, |
103 | acpi_format_exception(status))); | 102 | "During Namespace initialization")); |
104 | return_ACPI_STATUS(status); | 103 | return_ACPI_STATUS(status); |
105 | } | 104 | } |
106 | 105 | ||
107 | /* If configured, initialize the AML debugger */ | 106 | /* If configured, initialize the AML debugger */ |
108 | 107 | ||
109 | ACPI_DEBUGGER_EXEC(status = acpi_db_initialize()); | 108 | ACPI_DEBUGGER_EXEC(status = acpi_db_initialize()); |
110 | |||
111 | return_ACPI_STATUS(status); | 109 | return_ACPI_STATUS(status); |
112 | } | 110 | } |
113 | 111 | ||
@@ -154,8 +152,7 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
154 | 152 | ||
155 | status = acpi_enable(); | 153 | status = acpi_enable(); |
156 | if (ACPI_FAILURE(status)) { | 154 | if (ACPI_FAILURE(status)) { |
157 | ACPI_DEBUG_PRINT((ACPI_DB_WARN, | 155 | ACPI_WARNING((AE_INFO, "acpi_enable failed")); |
158 | "acpi_enable failed.\n")); | ||
159 | return_ACPI_STATUS(status); | 156 | return_ACPI_STATUS(status); |
160 | } | 157 | } |
161 | } | 158 | } |
@@ -178,10 +175,14 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
178 | /* | 175 | /* |
179 | * Initialize ACPI Event handling (Fixed and General Purpose) | 176 | * Initialize ACPI Event handling (Fixed and General Purpose) |
180 | * | 177 | * |
181 | * NOTE: We must have the hardware AND events initialized before we can | 178 | * Note1: We must have the hardware and events initialized before we can |
182 | * execute ANY control methods SAFELY. Any control method can require | 179 | * execute any control methods safely. Any control method can require |
183 | * ACPI hardware support, so the hardware MUST be initialized before | 180 | * ACPI hardware support, so the hardware must be fully initialized before |
184 | * execution! | 181 | * any method execution! |
182 | * | ||
183 | * Note2: Fixed events are initialized and enabled here. GPEs are | ||
184 | * initialized, but cannot be enabled until after the hardware is | ||
185 | * completely initialized (SCI and global_lock activated) | ||
185 | */ | 186 | */ |
186 | if (!(flags & ACPI_NO_EVENT_INIT)) { | 187 | if (!(flags & ACPI_NO_EVENT_INIT)) { |
187 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 188 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
@@ -193,8 +194,10 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
193 | } | 194 | } |
194 | } | 195 | } |
195 | 196 | ||
196 | /* Install the SCI handler and Global Lock handler */ | 197 | /* |
197 | 198 | * Install the SCI handler and Global Lock handler. This completes the | |
199 | * hardware initialization. | ||
200 | */ | ||
198 | if (!(flags & ACPI_NO_HANDLER_INIT)) { | 201 | if (!(flags & ACPI_NO_HANDLER_INIT)) { |
199 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 202 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
200 | "[Init] Installing SCI/GL handlers\n")); | 203 | "[Init] Installing SCI/GL handlers\n")); |
@@ -205,6 +208,24 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
205 | } | 208 | } |
206 | } | 209 | } |
207 | 210 | ||
211 | /* | ||
212 | * Complete the GPE initialization for the GPE blocks defined in the FADT | ||
213 | * (GPE block 0 and 1). | ||
214 | * | ||
215 | * Note1: This is where the _PRW methods are executed for the GPEs. These | ||
216 | * methods can only be executed after the SCI and Global Lock handlers are | ||
217 | * installed and initialized. | ||
218 | * | ||
219 | * Note2: Currently, there seems to be no need to run the _REG methods | ||
220 | * before execution of the _PRW methods and enabling of the GPEs. | ||
221 | */ | ||
222 | if (!(flags & ACPI_NO_EVENT_INIT)) { | ||
223 | status = acpi_ev_install_fadt_gpes(); | ||
224 | if (ACPI_FAILURE(status)) { | ||
225 | return (status); | ||
226 | } | ||
227 | } | ||
228 | |||
208 | return_ACPI_STATUS(status); | 229 | return_ACPI_STATUS(status); |
209 | } | 230 | } |
210 | 231 | ||
@@ -230,9 +251,9 @@ acpi_status acpi_initialize_objects(u32 flags) | |||
230 | /* | 251 | /* |
231 | * Run all _REG methods | 252 | * Run all _REG methods |
232 | * | 253 | * |
233 | * NOTE: Any objects accessed | 254 | * Note: Any objects accessed by the _REG methods will be automatically |
234 | * by the _REG methods will be automatically initialized, even if they | 255 | * initialized, even if they contain executable AML (see the call to |
235 | * contain executable AML (see call to acpi_ns_initialize_objects below). | 256 | * acpi_ns_initialize_objects below). |
236 | */ | 257 | */ |
237 | if (!(flags & ACPI_NO_ADDRESS_SPACE_INIT)) { | 258 | if (!(flags & ACPI_NO_ADDRESS_SPACE_INIT)) { |
238 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 259 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
@@ -245,9 +266,9 @@ acpi_status acpi_initialize_objects(u32 flags) | |||
245 | } | 266 | } |
246 | 267 | ||
247 | /* | 268 | /* |
248 | * Initialize the objects that remain uninitialized. This | 269 | * Initialize the objects that remain uninitialized. This runs the |
249 | * runs the executable AML that may be part of the declaration of these | 270 | * executable AML that may be part of the declaration of these objects: |
250 | * objects: operation_regions, buffer_fields, Buffers, and Packages. | 271 | * operation_regions, buffer_fields, Buffers, and Packages. |
251 | */ | 272 | */ |
252 | if (!(flags & ACPI_NO_OBJECT_INIT)) { | 273 | if (!(flags & ACPI_NO_OBJECT_INIT)) { |
253 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 274 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
@@ -260,8 +281,8 @@ acpi_status acpi_initialize_objects(u32 flags) | |||
260 | } | 281 | } |
261 | 282 | ||
262 | /* | 283 | /* |
263 | * Initialize all device objects in the namespace | 284 | * Initialize all device objects in the namespace. This runs the device |
264 | * This runs the _STA and _INI methods. | 285 | * _STA and _INI methods. |
265 | */ | 286 | */ |
266 | if (!(flags & ACPI_NO_DEVICE_INIT)) { | 287 | if (!(flags & ACPI_NO_DEVICE_INIT)) { |
267 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 288 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |