blob: 59e46f257c02361c329d9df0af31da6167c95903 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/******************************************************************************
2 *
3 * Module Name: utglobal - Global variables for the ACPI subsystem
4 *
5 *****************************************************************************/
6
7/*
Len Brown75a44ce2008-04-23 23:00:13 -04008 * Copyright (C) 2000 - 2008, Intel Corp.
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#define DEFINE_ACPI_GLOBALS
45
Linus Torvalds1da177e2005-04-16 15:20:36 -070046#include <acpi/acpi.h>
Len Browne2f7a772009-01-09 00:30:03 -050047#include "accommon.h"
48#include "acnamesp.h"
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
50#define _COMPONENT ACPI_UTILITIES
Bob Mooree97d6bf2008-12-30 09:45:17 +080051ACPI_MODULE_NAME("utglobal")
Linus Torvalds1da177e2005-04-16 15:20:36 -070052
Robert Moore44f6c012005-04-18 22:49:35 -040053/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -070054 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070055 * Static global variable initialization.
56 *
57 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -070058/*
59 * We want the debug switches statically initialized so they
60 * are already set when the debugger is entered.
61 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070062/* Debug switch - level and trace mask */
Len Brown4be44fc2005-08-05 00:44:28 -040063u32 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
Linus Torvalds1da177e2005-04-16 15:20:36 -070064
65/* Debug switch - layer (component) mask */
66
Bjorn Helgaase76f4272008-11-13 17:30:13 -060067u32 acpi_dbg_layer = 0;
Len Brown4be44fc2005-08-05 00:44:28 -040068u32 acpi_gbl_nesting_level = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -070069
70/* Debugger globals */
71
Len Brown4be44fc2005-08-05 00:44:28 -040072u8 acpi_gbl_db_terminate_threads = FALSE;
73u8 acpi_gbl_abort_method = FALSE;
74u8 acpi_gbl_method_executing = FALSE;
Linus Torvalds1da177e2005-04-16 15:20:36 -070075
76/* System flags */
77
Len Brown4be44fc2005-08-05 00:44:28 -040078u32 acpi_gbl_startup_flags = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -070079
80/* System starts uninitialized */
81
Len Brown4be44fc2005-08-05 00:44:28 -040082u8 acpi_gbl_shutdown = TRUE;
Linus Torvalds1da177e2005-04-16 15:20:36 -070083
Len Brown4be44fc2005-08-05 00:44:28 -040084const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070085 "\\_S0_",
86 "\\_S1_",
87 "\\_S2_",
88 "\\_S3_",
89 "\\_S4_",
90 "\\_S5_"
91};
92
Len Brown4be44fc2005-08-05 00:44:28 -040093const char *acpi_gbl_highest_dstate_names[4] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070094 "_S1D",
95 "_S2D",
96 "_S3D",
97 "_S4D"
98};
99
Robert Moore44f6c012005-04-18 22:49:35 -0400100/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101 *
Bob Moore84fb2c92007-02-02 19:48:19 +0300102 * FUNCTION: acpi_format_exception
103 *
104 * PARAMETERS: Status - The acpi_status code to be formatted
105 *
106 * RETURN: A string containing the exception text. A valid pointer is
107 * always returned.
108 *
109 * DESCRIPTION: This function translates an ACPI exception into an ASCII string
110 * It is here instead of utxface.c so it is always present.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700111 *
112 ******************************************************************************/
113
Bob Moore84fb2c92007-02-02 19:48:19 +0300114const char *acpi_format_exception(acpi_status status)
115{
116 const char *exception = NULL;
117
118 ACPI_FUNCTION_ENTRY();
119
120 exception = acpi_ut_validate_exception(status);
121 if (!exception) {
122
123 /* Exception code was not recognized */
124
125 ACPI_ERROR((AE_INFO,
126 "Unknown exception code: 0x%8.8X", status));
127
128 exception = "UNKNOWN_STATUS_CODE";
Andrew Morton3e0d69e2007-08-25 01:28:20 -0400129 dump_stack();
Bob Moore84fb2c92007-02-02 19:48:19 +0300130 }
131
132 return (ACPI_CAST_PTR(const char, exception));
133}
134
135ACPI_EXPORT_SYMBOL(acpi_format_exception)
136
137/*******************************************************************************
138 *
139 * Namespace globals
140 *
141 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700142/*
143 * Predefined ACPI Names (Built-in to the Interpreter)
144 *
145 * NOTES:
146 * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
147 * during the initialization sequence.
148 * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
149 * perform a Notify() operation on it.
150 */
Bob Moore08978312005-10-21 00:00:00 -0400151const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = {
152 {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
153 {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
154 {"_SB_", ACPI_TYPE_DEVICE, NULL},
155 {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
156 {"_TZ_", ACPI_TYPE_THERMAL, NULL},
157 {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL},
158 {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
159 {"_GL_", ACPI_TYPE_MUTEX, (char *)1},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160
161#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
Bob Moore08978312005-10-21 00:00:00 -0400162 {"_OSI", ACPI_TYPE_METHOD, (char *)1},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700163#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -0700164
Robert Moore44f6c012005-04-18 22:49:35 -0400165 /* Table terminator */
166
Bob Moore08978312005-10-21 00:00:00 -0400167 {NULL, ACPI_TYPE_ANY, NULL}
Robert Moore44f6c012005-04-18 22:49:35 -0400168};
Linus Torvalds1da177e2005-04-16 15:20:36 -0700169
170/*
171 * Properties of the ACPI Object Types, both internal and external.
172 * The table is indexed by values of acpi_object_type
173 */
Len Brown4be44fc2005-08-05 00:44:28 -0400174const u8 acpi_gbl_ns_properties[] = {
175 ACPI_NS_NORMAL, /* 00 Any */
176 ACPI_NS_NORMAL, /* 01 Number */
177 ACPI_NS_NORMAL, /* 02 String */
178 ACPI_NS_NORMAL, /* 03 Buffer */
179 ACPI_NS_NORMAL, /* 04 Package */
180 ACPI_NS_NORMAL, /* 05 field_unit */
181 ACPI_NS_NEWSCOPE, /* 06 Device */
182 ACPI_NS_NORMAL, /* 07 Event */
183 ACPI_NS_NEWSCOPE, /* 08 Method */
184 ACPI_NS_NORMAL, /* 09 Mutex */
185 ACPI_NS_NORMAL, /* 10 Region */
186 ACPI_NS_NEWSCOPE, /* 11 Power */
187 ACPI_NS_NEWSCOPE, /* 12 Processor */
188 ACPI_NS_NEWSCOPE, /* 13 Thermal */
189 ACPI_NS_NORMAL, /* 14 buffer_field */
190 ACPI_NS_NORMAL, /* 15 ddb_handle */
191 ACPI_NS_NORMAL, /* 16 Debug Object */
192 ACPI_NS_NORMAL, /* 17 def_field */
193 ACPI_NS_NORMAL, /* 18 bank_field */
194 ACPI_NS_NORMAL, /* 19 index_field */
195 ACPI_NS_NORMAL, /* 20 Reference */
196 ACPI_NS_NORMAL, /* 21 Alias */
197 ACPI_NS_NORMAL, /* 22 method_alias */
198 ACPI_NS_NORMAL, /* 23 Notify */
199 ACPI_NS_NORMAL, /* 24 Address Handler */
200 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */
201 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */
202 ACPI_NS_NEWSCOPE, /* 27 Scope */
203 ACPI_NS_NORMAL, /* 28 Extra */
204 ACPI_NS_NORMAL, /* 29 Data */
205 ACPI_NS_NORMAL /* 30 Invalid */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700206};
207
Linus Torvalds1da177e2005-04-16 15:20:36 -0700208/* Hex to ASCII conversion table */
209
Len Brown4be44fc2005-08-05 00:44:28 -0400210static const char acpi_gbl_hex_to_ascii[] = {
211 '0', '1', '2', '3', '4', '5', '6', '7',
212 '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
Robert Moore44f6c012005-04-18 22:49:35 -0400213};
Linus Torvalds1da177e2005-04-16 15:20:36 -0700214
Robert Moore44f6c012005-04-18 22:49:35 -0400215/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700216 *
217 * FUNCTION: acpi_ut_hex_to_ascii_char
218 *
219 * PARAMETERS: Integer - Contains the hex digit
220 * Position - bit position of the digit within the
Robert Moore44f6c012005-04-18 22:49:35 -0400221 * integer (multiple of 4)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700222 *
Robert Moore44f6c012005-04-18 22:49:35 -0400223 * RETURN: The converted Ascii character
Linus Torvalds1da177e2005-04-16 15:20:36 -0700224 *
Robert Moore44f6c012005-04-18 22:49:35 -0400225 * DESCRIPTION: Convert a hex digit to an Ascii character
Linus Torvalds1da177e2005-04-16 15:20:36 -0700226 *
Robert Moore44f6c012005-04-18 22:49:35 -0400227 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228
Len Brown4be44fc2005-08-05 00:44:28 -0400229char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700230{
231
232 return (acpi_gbl_hex_to_ascii[(integer >> position) & 0xF]);
233}
234
Linus Torvalds1da177e2005-04-16 15:20:36 -0700235/******************************************************************************
236 *
237 * Event and Hardware globals
238 *
239 ******************************************************************************/
240
Len Brown4be44fc2005-08-05 00:44:28 -0400241struct acpi_bit_register_info acpi_gbl_bit_register_info[ACPI_NUM_BITREG] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700242 /* Name Parent Register Register Bit Position Register Bit Mask */
243
Len Brown4be44fc2005-08-05 00:44:28 -0400244 /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS,
245 ACPI_BITPOSITION_TIMER_STATUS,
246 ACPI_BITMASK_TIMER_STATUS},
247 /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS,
248 ACPI_BITPOSITION_BUS_MASTER_STATUS,
249 ACPI_BITMASK_BUS_MASTER_STATUS},
250 /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS,
251 ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,
252 ACPI_BITMASK_GLOBAL_LOCK_STATUS},
253 /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS,
254 ACPI_BITPOSITION_POWER_BUTTON_STATUS,
255 ACPI_BITMASK_POWER_BUTTON_STATUS},
256 /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS,
257 ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,
258 ACPI_BITMASK_SLEEP_BUTTON_STATUS},
259 /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS,
260 ACPI_BITPOSITION_RT_CLOCK_STATUS,
261 ACPI_BITMASK_RT_CLOCK_STATUS},
262 /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS,
263 ACPI_BITPOSITION_WAKE_STATUS,
264 ACPI_BITMASK_WAKE_STATUS},
265 /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS,
266 ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,
267 ACPI_BITMASK_PCIEXP_WAKE_STATUS},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700268
Len Brown4be44fc2005-08-05 00:44:28 -0400269 /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
270 ACPI_BITPOSITION_TIMER_ENABLE,
271 ACPI_BITMASK_TIMER_ENABLE},
272 /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
273 ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,
274 ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
275 /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
276 ACPI_BITPOSITION_POWER_BUTTON_ENABLE,
277 ACPI_BITMASK_POWER_BUTTON_ENABLE},
278 /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
279 ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,
280 ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
281 /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
282 ACPI_BITPOSITION_RT_CLOCK_ENABLE,
283 ACPI_BITMASK_RT_CLOCK_ENABLE},
Len Brown4be44fc2005-08-05 00:44:28 -0400284 /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE,
285 ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,
286 ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700287
Len Brown4be44fc2005-08-05 00:44:28 -0400288 /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL,
289 ACPI_BITPOSITION_SCI_ENABLE,
290 ACPI_BITMASK_SCI_ENABLE},
291 /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL,
292 ACPI_BITPOSITION_BUS_MASTER_RLD,
293 ACPI_BITMASK_BUS_MASTER_RLD},
294 /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL,
295 ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,
296 ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
Bob Moore82d79b82009-02-18 14:31:05 +0800297 /* ACPI_BITREG_SLEEP_TYPE */ {ACPI_REGISTER_PM1_CONTROL,
298 ACPI_BITPOSITION_SLEEP_TYPE,
299 ACPI_BITMASK_SLEEP_TYPE},
Len Brown4be44fc2005-08-05 00:44:28 -0400300 /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL,
301 ACPI_BITPOSITION_SLEEP_ENABLE,
302 ACPI_BITMASK_SLEEP_ENABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700303
Len Brown4be44fc2005-08-05 00:44:28 -0400304 /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL,
305 ACPI_BITPOSITION_ARB_DISABLE,
306 ACPI_BITMASK_ARB_DISABLE}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700307};
308
Len Brown4be44fc2005-08-05 00:44:28 -0400309struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] = {
310 /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS,
311 ACPI_BITREG_TIMER_ENABLE,
312 ACPI_BITMASK_TIMER_STATUS,
313 ACPI_BITMASK_TIMER_ENABLE},
314 /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS,
315 ACPI_BITREG_GLOBAL_LOCK_ENABLE,
316 ACPI_BITMASK_GLOBAL_LOCK_STATUS,
317 ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
318 /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS,
319 ACPI_BITREG_POWER_BUTTON_ENABLE,
320 ACPI_BITMASK_POWER_BUTTON_STATUS,
321 ACPI_BITMASK_POWER_BUTTON_ENABLE},
322 /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS,
323 ACPI_BITREG_SLEEP_BUTTON_ENABLE,
324 ACPI_BITMASK_SLEEP_BUTTON_STATUS,
325 ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
326 /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS,
327 ACPI_BITREG_RT_CLOCK_ENABLE,
328 ACPI_BITMASK_RT_CLOCK_STATUS,
329 ACPI_BITMASK_RT_CLOCK_ENABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700330};
331
Robert Moore44f6c012005-04-18 22:49:35 -0400332/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700333 *
334 * FUNCTION: acpi_ut_get_region_name
335 *
336 * PARAMETERS: None.
337 *
338 * RETURN: Status
339 *
340 * DESCRIPTION: Translate a Space ID into a name string (Debug only)
341 *
Robert Moore44f6c012005-04-18 22:49:35 -0400342 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700343
344/* Region type decoding */
345
Len Brown4be44fc2005-08-05 00:44:28 -0400346const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700347 "SystemMemory",
348 "SystemIO",
349 "PCI_Config",
350 "EmbeddedControl",
351 "SMBus",
Bob Moore34830722008-11-12 15:17:41 +0800352 "SystemCMOS",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700353 "PCIBARTarget",
354 "DataTable"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700355};
356
Len Brown4be44fc2005-08-05 00:44:28 -0400357char *acpi_ut_get_region_name(u8 space_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700358{
359
Len Brown4be44fc2005-08-05 00:44:28 -0400360 if (space_id >= ACPI_USER_REGION_BEGIN) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400361 return ("UserDefinedRegion");
Len Brown4be44fc2005-08-05 00:44:28 -0400362 } else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400363 return ("InvalidSpaceId");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700364 }
365
Bob Mooredefba1d2005-12-16 17:05:00 -0500366 return (ACPI_CAST_PTR(char, acpi_gbl_region_types[space_id]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700367}
368
Robert Moore44f6c012005-04-18 22:49:35 -0400369/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700370 *
371 * FUNCTION: acpi_ut_get_event_name
372 *
373 * PARAMETERS: None.
374 *
375 * RETURN: Status
376 *
377 * DESCRIPTION: Translate a Event ID into a name string (Debug only)
378 *
Robert Moore44f6c012005-04-18 22:49:35 -0400379 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700380
381/* Event type decoding */
382
Len Brown4be44fc2005-08-05 00:44:28 -0400383static const char *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700384 "PM_Timer",
Bob Moore08978312005-10-21 00:00:00 -0400385 "GlobalLock",
386 "PowerButton",
387 "SleepButton",
388 "RealTimeClock",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700389};
390
Len Brown4be44fc2005-08-05 00:44:28 -0400391char *acpi_ut_get_event_name(u32 event_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700392{
393
Len Brown4be44fc2005-08-05 00:44:28 -0400394 if (event_id > ACPI_EVENT_MAX) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400395 return ("InvalidEventID");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700396 }
397
Bob Moore4a90c7e2006-01-13 16:22:00 -0500398 return (ACPI_CAST_PTR(char, acpi_gbl_event_types[event_id]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700399}
400
Robert Moore44f6c012005-04-18 22:49:35 -0400401/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700402 *
403 * FUNCTION: acpi_ut_get_type_name
404 *
405 * PARAMETERS: None.
406 *
407 * RETURN: Status
408 *
409 * DESCRIPTION: Translate a Type ID into a name string (Debug only)
410 *
Robert Moore44f6c012005-04-18 22:49:35 -0400411 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700412
413/*
414 * Elements of acpi_gbl_ns_type_names below must match
415 * one-to-one with values of acpi_object_type
416 *
Robert Moore44f6c012005-04-18 22:49:35 -0400417 * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
418 * when stored in a table it really means that we have thus far seen no
419 * evidence to indicate what type is actually going to be stored for this entry.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700420 */
Len Brown4be44fc2005-08-05 00:44:28 -0400421static const char acpi_gbl_bad_type[] = "UNDEFINED";
Linus Torvalds1da177e2005-04-16 15:20:36 -0700422
Robert Moore44f6c012005-04-18 22:49:35 -0400423/* Printable names of the ACPI object types */
424
Len Brown4be44fc2005-08-05 00:44:28 -0400425static const char *acpi_gbl_ns_type_names[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700426 /* 00 */ "Untyped",
427 /* 01 */ "Integer",
428 /* 02 */ "String",
429 /* 03 */ "Buffer",
430 /* 04 */ "Package",
Bob Moore08978312005-10-21 00:00:00 -0400431 /* 05 */ "FieldUnit",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700432 /* 06 */ "Device",
433 /* 07 */ "Event",
434 /* 08 */ "Method",
435 /* 09 */ "Mutex",
436 /* 10 */ "Region",
437 /* 11 */ "Power",
438 /* 12 */ "Processor",
439 /* 13 */ "Thermal",
Bob Moore08978312005-10-21 00:00:00 -0400440 /* 14 */ "BufferField",
441 /* 15 */ "DdbHandle",
442 /* 16 */ "DebugObject",
443 /* 17 */ "RegionField",
444 /* 18 */ "BankField",
445 /* 19 */ "IndexField",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700446 /* 20 */ "Reference",
447 /* 21 */ "Alias",
Bob Moore08978312005-10-21 00:00:00 -0400448 /* 22 */ "MethodAlias",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700449 /* 23 */ "Notify",
Bob Moore08978312005-10-21 00:00:00 -0400450 /* 24 */ "AddrHandler",
451 /* 25 */ "ResourceDesc",
452 /* 26 */ "ResourceFld",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700453 /* 27 */ "Scope",
454 /* 28 */ "Extra",
455 /* 29 */ "Data",
456 /* 30 */ "Invalid"
457};
458
Len Brown4be44fc2005-08-05 00:44:28 -0400459char *acpi_ut_get_type_name(acpi_object_type type)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700460{
461
Len Brown4be44fc2005-08-05 00:44:28 -0400462 if (type > ACPI_TYPE_INVALID) {
Bob Moore4a90c7e2006-01-13 16:22:00 -0500463 return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700464 }
465
Bob Moore4a90c7e2006-01-13 16:22:00 -0500466 return (ACPI_CAST_PTR(char, acpi_gbl_ns_type_names[type]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700467}
468
Len Brown4be44fc2005-08-05 00:44:28 -0400469char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700470{
471
Len Brown4be44fc2005-08-05 00:44:28 -0400472 if (!obj_desc) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700473 return ("[NULL Object Descriptor]");
474 }
475
Bob Moore3371c192009-02-18 14:44:03 +0800476 return (acpi_ut_get_type_name(obj_desc->common.type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700477}
478
Robert Moore44f6c012005-04-18 22:49:35 -0400479/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700480 *
481 * FUNCTION: acpi_ut_get_node_name
482 *
483 * PARAMETERS: Object - A namespace node
484 *
485 * RETURN: Pointer to a string
486 *
487 * DESCRIPTION: Validate the node and return the node's ACPI name.
488 *
Robert Moore44f6c012005-04-18 22:49:35 -0400489 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700490
Len Brown4be44fc2005-08-05 00:44:28 -0400491char *acpi_ut_get_node_name(void *object)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700492{
Len Brown4be44fc2005-08-05 00:44:28 -0400493 struct acpi_namespace_node *node = (struct acpi_namespace_node *)object;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700494
495 /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
496
Len Brown4be44fc2005-08-05 00:44:28 -0400497 if (!object) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700498 return ("NULL");
499 }
500
501 /* Check for Root node */
502
Len Brown4be44fc2005-08-05 00:44:28 -0400503 if ((object == ACPI_ROOT_OBJECT) || (object == acpi_gbl_root_node)) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700504 return ("\"\\\" ");
505 }
506
507 /* Descriptor must be a namespace node */
508
Bob Moore61686122006-03-17 16:44:00 -0500509 if (ACPI_GET_DESCRIPTOR_TYPE(node) != ACPI_DESC_TYPE_NAMED) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700510 return ("####");
511 }
512
513 /* Name must be a valid ACPI name */
514
Bob Moorec51a4de2005-11-17 13:07:00 -0500515 if (!acpi_ut_valid_acpi_name(node->name.integer)) {
Bob Moore3d81b232007-02-02 19:48:19 +0300516 node->name.integer = acpi_ut_repair_name(node->name.ascii);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700517 }
518
519 /* Return the name */
520
521 return (node->name.ascii);
522}
523
Robert Moore44f6c012005-04-18 22:49:35 -0400524/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700525 *
526 * FUNCTION: acpi_ut_get_descriptor_name
527 *
528 * PARAMETERS: Object - An ACPI object
529 *
530 * RETURN: Pointer to a string
531 *
532 * DESCRIPTION: Validate object and return the descriptor type
533 *
Robert Moore44f6c012005-04-18 22:49:35 -0400534 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700535
Robert Moore44f6c012005-04-18 22:49:35 -0400536/* Printable names of object descriptor types */
537
Len Brown4be44fc2005-08-05 00:44:28 -0400538static const char *acpi_gbl_desc_type_names[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700539 /* 00 */ "Invalid",
540 /* 01 */ "Cached",
541 /* 02 */ "State-Generic",
542 /* 03 */ "State-Update",
543 /* 04 */ "State-Package",
544 /* 05 */ "State-Control",
Bob Moore08978312005-10-21 00:00:00 -0400545 /* 06 */ "State-RootParseScope",
546 /* 07 */ "State-ParseScope",
547 /* 08 */ "State-WalkScope",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700548 /* 09 */ "State-Result",
549 /* 10 */ "State-Notify",
550 /* 11 */ "State-Thread",
551 /* 12 */ "Walk",
552 /* 13 */ "Parser",
553 /* 14 */ "Operand",
554 /* 15 */ "Node"
555};
556
Len Brown4be44fc2005-08-05 00:44:28 -0400557char *acpi_ut_get_descriptor_name(void *object)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700558{
559
Len Brown4be44fc2005-08-05 00:44:28 -0400560 if (!object) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700561 return ("NULL OBJECT");
562 }
563
Len Brown4be44fc2005-08-05 00:44:28 -0400564 if (ACPI_GET_DESCRIPTOR_TYPE(object) > ACPI_DESC_TYPE_MAX) {
Bob Mooredefba1d2005-12-16 17:05:00 -0500565 return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700566 }
567
Bob Mooredefba1d2005-12-16 17:05:00 -0500568 return (ACPI_CAST_PTR(char,
569 acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE
570 (object)]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700571
572}
573
Bob Mooref02a99a2008-08-04 10:40:09 +0800574/*******************************************************************************
575 *
576 * FUNCTION: acpi_ut_get_reference_name
577 *
578 * PARAMETERS: Object - An ACPI reference object
579 *
580 * RETURN: Pointer to a string
581 *
582 * DESCRIPTION: Decode a reference object sub-type to a string.
583 *
584 ******************************************************************************/
585
586/* Printable names of reference object sub-types */
587
Bob Moore1044f1f2008-09-27 11:08:41 +0800588static const char *acpi_gbl_ref_class_names[] = {
589 /* 00 */ "Local",
590 /* 01 */ "Argument",
591 /* 02 */ "RefOf",
592 /* 03 */ "Index",
593 /* 04 */ "DdbHandle",
594 /* 05 */ "Named Object",
595 /* 06 */ "Debug"
596};
597
Bob Mooref02a99a2008-08-04 10:40:09 +0800598const char *acpi_ut_get_reference_name(union acpi_operand_object *object)
599{
Bob Moore1044f1f2008-09-27 11:08:41 +0800600 if (!object)
601 return "NULL Object";
Bob Mooref02a99a2008-08-04 10:40:09 +0800602
Bob Moore1044f1f2008-09-27 11:08:41 +0800603 if (ACPI_GET_DESCRIPTOR_TYPE(object) != ACPI_DESC_TYPE_OPERAND)
604 return "Not an Operand object";
Bob Mooref02a99a2008-08-04 10:40:09 +0800605
Bob Moore1044f1f2008-09-27 11:08:41 +0800606 if (object->common.type != ACPI_TYPE_LOCAL_REFERENCE)
607 return "Not a Reference object";
Bob Mooref02a99a2008-08-04 10:40:09 +0800608
Bob Moore1044f1f2008-09-27 11:08:41 +0800609 if (object->reference.class > ACPI_REFCLASS_MAX)
610 return "Unknown Reference class";
Bob Mooref02a99a2008-08-04 10:40:09 +0800611
Bob Moore1044f1f2008-09-27 11:08:41 +0800612 return acpi_gbl_ref_class_names[object->reference.class];
Bob Mooref02a99a2008-08-04 10:40:09 +0800613}
614
Linus Torvalds1da177e2005-04-16 15:20:36 -0700615#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
616/*
617 * Strings and procedures used for debug only
618 */
619
Robert Moore44f6c012005-04-18 22:49:35 -0400620/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700621 *
622 * FUNCTION: acpi_ut_get_mutex_name
623 *
Robert Moore44f6c012005-04-18 22:49:35 -0400624 * PARAMETERS: mutex_id - The predefined ID for this mutex.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700625 *
Robert Moore44f6c012005-04-18 22:49:35 -0400626 * RETURN: String containing the name of the mutex. Always returns a valid
627 * pointer.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700628 *
629 * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
630 *
Robert Moore44f6c012005-04-18 22:49:35 -0400631 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700632
Len Brown4be44fc2005-08-05 00:44:28 -0400633char *acpi_ut_get_mutex_name(u32 mutex_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700634{
635
Bob Moore4c90ece2006-06-08 16:29:00 -0400636 if (mutex_id > ACPI_MAX_MUTEX) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700637 return ("Invalid Mutex ID");
638 }
639
640 return (acpi_gbl_mutex_names[mutex_id]);
641}
Zhang Rui514d18d2008-04-10 19:06:44 +0400642
643/*******************************************************************************
644 *
645 * FUNCTION: acpi_ut_get_notify_name
646 *
647 * PARAMETERS: notify_value - Value from the Notify() request
648 *
649 * RETURN: String corresponding to the Notify Value.
650 *
651 * DESCRIPTION: Translate a Notify Value to a notify namestring.
652 *
653 ******************************************************************************/
654
655/* Names for Notify() values, used for debug output */
656
657static const char *acpi_gbl_notify_value_names[] = {
658 "Bus Check",
659 "Device Check",
660 "Device Wake",
661 "Eject Request",
662 "Device Check Light",
663 "Frequency Mismatch",
664 "Bus Mode Mismatch",
665 "Power Fault",
666 "Capabilities Check",
667 "Device PLD Check",
668 "Reserved",
669 "System Locality Update"
670};
671
672const char *acpi_ut_get_notify_name(u32 notify_value)
673{
674
675 if (notify_value <= ACPI_NOTIFY_MAX) {
676 return (acpi_gbl_notify_value_names[notify_value]);
677 } else if (notify_value <= ACPI_MAX_SYS_NOTIFY) {
678 return ("Reserved");
679 } else { /* Greater or equal to 0x80 */
680
681 return ("**Device Specific**");
682 }
683}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700684#endif
685
Robert Moore44f6c012005-04-18 22:49:35 -0400686/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700687 *
688 * FUNCTION: acpi_ut_valid_object_type
689 *
690 * PARAMETERS: Type - Object type to be validated
691 *
Robert Moore44f6c012005-04-18 22:49:35 -0400692 * RETURN: TRUE if valid object type, FALSE otherwise
Linus Torvalds1da177e2005-04-16 15:20:36 -0700693 *
694 * DESCRIPTION: Validate an object type
695 *
Robert Moore44f6c012005-04-18 22:49:35 -0400696 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700697
Len Brown4be44fc2005-08-05 00:44:28 -0400698u8 acpi_ut_valid_object_type(acpi_object_type type)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700699{
700
Len Brown4be44fc2005-08-05 00:44:28 -0400701 if (type > ACPI_TYPE_LOCAL_MAX) {
Bob Moore52fc0b02006-10-02 00:00:00 -0400702
Linus Torvalds1da177e2005-04-16 15:20:36 -0700703 /* Note: Assumes all TYPEs are contiguous (external/local) */
704
705 return (FALSE);
706 }
707
708 return (TRUE);
709}
710
Robert Moore44f6c012005-04-18 22:49:35 -0400711/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700712 *
Linus Torvalds1da177e2005-04-16 15:20:36 -0700713 * FUNCTION: acpi_ut_init_globals
714 *
Robert Moore44f6c012005-04-18 22:49:35 -0400715 * PARAMETERS: None
716 *
Yi Yangb417d402008-08-04 10:30:09 +0800717 * RETURN: Status
Linus Torvalds1da177e2005-04-16 15:20:36 -0700718 *
719 * DESCRIPTION: Init library globals. All globals that require specific
720 * initialization should be initialized here!
721 *
Robert Moore44f6c012005-04-18 22:49:35 -0400722 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700723
Yi Yangb417d402008-08-04 10:30:09 +0800724acpi_status acpi_ut_init_globals(void)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700725{
Len Brown4be44fc2005-08-05 00:44:28 -0400726 acpi_status status;
727 u32 i;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700728
Bob Mooreb229cf92006-04-21 17:15:00 -0400729 ACPI_FUNCTION_TRACE(ut_init_globals);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700730
Robert Moore73459f72005-06-24 00:00:00 -0400731 /* Create all memory caches */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700732
Len Brown4be44fc2005-08-05 00:44:28 -0400733 status = acpi_ut_create_caches();
734 if (ACPI_FAILURE(status)) {
Yi Yangb417d402008-08-04 10:30:09 +0800735 return_ACPI_STATUS(status);
Robert Moore73459f72005-06-24 00:00:00 -0400736 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700737
Linus Torvalds1da177e2005-04-16 15:20:36 -0700738 /* Mutex locked flags */
739
Bob Moore4c90ece2006-06-08 16:29:00 -0400740 for (i = 0; i < ACPI_NUM_MUTEX; i++) {
Len Brown4be44fc2005-08-05 00:44:28 -0400741 acpi_gbl_mutex_info[i].mutex = NULL;
742 acpi_gbl_mutex_info[i].thread_id = ACPI_MUTEX_NOT_ACQUIRED;
743 acpi_gbl_mutex_info[i].use_count = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700744 }
745
Bob Moore28f55eb2005-12-02 18:27:00 -0500746 for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) {
747 acpi_gbl_owner_id_mask[i] = 0;
748 }
Bob Mooreec41f192009-02-18 15:03:30 +0800749
750 /* Last owner_iD is never valid */
751
752 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000;
Bob Moore28f55eb2005-12-02 18:27:00 -0500753
Linus Torvalds1da177e2005-04-16 15:20:36 -0700754 /* GPE support */
755
Len Brown4be44fc2005-08-05 00:44:28 -0400756 acpi_gbl_gpe_xrupt_list_head = NULL;
757 acpi_gbl_gpe_fadt_blocks[0] = NULL;
758 acpi_gbl_gpe_fadt_blocks[1] = NULL;
Bob Mooree97d6bf2008-12-30 09:45:17 +0800759 acpi_current_gpe_count = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700760
Lin Ming3e08e2d2008-04-10 19:06:38 +0400761 /* Global handlers */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700762
Len Brown4be44fc2005-08-05 00:44:28 -0400763 acpi_gbl_system_notify.handler = NULL;
764 acpi_gbl_device_notify.handler = NULL;
765 acpi_gbl_exception_handler = NULL;
766 acpi_gbl_init_handler = NULL;
Lin Ming3e08e2d2008-04-10 19:06:38 +0400767 acpi_gbl_table_handler = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700768
Linus Torvalds1da177e2005-04-16 15:20:36 -0700769 /* Global Lock support */
770
Bob Moore967440e2006-06-23 17:04:00 -0400771 acpi_gbl_global_lock_semaphore = NULL;
Bob Moorec81da662007-02-02 19:48:18 +0300772 acpi_gbl_global_lock_mutex = NULL;
Len Brown4be44fc2005-08-05 00:44:28 -0400773 acpi_gbl_global_lock_acquired = FALSE;
Len Brown4be44fc2005-08-05 00:44:28 -0400774 acpi_gbl_global_lock_handle = 0;
Bob Moore009c4cbe2008-11-12 15:34:52 +0800775 acpi_gbl_global_lock_present = FALSE;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700776
777 /* Miscellaneous variables */
778
Len Brown4be44fc2005-08-05 00:44:28 -0400779 acpi_gbl_cm_single_step = FALSE;
780 acpi_gbl_db_terminate_threads = FALSE;
781 acpi_gbl_shutdown = FALSE;
782 acpi_gbl_ns_lookup_count = 0;
783 acpi_gbl_ps_find_count = 0;
784 acpi_gbl_acpi_hardware_present = TRUE;
Bob Moore28f55eb2005-12-02 18:27:00 -0500785 acpi_gbl_last_owner_id_index = 0;
786 acpi_gbl_next_owner_id_offset = 0;
Bob Moore50eca3e2005-09-30 19:03:00 -0400787 acpi_gbl_trace_method_name = 0;
788 acpi_gbl_trace_dbg_level = 0;
789 acpi_gbl_trace_dbg_layer = 0;
Len Brown4be44fc2005-08-05 00:44:28 -0400790 acpi_gbl_debugger_configuration = DEBUGGER_THREADING;
791 acpi_gbl_db_output_flags = ACPI_DB_CONSOLE_OUTPUT;
Bob Moore7f071902009-03-19 09:37:47 +0800792 acpi_gbl_osi_data = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700793
794 /* Hardware oriented */
795
Len Brown4be44fc2005-08-05 00:44:28 -0400796 acpi_gbl_events_initialized = FALSE;
797 acpi_gbl_system_awake_and_running = TRUE;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700798
799 /* Namespace */
800
Len Brown4be44fc2005-08-05 00:44:28 -0400801 acpi_gbl_root_node = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700802 acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;
Bob Moore61686122006-03-17 16:44:00 -0500803 acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED;
Len Brown4be44fc2005-08-05 00:44:28 -0400804 acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE;
805 acpi_gbl_root_node_struct.child = NULL;
806 acpi_gbl_root_node_struct.peer = NULL;
807 acpi_gbl_root_node_struct.object = NULL;
808 acpi_gbl_root_node_struct.flags = ANOBJ_END_OF_PEER_LIST;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700809
810#ifdef ACPI_DEBUG_OUTPUT
Bob Moore1d18c052008-04-10 19:06:40 +0400811 acpi_gbl_lowest_stack_pointer = ACPI_CAST_PTR(acpi_size, ACPI_SIZE_MAX);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700812#endif
813
Bob Moored41eb992007-02-02 19:48:23 +0300814#ifdef ACPI_DBG_TRACK_ALLOCATIONS
815 acpi_gbl_display_final_mem_stats = FALSE;
816#endif
817
Yi Yangb417d402008-08-04 10:30:09 +0800818 return_ACPI_STATUS(AE_OK);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700819}
Bob Moore83135242006-10-03 00:00:00 -0400820
Bob Mooree97d6bf2008-12-30 09:45:17 +0800821ACPI_EXPORT_SYMBOL(acpi_gbl_FADT)
Bob Moore83135242006-10-03 00:00:00 -0400822ACPI_EXPORT_SYMBOL(acpi_dbg_level)
Bob Moore1044f1f2008-09-27 11:08:41 +0800823ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
Bob Mooree97d6bf2008-12-30 09:45:17 +0800824ACPI_EXPORT_SYMBOL(acpi_current_gpe_count)