blob: bcace577183bc7a616adfc3704d3fbec6d7da498 [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>
47#include <acpi/acnamesp.h>
Bob Mooref02a99a2008-08-04 10:40:09 +080048#include <acpi/amlcode.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
Bob Mooref3d2e782007-02-02 19:48:18 +030050ACPI_EXPORT_SYMBOL(acpi_gbl_FADT)
Linus Torvalds1da177e2005-04-16 15:20:36 -070051#define _COMPONENT ACPI_UTILITIES
Bob Mooref3d2e782007-02-02 19:48:18 +030052 ACPI_MODULE_NAME("utglobal")
Linus Torvalds1da177e2005-04-16 15:20:36 -070053
Robert Moore44f6c012005-04-18 22:49:35 -040054/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -070055 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070056 * Static global variable initialization.
57 *
58 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -070059/*
60 * We want the debug switches statically initialized so they
61 * are already set when the debugger is entered.
62 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070063/* Debug switch - level and trace mask */
Len Brown4be44fc2005-08-05 00:44:28 -040064u32 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
Linus Torvalds1da177e2005-04-16 15:20:36 -070065
66/* Debug switch - layer (component) mask */
67
Len Brown4be44fc2005-08-05 00:44:28 -040068u32 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
Len Brown4be44fc2005-08-05 00:44:28 -040069u32 acpi_gbl_nesting_level = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -070070
71/* Debugger globals */
72
Len Brown4be44fc2005-08-05 00:44:28 -040073u8 acpi_gbl_db_terminate_threads = FALSE;
74u8 acpi_gbl_abort_method = FALSE;
75u8 acpi_gbl_method_executing = FALSE;
Linus Torvalds1da177e2005-04-16 15:20:36 -070076
77/* System flags */
78
Len Brown4be44fc2005-08-05 00:44:28 -040079u32 acpi_gbl_startup_flags = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -070080
81/* System starts uninitialized */
82
Len Brown4be44fc2005-08-05 00:44:28 -040083u8 acpi_gbl_shutdown = TRUE;
Linus Torvalds1da177e2005-04-16 15:20:36 -070084
Len Brown4be44fc2005-08-05 00:44:28 -040085const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070086 "\\_S0_",
87 "\\_S1_",
88 "\\_S2_",
89 "\\_S3_",
90 "\\_S4_",
91 "\\_S5_"
92};
93
Len Brown4be44fc2005-08-05 00:44:28 -040094const char *acpi_gbl_highest_dstate_names[4] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070095 "_S1D",
96 "_S2D",
97 "_S3D",
98 "_S4D"
99};
100
Robert Moore44f6c012005-04-18 22:49:35 -0400101/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700102 *
Bob Moore84fb2c92007-02-02 19:48:19 +0300103 * FUNCTION: acpi_format_exception
104 *
105 * PARAMETERS: Status - The acpi_status code to be formatted
106 *
107 * RETURN: A string containing the exception text. A valid pointer is
108 * always returned.
109 *
110 * DESCRIPTION: This function translates an ACPI exception into an ASCII string
111 * It is here instead of utxface.c so it is always present.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112 *
113 ******************************************************************************/
114
Bob Moore84fb2c92007-02-02 19:48:19 +0300115const char *acpi_format_exception(acpi_status status)
116{
117 const char *exception = NULL;
118
119 ACPI_FUNCTION_ENTRY();
120
121 exception = acpi_ut_validate_exception(status);
122 if (!exception) {
123
124 /* Exception code was not recognized */
125
126 ACPI_ERROR((AE_INFO,
127 "Unknown exception code: 0x%8.8X", status));
128
129 exception = "UNKNOWN_STATUS_CODE";
Andrew Morton3e0d69e2007-08-25 01:28:20 -0400130 dump_stack();
Bob Moore84fb2c92007-02-02 19:48:19 +0300131 }
132
133 return (ACPI_CAST_PTR(const char, exception));
134}
135
136ACPI_EXPORT_SYMBOL(acpi_format_exception)
137
138/*******************************************************************************
139 *
140 * Namespace globals
141 *
142 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143/*
144 * Predefined ACPI Names (Built-in to the Interpreter)
145 *
146 * NOTES:
147 * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
148 * during the initialization sequence.
149 * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
150 * perform a Notify() operation on it.
151 */
Bob Moore08978312005-10-21 00:00:00 -0400152const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = {
153 {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
154 {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
155 {"_SB_", ACPI_TYPE_DEVICE, NULL},
156 {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
157 {"_TZ_", ACPI_TYPE_THERMAL, NULL},
158 {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL},
159 {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
160 {"_GL_", ACPI_TYPE_MUTEX, (char *)1},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700161
162#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
Bob Moore08978312005-10-21 00:00:00 -0400163 {"_OSI", ACPI_TYPE_METHOD, (char *)1},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700164#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -0700165
Robert Moore44f6c012005-04-18 22:49:35 -0400166 /* Table terminator */
167
Bob Moore08978312005-10-21 00:00:00 -0400168 {NULL, ACPI_TYPE_ANY, NULL}
Robert Moore44f6c012005-04-18 22:49:35 -0400169};
Linus Torvalds1da177e2005-04-16 15:20:36 -0700170
171/*
172 * Properties of the ACPI Object Types, both internal and external.
173 * The table is indexed by values of acpi_object_type
174 */
Len Brown4be44fc2005-08-05 00:44:28 -0400175const u8 acpi_gbl_ns_properties[] = {
176 ACPI_NS_NORMAL, /* 00 Any */
177 ACPI_NS_NORMAL, /* 01 Number */
178 ACPI_NS_NORMAL, /* 02 String */
179 ACPI_NS_NORMAL, /* 03 Buffer */
180 ACPI_NS_NORMAL, /* 04 Package */
181 ACPI_NS_NORMAL, /* 05 field_unit */
182 ACPI_NS_NEWSCOPE, /* 06 Device */
183 ACPI_NS_NORMAL, /* 07 Event */
184 ACPI_NS_NEWSCOPE, /* 08 Method */
185 ACPI_NS_NORMAL, /* 09 Mutex */
186 ACPI_NS_NORMAL, /* 10 Region */
187 ACPI_NS_NEWSCOPE, /* 11 Power */
188 ACPI_NS_NEWSCOPE, /* 12 Processor */
189 ACPI_NS_NEWSCOPE, /* 13 Thermal */
190 ACPI_NS_NORMAL, /* 14 buffer_field */
191 ACPI_NS_NORMAL, /* 15 ddb_handle */
192 ACPI_NS_NORMAL, /* 16 Debug Object */
193 ACPI_NS_NORMAL, /* 17 def_field */
194 ACPI_NS_NORMAL, /* 18 bank_field */
195 ACPI_NS_NORMAL, /* 19 index_field */
196 ACPI_NS_NORMAL, /* 20 Reference */
197 ACPI_NS_NORMAL, /* 21 Alias */
198 ACPI_NS_NORMAL, /* 22 method_alias */
199 ACPI_NS_NORMAL, /* 23 Notify */
200 ACPI_NS_NORMAL, /* 24 Address Handler */
201 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */
202 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */
203 ACPI_NS_NEWSCOPE, /* 27 Scope */
204 ACPI_NS_NORMAL, /* 28 Extra */
205 ACPI_NS_NORMAL, /* 29 Data */
206 ACPI_NS_NORMAL /* 30 Invalid */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700207};
208
Linus Torvalds1da177e2005-04-16 15:20:36 -0700209/* Hex to ASCII conversion table */
210
Len Brown4be44fc2005-08-05 00:44:28 -0400211static const char acpi_gbl_hex_to_ascii[] = {
212 '0', '1', '2', '3', '4', '5', '6', '7',
213 '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
Robert Moore44f6c012005-04-18 22:49:35 -0400214};
Linus Torvalds1da177e2005-04-16 15:20:36 -0700215
Robert Moore44f6c012005-04-18 22:49:35 -0400216/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700217 *
218 * FUNCTION: acpi_ut_hex_to_ascii_char
219 *
220 * PARAMETERS: Integer - Contains the hex digit
221 * Position - bit position of the digit within the
Robert Moore44f6c012005-04-18 22:49:35 -0400222 * integer (multiple of 4)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700223 *
Robert Moore44f6c012005-04-18 22:49:35 -0400224 * RETURN: The converted Ascii character
Linus Torvalds1da177e2005-04-16 15:20:36 -0700225 *
Robert Moore44f6c012005-04-18 22:49:35 -0400226 * DESCRIPTION: Convert a hex digit to an Ascii character
Linus Torvalds1da177e2005-04-16 15:20:36 -0700227 *
Robert Moore44f6c012005-04-18 22:49:35 -0400228 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700229
Len Brown4be44fc2005-08-05 00:44:28 -0400230char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700231{
232
233 return (acpi_gbl_hex_to_ascii[(integer >> position) & 0xF]);
234}
235
Linus Torvalds1da177e2005-04-16 15:20:36 -0700236/******************************************************************************
237 *
238 * Event and Hardware globals
239 *
240 ******************************************************************************/
241
Len Brown4be44fc2005-08-05 00:44:28 -0400242struct acpi_bit_register_info acpi_gbl_bit_register_info[ACPI_NUM_BITREG] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700243 /* Name Parent Register Register Bit Position Register Bit Mask */
244
Len Brown4be44fc2005-08-05 00:44:28 -0400245 /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS,
246 ACPI_BITPOSITION_TIMER_STATUS,
247 ACPI_BITMASK_TIMER_STATUS},
248 /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS,
249 ACPI_BITPOSITION_BUS_MASTER_STATUS,
250 ACPI_BITMASK_BUS_MASTER_STATUS},
251 /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS,
252 ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,
253 ACPI_BITMASK_GLOBAL_LOCK_STATUS},
254 /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS,
255 ACPI_BITPOSITION_POWER_BUTTON_STATUS,
256 ACPI_BITMASK_POWER_BUTTON_STATUS},
257 /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS,
258 ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,
259 ACPI_BITMASK_SLEEP_BUTTON_STATUS},
260 /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS,
261 ACPI_BITPOSITION_RT_CLOCK_STATUS,
262 ACPI_BITMASK_RT_CLOCK_STATUS},
263 /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS,
264 ACPI_BITPOSITION_WAKE_STATUS,
265 ACPI_BITMASK_WAKE_STATUS},
266 /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS,
267 ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,
268 ACPI_BITMASK_PCIEXP_WAKE_STATUS},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700269
Len Brown4be44fc2005-08-05 00:44:28 -0400270 /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
271 ACPI_BITPOSITION_TIMER_ENABLE,
272 ACPI_BITMASK_TIMER_ENABLE},
273 /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
274 ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,
275 ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
276 /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
277 ACPI_BITPOSITION_POWER_BUTTON_ENABLE,
278 ACPI_BITMASK_POWER_BUTTON_ENABLE},
279 /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
280 ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,
281 ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
282 /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
283 ACPI_BITPOSITION_RT_CLOCK_ENABLE,
284 ACPI_BITMASK_RT_CLOCK_ENABLE},
285 /* ACPI_BITREG_WAKE_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, 0, 0},
286 /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE,
287 ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,
288 ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700289
Len Brown4be44fc2005-08-05 00:44:28 -0400290 /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL,
291 ACPI_BITPOSITION_SCI_ENABLE,
292 ACPI_BITMASK_SCI_ENABLE},
293 /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL,
294 ACPI_BITPOSITION_BUS_MASTER_RLD,
295 ACPI_BITMASK_BUS_MASTER_RLD},
296 /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL,
297 ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,
298 ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
299 /* ACPI_BITREG_SLEEP_TYPE_A */ {ACPI_REGISTER_PM1_CONTROL,
300 ACPI_BITPOSITION_SLEEP_TYPE_X,
301 ACPI_BITMASK_SLEEP_TYPE_X},
302 /* ACPI_BITREG_SLEEP_TYPE_B */ {ACPI_REGISTER_PM1_CONTROL,
303 ACPI_BITPOSITION_SLEEP_TYPE_X,
304 ACPI_BITMASK_SLEEP_TYPE_X},
305 /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL,
306 ACPI_BITPOSITION_SLEEP_ENABLE,
307 ACPI_BITMASK_SLEEP_ENABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700308
Len Brown4be44fc2005-08-05 00:44:28 -0400309 /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL,
310 ACPI_BITPOSITION_ARB_DISABLE,
311 ACPI_BITMASK_ARB_DISABLE}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700312};
313
Len Brown4be44fc2005-08-05 00:44:28 -0400314struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] = {
315 /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS,
316 ACPI_BITREG_TIMER_ENABLE,
317 ACPI_BITMASK_TIMER_STATUS,
318 ACPI_BITMASK_TIMER_ENABLE},
319 /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS,
320 ACPI_BITREG_GLOBAL_LOCK_ENABLE,
321 ACPI_BITMASK_GLOBAL_LOCK_STATUS,
322 ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
323 /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS,
324 ACPI_BITREG_POWER_BUTTON_ENABLE,
325 ACPI_BITMASK_POWER_BUTTON_STATUS,
326 ACPI_BITMASK_POWER_BUTTON_ENABLE},
327 /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS,
328 ACPI_BITREG_SLEEP_BUTTON_ENABLE,
329 ACPI_BITMASK_SLEEP_BUTTON_STATUS,
330 ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
331 /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS,
332 ACPI_BITREG_RT_CLOCK_ENABLE,
333 ACPI_BITMASK_RT_CLOCK_STATUS,
334 ACPI_BITMASK_RT_CLOCK_ENABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335};
336
Robert Moore44f6c012005-04-18 22:49:35 -0400337/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700338 *
339 * FUNCTION: acpi_ut_get_region_name
340 *
341 * PARAMETERS: None.
342 *
343 * RETURN: Status
344 *
345 * DESCRIPTION: Translate a Space ID into a name string (Debug only)
346 *
Robert Moore44f6c012005-04-18 22:49:35 -0400347 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700348
349/* Region type decoding */
350
Len Brown4be44fc2005-08-05 00:44:28 -0400351const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700352 "SystemMemory",
353 "SystemIO",
354 "PCI_Config",
355 "EmbeddedControl",
356 "SMBus",
357 "CMOS",
358 "PCIBARTarget",
359 "DataTable"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700360};
361
Len Brown4be44fc2005-08-05 00:44:28 -0400362char *acpi_ut_get_region_name(u8 space_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700363{
364
Len Brown4be44fc2005-08-05 00:44:28 -0400365 if (space_id >= ACPI_USER_REGION_BEGIN) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400366 return ("UserDefinedRegion");
Len Brown4be44fc2005-08-05 00:44:28 -0400367 } else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400368 return ("InvalidSpaceId");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700369 }
370
Bob Mooredefba1d2005-12-16 17:05:00 -0500371 return (ACPI_CAST_PTR(char, acpi_gbl_region_types[space_id]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700372}
373
Robert Moore44f6c012005-04-18 22:49:35 -0400374/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700375 *
376 * FUNCTION: acpi_ut_get_event_name
377 *
378 * PARAMETERS: None.
379 *
380 * RETURN: Status
381 *
382 * DESCRIPTION: Translate a Event ID into a name string (Debug only)
383 *
Robert Moore44f6c012005-04-18 22:49:35 -0400384 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700385
386/* Event type decoding */
387
Len Brown4be44fc2005-08-05 00:44:28 -0400388static const char *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700389 "PM_Timer",
Bob Moore08978312005-10-21 00:00:00 -0400390 "GlobalLock",
391 "PowerButton",
392 "SleepButton",
393 "RealTimeClock",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700394};
395
Len Brown4be44fc2005-08-05 00:44:28 -0400396char *acpi_ut_get_event_name(u32 event_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700397{
398
Len Brown4be44fc2005-08-05 00:44:28 -0400399 if (event_id > ACPI_EVENT_MAX) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400400 return ("InvalidEventID");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700401 }
402
Bob Moore4a90c7e2006-01-13 16:22:00 -0500403 return (ACPI_CAST_PTR(char, acpi_gbl_event_types[event_id]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700404}
405
Robert Moore44f6c012005-04-18 22:49:35 -0400406/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700407 *
408 * FUNCTION: acpi_ut_get_type_name
409 *
410 * PARAMETERS: None.
411 *
412 * RETURN: Status
413 *
414 * DESCRIPTION: Translate a Type ID into a name string (Debug only)
415 *
Robert Moore44f6c012005-04-18 22:49:35 -0400416 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700417
418/*
419 * Elements of acpi_gbl_ns_type_names below must match
420 * one-to-one with values of acpi_object_type
421 *
Robert Moore44f6c012005-04-18 22:49:35 -0400422 * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
423 * when stored in a table it really means that we have thus far seen no
424 * evidence to indicate what type is actually going to be stored for this entry.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700425 */
Len Brown4be44fc2005-08-05 00:44:28 -0400426static const char acpi_gbl_bad_type[] = "UNDEFINED";
Linus Torvalds1da177e2005-04-16 15:20:36 -0700427
Robert Moore44f6c012005-04-18 22:49:35 -0400428/* Printable names of the ACPI object types */
429
Len Brown4be44fc2005-08-05 00:44:28 -0400430static const char *acpi_gbl_ns_type_names[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700431 /* 00 */ "Untyped",
432 /* 01 */ "Integer",
433 /* 02 */ "String",
434 /* 03 */ "Buffer",
435 /* 04 */ "Package",
Bob Moore08978312005-10-21 00:00:00 -0400436 /* 05 */ "FieldUnit",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700437 /* 06 */ "Device",
438 /* 07 */ "Event",
439 /* 08 */ "Method",
440 /* 09 */ "Mutex",
441 /* 10 */ "Region",
442 /* 11 */ "Power",
443 /* 12 */ "Processor",
444 /* 13 */ "Thermal",
Bob Moore08978312005-10-21 00:00:00 -0400445 /* 14 */ "BufferField",
446 /* 15 */ "DdbHandle",
447 /* 16 */ "DebugObject",
448 /* 17 */ "RegionField",
449 /* 18 */ "BankField",
450 /* 19 */ "IndexField",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700451 /* 20 */ "Reference",
452 /* 21 */ "Alias",
Bob Moore08978312005-10-21 00:00:00 -0400453 /* 22 */ "MethodAlias",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700454 /* 23 */ "Notify",
Bob Moore08978312005-10-21 00:00:00 -0400455 /* 24 */ "AddrHandler",
456 /* 25 */ "ResourceDesc",
457 /* 26 */ "ResourceFld",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700458 /* 27 */ "Scope",
459 /* 28 */ "Extra",
460 /* 29 */ "Data",
461 /* 30 */ "Invalid"
462};
463
Len Brown4be44fc2005-08-05 00:44:28 -0400464char *acpi_ut_get_type_name(acpi_object_type type)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700465{
466
Len Brown4be44fc2005-08-05 00:44:28 -0400467 if (type > ACPI_TYPE_INVALID) {
Bob Moore4a90c7e2006-01-13 16:22:00 -0500468 return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700469 }
470
Bob Moore4a90c7e2006-01-13 16:22:00 -0500471 return (ACPI_CAST_PTR(char, acpi_gbl_ns_type_names[type]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700472}
473
Len Brown4be44fc2005-08-05 00:44:28 -0400474char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700475{
476
Len Brown4be44fc2005-08-05 00:44:28 -0400477 if (!obj_desc) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700478 return ("[NULL Object Descriptor]");
479 }
480
Len Brown4be44fc2005-08-05 00:44:28 -0400481 return (acpi_ut_get_type_name(ACPI_GET_OBJECT_TYPE(obj_desc)));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700482}
483
Robert Moore44f6c012005-04-18 22:49:35 -0400484/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700485 *
486 * FUNCTION: acpi_ut_get_node_name
487 *
488 * PARAMETERS: Object - A namespace node
489 *
490 * RETURN: Pointer to a string
491 *
492 * DESCRIPTION: Validate the node and return the node's ACPI name.
493 *
Robert Moore44f6c012005-04-18 22:49:35 -0400494 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700495
Len Brown4be44fc2005-08-05 00:44:28 -0400496char *acpi_ut_get_node_name(void *object)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700497{
Len Brown4be44fc2005-08-05 00:44:28 -0400498 struct acpi_namespace_node *node = (struct acpi_namespace_node *)object;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700499
500 /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
501
Len Brown4be44fc2005-08-05 00:44:28 -0400502 if (!object) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700503 return ("NULL");
504 }
505
506 /* Check for Root node */
507
Len Brown4be44fc2005-08-05 00:44:28 -0400508 if ((object == ACPI_ROOT_OBJECT) || (object == acpi_gbl_root_node)) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700509 return ("\"\\\" ");
510 }
511
512 /* Descriptor must be a namespace node */
513
Bob Moore61686122006-03-17 16:44:00 -0500514 if (ACPI_GET_DESCRIPTOR_TYPE(node) != ACPI_DESC_TYPE_NAMED) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700515 return ("####");
516 }
517
518 /* Name must be a valid ACPI name */
519
Bob Moorec51a4de2005-11-17 13:07:00 -0500520 if (!acpi_ut_valid_acpi_name(node->name.integer)) {
Bob Moore3d81b232007-02-02 19:48:19 +0300521 node->name.integer = acpi_ut_repair_name(node->name.ascii);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700522 }
523
524 /* Return the name */
525
526 return (node->name.ascii);
527}
528
Robert Moore44f6c012005-04-18 22:49:35 -0400529/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700530 *
531 * FUNCTION: acpi_ut_get_descriptor_name
532 *
533 * PARAMETERS: Object - An ACPI object
534 *
535 * RETURN: Pointer to a string
536 *
537 * DESCRIPTION: Validate object and return the descriptor type
538 *
Robert Moore44f6c012005-04-18 22:49:35 -0400539 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700540
Robert Moore44f6c012005-04-18 22:49:35 -0400541/* Printable names of object descriptor types */
542
Len Brown4be44fc2005-08-05 00:44:28 -0400543static const char *acpi_gbl_desc_type_names[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700544 /* 00 */ "Invalid",
545 /* 01 */ "Cached",
546 /* 02 */ "State-Generic",
547 /* 03 */ "State-Update",
548 /* 04 */ "State-Package",
549 /* 05 */ "State-Control",
Bob Moore08978312005-10-21 00:00:00 -0400550 /* 06 */ "State-RootParseScope",
551 /* 07 */ "State-ParseScope",
552 /* 08 */ "State-WalkScope",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700553 /* 09 */ "State-Result",
554 /* 10 */ "State-Notify",
555 /* 11 */ "State-Thread",
556 /* 12 */ "Walk",
557 /* 13 */ "Parser",
558 /* 14 */ "Operand",
559 /* 15 */ "Node"
560};
561
Len Brown4be44fc2005-08-05 00:44:28 -0400562char *acpi_ut_get_descriptor_name(void *object)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700563{
564
Len Brown4be44fc2005-08-05 00:44:28 -0400565 if (!object) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700566 return ("NULL OBJECT");
567 }
568
Len Brown4be44fc2005-08-05 00:44:28 -0400569 if (ACPI_GET_DESCRIPTOR_TYPE(object) > ACPI_DESC_TYPE_MAX) {
Bob Mooredefba1d2005-12-16 17:05:00 -0500570 return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700571 }
572
Bob Mooredefba1d2005-12-16 17:05:00 -0500573 return (ACPI_CAST_PTR(char,
574 acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE
575 (object)]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700576
577}
578
Bob Mooref02a99a2008-08-04 10:40:09 +0800579/*******************************************************************************
580 *
581 * FUNCTION: acpi_ut_get_reference_name
582 *
583 * PARAMETERS: Object - An ACPI reference object
584 *
585 * RETURN: Pointer to a string
586 *
587 * DESCRIPTION: Decode a reference object sub-type to a string.
588 *
589 ******************************************************************************/
590
591/* Printable names of reference object sub-types */
592
593const char *acpi_ut_get_reference_name(union acpi_operand_object *object)
594{
595
596 switch (object->reference.opcode) {
597 case AML_INT_NAMEPATH_OP:
598 return "Name";
599
600 case AML_LOAD_OP:
601 return "DDB-Handle";
602
603 case AML_REF_OF_OP:
604 return "RefOf";
605
606 case AML_INDEX_OP:
607 return "Index";
608
609 default:
610 return "Unknown";
611 }
612}
613
Linus Torvalds1da177e2005-04-16 15:20:36 -0700614#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
615/*
616 * Strings and procedures used for debug only
617 */
618
Robert Moore44f6c012005-04-18 22:49:35 -0400619/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700620 *
621 * FUNCTION: acpi_ut_get_mutex_name
622 *
Robert Moore44f6c012005-04-18 22:49:35 -0400623 * PARAMETERS: mutex_id - The predefined ID for this mutex.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700624 *
Robert Moore44f6c012005-04-18 22:49:35 -0400625 * RETURN: String containing the name of the mutex. Always returns a valid
626 * pointer.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700627 *
628 * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
629 *
Robert Moore44f6c012005-04-18 22:49:35 -0400630 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700631
Len Brown4be44fc2005-08-05 00:44:28 -0400632char *acpi_ut_get_mutex_name(u32 mutex_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700633{
634
Bob Moore4c90ece2006-06-08 16:29:00 -0400635 if (mutex_id > ACPI_MAX_MUTEX) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700636 return ("Invalid Mutex ID");
637 }
638
639 return (acpi_gbl_mutex_names[mutex_id]);
640}
Zhang Rui514d18d2008-04-10 19:06:44 +0400641
642/*******************************************************************************
643 *
644 * FUNCTION: acpi_ut_get_notify_name
645 *
646 * PARAMETERS: notify_value - Value from the Notify() request
647 *
648 * RETURN: String corresponding to the Notify Value.
649 *
650 * DESCRIPTION: Translate a Notify Value to a notify namestring.
651 *
652 ******************************************************************************/
653
654/* Names for Notify() values, used for debug output */
655
656static const char *acpi_gbl_notify_value_names[] = {
657 "Bus Check",
658 "Device Check",
659 "Device Wake",
660 "Eject Request",
661 "Device Check Light",
662 "Frequency Mismatch",
663 "Bus Mode Mismatch",
664 "Power Fault",
665 "Capabilities Check",
666 "Device PLD Check",
667 "Reserved",
668 "System Locality Update"
669};
670
671const char *acpi_ut_get_notify_name(u32 notify_value)
672{
673
674 if (notify_value <= ACPI_NOTIFY_MAX) {
675 return (acpi_gbl_notify_value_names[notify_value]);
676 } else if (notify_value <= ACPI_MAX_SYS_NOTIFY) {
677 return ("Reserved");
678 } else { /* Greater or equal to 0x80 */
679
680 return ("**Device Specific**");
681 }
682}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700683#endif
684
Robert Moore44f6c012005-04-18 22:49:35 -0400685/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700686 *
687 * FUNCTION: acpi_ut_valid_object_type
688 *
689 * PARAMETERS: Type - Object type to be validated
690 *
Robert Moore44f6c012005-04-18 22:49:35 -0400691 * RETURN: TRUE if valid object type, FALSE otherwise
Linus Torvalds1da177e2005-04-16 15:20:36 -0700692 *
693 * DESCRIPTION: Validate an object type
694 *
Robert Moore44f6c012005-04-18 22:49:35 -0400695 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700696
Len Brown4be44fc2005-08-05 00:44:28 -0400697u8 acpi_ut_valid_object_type(acpi_object_type type)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700698{
699
Len Brown4be44fc2005-08-05 00:44:28 -0400700 if (type > ACPI_TYPE_LOCAL_MAX) {
Bob Moore52fc0b02006-10-02 00:00:00 -0400701
Linus Torvalds1da177e2005-04-16 15:20:36 -0700702 /* Note: Assumes all TYPEs are contiguous (external/local) */
703
704 return (FALSE);
705 }
706
707 return (TRUE);
708}
709
Robert Moore44f6c012005-04-18 22:49:35 -0400710/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700711 *
Linus Torvalds1da177e2005-04-16 15:20:36 -0700712 * FUNCTION: acpi_ut_init_globals
713 *
Robert Moore44f6c012005-04-18 22:49:35 -0400714 * PARAMETERS: None
715 *
Yi Yangb417d402008-08-04 10:30:09 +0800716 * RETURN: Status
Linus Torvalds1da177e2005-04-16 15:20:36 -0700717 *
718 * DESCRIPTION: Init library globals. All globals that require specific
719 * initialization should be initialized here!
720 *
Robert Moore44f6c012005-04-18 22:49:35 -0400721 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700722
Yi Yangb417d402008-08-04 10:30:09 +0800723acpi_status acpi_ut_init_globals(void)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700724{
Len Brown4be44fc2005-08-05 00:44:28 -0400725 acpi_status status;
726 u32 i;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700727
Bob Mooreb229cf92006-04-21 17:15:00 -0400728 ACPI_FUNCTION_TRACE(ut_init_globals);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700729
Robert Moore73459f72005-06-24 00:00:00 -0400730 /* Create all memory caches */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700731
Len Brown4be44fc2005-08-05 00:44:28 -0400732 status = acpi_ut_create_caches();
733 if (ACPI_FAILURE(status)) {
Yi Yangb417d402008-08-04 10:30:09 +0800734 return_ACPI_STATUS(status);
Robert Moore73459f72005-06-24 00:00:00 -0400735 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700736
Linus Torvalds1da177e2005-04-16 15:20:36 -0700737 /* Mutex locked flags */
738
Bob Moore4c90ece2006-06-08 16:29:00 -0400739 for (i = 0; i < ACPI_NUM_MUTEX; i++) {
Len Brown4be44fc2005-08-05 00:44:28 -0400740 acpi_gbl_mutex_info[i].mutex = NULL;
741 acpi_gbl_mutex_info[i].thread_id = ACPI_MUTEX_NOT_ACQUIRED;
742 acpi_gbl_mutex_info[i].use_count = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700743 }
744
Bob Moore28f55eb2005-12-02 18:27:00 -0500745 for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) {
746 acpi_gbl_owner_id_mask[i] = 0;
747 }
748 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; /* Last ID is never valid */
749
Linus Torvalds1da177e2005-04-16 15:20:36 -0700750 /* GPE support */
751
Len Brown4be44fc2005-08-05 00:44:28 -0400752 acpi_gbl_gpe_xrupt_list_head = NULL;
753 acpi_gbl_gpe_fadt_blocks[0] = NULL;
754 acpi_gbl_gpe_fadt_blocks[1] = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700755
Lin Ming3e08e2d2008-04-10 19:06:38 +0400756 /* Global handlers */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700757
Len Brown4be44fc2005-08-05 00:44:28 -0400758 acpi_gbl_system_notify.handler = NULL;
759 acpi_gbl_device_notify.handler = NULL;
760 acpi_gbl_exception_handler = NULL;
761 acpi_gbl_init_handler = NULL;
Lin Ming3e08e2d2008-04-10 19:06:38 +0400762 acpi_gbl_table_handler = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700763
Linus Torvalds1da177e2005-04-16 15:20:36 -0700764 /* Global Lock support */
765
Bob Moore967440e2006-06-23 17:04:00 -0400766 acpi_gbl_global_lock_semaphore = NULL;
Bob Moorec81da662007-02-02 19:48:18 +0300767 acpi_gbl_global_lock_mutex = NULL;
Len Brown4be44fc2005-08-05 00:44:28 -0400768 acpi_gbl_global_lock_acquired = FALSE;
Len Brown4be44fc2005-08-05 00:44:28 -0400769 acpi_gbl_global_lock_handle = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700770
771 /* Miscellaneous variables */
772
Len Brown4be44fc2005-08-05 00:44:28 -0400773 acpi_gbl_cm_single_step = FALSE;
774 acpi_gbl_db_terminate_threads = FALSE;
775 acpi_gbl_shutdown = FALSE;
776 acpi_gbl_ns_lookup_count = 0;
777 acpi_gbl_ps_find_count = 0;
778 acpi_gbl_acpi_hardware_present = TRUE;
Bob Moore28f55eb2005-12-02 18:27:00 -0500779 acpi_gbl_last_owner_id_index = 0;
780 acpi_gbl_next_owner_id_offset = 0;
Bob Moore50eca3e2005-09-30 19:03:00 -0400781 acpi_gbl_trace_method_name = 0;
782 acpi_gbl_trace_dbg_level = 0;
783 acpi_gbl_trace_dbg_layer = 0;
Len Brown4be44fc2005-08-05 00:44:28 -0400784 acpi_gbl_debugger_configuration = DEBUGGER_THREADING;
785 acpi_gbl_db_output_flags = ACPI_DB_CONSOLE_OUTPUT;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700786
787 /* Hardware oriented */
788
Len Brown4be44fc2005-08-05 00:44:28 -0400789 acpi_gbl_events_initialized = FALSE;
790 acpi_gbl_system_awake_and_running = TRUE;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700791
792 /* Namespace */
793
Len Brown4be44fc2005-08-05 00:44:28 -0400794 acpi_gbl_root_node = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700795 acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;
Bob Moore61686122006-03-17 16:44:00 -0500796 acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED;
Len Brown4be44fc2005-08-05 00:44:28 -0400797 acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE;
798 acpi_gbl_root_node_struct.child = NULL;
799 acpi_gbl_root_node_struct.peer = NULL;
800 acpi_gbl_root_node_struct.object = NULL;
801 acpi_gbl_root_node_struct.flags = ANOBJ_END_OF_PEER_LIST;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700802
803#ifdef ACPI_DEBUG_OUTPUT
Bob Moore1d18c052008-04-10 19:06:40 +0400804 acpi_gbl_lowest_stack_pointer = ACPI_CAST_PTR(acpi_size, ACPI_SIZE_MAX);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700805#endif
806
Bob Moored41eb992007-02-02 19:48:23 +0300807#ifdef ACPI_DBG_TRACK_ALLOCATIONS
808 acpi_gbl_display_final_mem_stats = FALSE;
809#endif
810
Yi Yangb417d402008-08-04 10:30:09 +0800811 return_ACPI_STATUS(AE_OK);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700812}
Bob Moore83135242006-10-03 00:00:00 -0400813
814ACPI_EXPORT_SYMBOL(acpi_dbg_level)
Len Brownfd350942007-05-09 23:34:35 -0400815 ACPI_EXPORT_SYMBOL(acpi_dbg_layer)