diff options
Diffstat (limited to 'drivers/acpi/acpica/acglobal.h')
-rw-r--r-- | drivers/acpi/acpica/acglobal.h | 394 |
1 files changed, 394 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h new file mode 100644 index 000000000000..ddb40f5c68fc --- /dev/null +++ b/drivers/acpi/acpica/acglobal.h | |||
@@ -0,0 +1,394 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: acglobal.h - Declarations for global variables | ||
4 | * | ||
5 | *****************************************************************************/ | ||
6 | |||
7 | /* | ||
8 | * Copyright (C) 2000 - 2008, Intel Corp. | ||
9 | * 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 | #ifndef __ACGLOBAL_H__ | ||
45 | #define __ACGLOBAL_H__ | ||
46 | |||
47 | /* | ||
48 | * Ensure that the globals are actually defined and initialized only once. | ||
49 | * | ||
50 | * The use of these macros allows a single list of globals (here) in order | ||
51 | * to simplify maintenance of the code. | ||
52 | */ | ||
53 | #ifdef DEFINE_ACPI_GLOBALS | ||
54 | #define ACPI_EXTERN | ||
55 | #define ACPI_INIT_GLOBAL(a,b) a=b | ||
56 | #else | ||
57 | #define ACPI_EXTERN extern | ||
58 | #define ACPI_INIT_GLOBAL(a,b) a | ||
59 | #endif | ||
60 | |||
61 | /***************************************************************************** | ||
62 | * | ||
63 | * Runtime configuration (static defaults that can be overriden at runtime) | ||
64 | * | ||
65 | ****************************************************************************/ | ||
66 | |||
67 | /* | ||
68 | * Enable "slack" in the AML interpreter? Default is FALSE, and the | ||
69 | * interpreter strictly follows the ACPI specification. Setting to TRUE | ||
70 | * allows the interpreter to ignore certain errors and/or bad AML constructs. | ||
71 | * | ||
72 | * Currently, these features are enabled by this flag: | ||
73 | * | ||
74 | * 1) Allow "implicit return" of last value in a control method | ||
75 | * 2) Allow access beyond the end of an operation region | ||
76 | * 3) Allow access to uninitialized locals/args (auto-init to integer 0) | ||
77 | * 4) Allow ANY object type to be a source operand for the Store() operator | ||
78 | * 5) Allow unresolved references (invalid target name) in package objects | ||
79 | * 6) Enable warning messages for behavior that is not ACPI spec compliant | ||
80 | */ | ||
81 | ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_enable_interpreter_slack, FALSE); | ||
82 | |||
83 | /* | ||
84 | * Automatically serialize ALL control methods? Default is FALSE, meaning | ||
85 | * to use the Serialized/not_serialized method flags on a per method basis. | ||
86 | * Only change this if the ASL code is poorly written and cannot handle | ||
87 | * reentrancy even though methods are marked "NotSerialized". | ||
88 | */ | ||
89 | ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_all_methods_serialized, FALSE); | ||
90 | |||
91 | /* | ||
92 | * Create the predefined _OSI method in the namespace? Default is TRUE | ||
93 | * because ACPI CA is fully compatible with other ACPI implementations. | ||
94 | * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior. | ||
95 | */ | ||
96 | ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_create_osi_method, TRUE); | ||
97 | |||
98 | /* | ||
99 | * Disable wakeup GPEs during runtime? Default is TRUE because WAKE and | ||
100 | * RUNTIME GPEs should never be shared, and WAKE GPEs should typically only | ||
101 | * be enabled just before going to sleep. | ||
102 | */ | ||
103 | ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_leave_wake_gpes_disabled, TRUE); | ||
104 | |||
105 | /* | ||
106 | * Optionally use default values for the ACPI register widths. Set this to | ||
107 | * TRUE to use the defaults, if an FADT contains incorrect widths/lengths. | ||
108 | */ | ||
109 | ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, TRUE); | ||
110 | |||
111 | /***************************************************************************** | ||
112 | * | ||
113 | * Debug support | ||
114 | * | ||
115 | ****************************************************************************/ | ||
116 | |||
117 | /* Runtime configuration of debug print levels */ | ||
118 | |||
119 | extern u32 acpi_dbg_level; | ||
120 | extern u32 acpi_dbg_layer; | ||
121 | |||
122 | /* Procedure nesting level for debug output */ | ||
123 | |||
124 | extern u32 acpi_gbl_nesting_level; | ||
125 | |||
126 | /* Support for dynamic control method tracing mechanism */ | ||
127 | |||
128 | ACPI_EXTERN u32 acpi_gbl_original_dbg_level; | ||
129 | ACPI_EXTERN u32 acpi_gbl_original_dbg_layer; | ||
130 | ACPI_EXTERN acpi_name acpi_gbl_trace_method_name; | ||
131 | ACPI_EXTERN u32 acpi_gbl_trace_dbg_level; | ||
132 | ACPI_EXTERN u32 acpi_gbl_trace_dbg_layer; | ||
133 | ACPI_EXTERN u32 acpi_gbl_trace_flags; | ||
134 | |||
135 | /***************************************************************************** | ||
136 | * | ||
137 | * ACPI Table globals | ||
138 | * | ||
139 | ****************************************************************************/ | ||
140 | |||
141 | /* | ||
142 | * acpi_gbl_root_table_list is the master list of ACPI tables found in the | ||
143 | * RSDT/XSDT. | ||
144 | * | ||
145 | * acpi_gbl_FADT is a local copy of the FADT, converted to a common format. | ||
146 | */ | ||
147 | ACPI_EXTERN struct acpi_internal_rsdt acpi_gbl_root_table_list; | ||
148 | ACPI_EXTERN struct acpi_table_fadt acpi_gbl_FADT; | ||
149 | ACPI_EXTERN struct acpi_table_facs *acpi_gbl_FACS; | ||
150 | |||
151 | /* These addresses are calculated from FADT address values */ | ||
152 | |||
153 | ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable; | ||
154 | ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable; | ||
155 | |||
156 | /* | ||
157 | * Handle both ACPI 1.0 and ACPI 2.0 Integer widths. The integer width is | ||
158 | * determined by the revision of the DSDT: If the DSDT revision is less than | ||
159 | * 2, use only the lower 32 bits of the internal 64-bit Integer. | ||
160 | */ | ||
161 | ACPI_EXTERN u8 acpi_gbl_integer_bit_width; | ||
162 | ACPI_EXTERN u8 acpi_gbl_integer_byte_width; | ||
163 | ACPI_EXTERN u8 acpi_gbl_integer_nybble_width; | ||
164 | |||
165 | /***************************************************************************** | ||
166 | * | ||
167 | * Mutual exlusion within ACPICA subsystem | ||
168 | * | ||
169 | ****************************************************************************/ | ||
170 | |||
171 | /* | ||
172 | * Predefined mutex objects. This array contains the | ||
173 | * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. | ||
174 | * (The table maps local handles to the real OS handles) | ||
175 | */ | ||
176 | ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[ACPI_NUM_MUTEX]; | ||
177 | |||
178 | /* | ||
179 | * Global lock mutex is an actual AML mutex object | ||
180 | * Global lock semaphore works in conjunction with the HW global lock | ||
181 | */ | ||
182 | ACPI_EXTERN union acpi_operand_object *acpi_gbl_global_lock_mutex; | ||
183 | ACPI_EXTERN acpi_semaphore acpi_gbl_global_lock_semaphore; | ||
184 | ACPI_EXTERN u16 acpi_gbl_global_lock_handle; | ||
185 | ACPI_EXTERN u8 acpi_gbl_global_lock_acquired; | ||
186 | ACPI_EXTERN u8 acpi_gbl_global_lock_present; | ||
187 | |||
188 | /* | ||
189 | * Spinlocks are used for interfaces that can be possibly called at | ||
190 | * interrupt level | ||
191 | */ | ||
192 | ACPI_EXTERN spinlock_t _acpi_gbl_gpe_lock; /* For GPE data structs and registers */ | ||
193 | ACPI_EXTERN spinlock_t _acpi_gbl_hardware_lock; /* For ACPI H/W except GPE registers */ | ||
194 | #define acpi_gbl_gpe_lock &_acpi_gbl_gpe_lock | ||
195 | #define acpi_gbl_hardware_lock &_acpi_gbl_hardware_lock | ||
196 | |||
197 | /***************************************************************************** | ||
198 | * | ||
199 | * Miscellaneous globals | ||
200 | * | ||
201 | ****************************************************************************/ | ||
202 | |||
203 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS | ||
204 | |||
205 | /* Lists for tracking memory allocations */ | ||
206 | |||
207 | ACPI_EXTERN struct acpi_memory_list *acpi_gbl_global_list; | ||
208 | ACPI_EXTERN struct acpi_memory_list *acpi_gbl_ns_node_list; | ||
209 | ACPI_EXTERN u8 acpi_gbl_display_final_mem_stats; | ||
210 | #endif | ||
211 | |||
212 | /* Object caches */ | ||
213 | |||
214 | ACPI_EXTERN acpi_cache_t *acpi_gbl_namespace_cache; | ||
215 | ACPI_EXTERN acpi_cache_t *acpi_gbl_state_cache; | ||
216 | ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_cache; | ||
217 | ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_ext_cache; | ||
218 | ACPI_EXTERN acpi_cache_t *acpi_gbl_operand_cache; | ||
219 | |||
220 | /* Global handlers */ | ||
221 | |||
222 | ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_device_notify; | ||
223 | ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_system_notify; | ||
224 | ACPI_EXTERN acpi_exception_handler acpi_gbl_exception_handler; | ||
225 | ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler; | ||
226 | ACPI_EXTERN acpi_tbl_handler acpi_gbl_table_handler; | ||
227 | ACPI_EXTERN void *acpi_gbl_table_handler_context; | ||
228 | ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk; | ||
229 | |||
230 | /* Owner ID support */ | ||
231 | |||
232 | ACPI_EXTERN u32 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS]; | ||
233 | ACPI_EXTERN u8 acpi_gbl_last_owner_id_index; | ||
234 | ACPI_EXTERN u8 acpi_gbl_next_owner_id_offset; | ||
235 | |||
236 | /* Misc */ | ||
237 | |||
238 | ACPI_EXTERN u32 acpi_gbl_original_mode; | ||
239 | ACPI_EXTERN u32 acpi_gbl_rsdp_original_location; | ||
240 | ACPI_EXTERN u32 acpi_gbl_ns_lookup_count; | ||
241 | ACPI_EXTERN u32 acpi_gbl_ps_find_count; | ||
242 | ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save; | ||
243 | ACPI_EXTERN u8 acpi_gbl_debugger_configuration; | ||
244 | ACPI_EXTERN u8 acpi_gbl_step_to_next_call; | ||
245 | ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present; | ||
246 | ACPI_EXTERN u8 acpi_gbl_events_initialized; | ||
247 | ACPI_EXTERN u8 acpi_gbl_system_awake_and_running; | ||
248 | |||
249 | #ifndef DEFINE_ACPI_GLOBALS | ||
250 | |||
251 | /* Other miscellaneous */ | ||
252 | |||
253 | extern u8 acpi_gbl_shutdown; | ||
254 | extern u32 acpi_gbl_startup_flags; | ||
255 | extern const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT]; | ||
256 | extern const char *acpi_gbl_highest_dstate_names[4]; | ||
257 | extern const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES]; | ||
258 | extern const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS]; | ||
259 | |||
260 | #endif | ||
261 | |||
262 | /* Exception codes */ | ||
263 | |||
264 | extern char const *acpi_gbl_exception_names_env[]; | ||
265 | extern char const *acpi_gbl_exception_names_pgm[]; | ||
266 | extern char const *acpi_gbl_exception_names_tbl[]; | ||
267 | extern char const *acpi_gbl_exception_names_aml[]; | ||
268 | extern char const *acpi_gbl_exception_names_ctrl[]; | ||
269 | |||
270 | /***************************************************************************** | ||
271 | * | ||
272 | * Namespace globals | ||
273 | * | ||
274 | ****************************************************************************/ | ||
275 | |||
276 | #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) | ||
277 | #define NUM_PREDEFINED_NAMES 10 | ||
278 | #else | ||
279 | #define NUM_PREDEFINED_NAMES 9 | ||
280 | #endif | ||
281 | |||
282 | ACPI_EXTERN struct acpi_namespace_node acpi_gbl_root_node_struct; | ||
283 | ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_root_node; | ||
284 | ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_fadt_gpe_device; | ||
285 | |||
286 | extern const u8 acpi_gbl_ns_properties[ACPI_NUM_NS_TYPES]; | ||
287 | extern const struct acpi_predefined_names | ||
288 | acpi_gbl_pre_defined_names[NUM_PREDEFINED_NAMES]; | ||
289 | |||
290 | #ifdef ACPI_DEBUG_OUTPUT | ||
291 | ACPI_EXTERN u32 acpi_gbl_current_node_count; | ||
292 | ACPI_EXTERN u32 acpi_gbl_current_node_size; | ||
293 | ACPI_EXTERN u32 acpi_gbl_max_concurrent_node_count; | ||
294 | ACPI_EXTERN acpi_size *acpi_gbl_entry_stack_pointer; | ||
295 | ACPI_EXTERN acpi_size *acpi_gbl_lowest_stack_pointer; | ||
296 | ACPI_EXTERN u32 acpi_gbl_deepest_nesting; | ||
297 | #endif | ||
298 | |||
299 | /***************************************************************************** | ||
300 | * | ||
301 | * Interpreter globals | ||
302 | * | ||
303 | ****************************************************************************/ | ||
304 | |||
305 | ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list; | ||
306 | |||
307 | /* Control method single step flag */ | ||
308 | |||
309 | ACPI_EXTERN u8 acpi_gbl_cm_single_step; | ||
310 | |||
311 | /***************************************************************************** | ||
312 | * | ||
313 | * Hardware globals | ||
314 | * | ||
315 | ****************************************************************************/ | ||
316 | |||
317 | extern struct acpi_bit_register_info | ||
318 | acpi_gbl_bit_register_info[ACPI_NUM_BITREG]; | ||
319 | ACPI_EXTERN u8 acpi_gbl_sleep_type_a; | ||
320 | ACPI_EXTERN u8 acpi_gbl_sleep_type_b; | ||
321 | |||
322 | /***************************************************************************** | ||
323 | * | ||
324 | * Event and GPE globals | ||
325 | * | ||
326 | ****************************************************************************/ | ||
327 | |||
328 | extern struct acpi_fixed_event_info | ||
329 | acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS]; | ||
330 | ACPI_EXTERN struct acpi_fixed_event_handler | ||
331 | acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS]; | ||
332 | ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; | ||
333 | ACPI_EXTERN struct acpi_gpe_block_info | ||
334 | *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; | ||
335 | ACPI_EXTERN u32 acpi_current_gpe_count; | ||
336 | |||
337 | /***************************************************************************** | ||
338 | * | ||
339 | * Debugger globals | ||
340 | * | ||
341 | ****************************************************************************/ | ||
342 | |||
343 | ACPI_EXTERN u8 acpi_gbl_db_output_flags; | ||
344 | |||
345 | #ifdef ACPI_DISASSEMBLER | ||
346 | |||
347 | ACPI_EXTERN u8 acpi_gbl_db_opt_disasm; | ||
348 | ACPI_EXTERN u8 acpi_gbl_db_opt_verbose; | ||
349 | #endif | ||
350 | |||
351 | #ifdef ACPI_DEBUGGER | ||
352 | |||
353 | extern u8 acpi_gbl_method_executing; | ||
354 | extern u8 acpi_gbl_abort_method; | ||
355 | extern u8 acpi_gbl_db_terminate_threads; | ||
356 | |||
357 | ACPI_EXTERN int optind; | ||
358 | ACPI_EXTERN char *optarg; | ||
359 | |||
360 | ACPI_EXTERN u8 acpi_gbl_db_opt_tables; | ||
361 | ACPI_EXTERN u8 acpi_gbl_db_opt_stats; | ||
362 | ACPI_EXTERN u8 acpi_gbl_db_opt_ini_methods; | ||
363 | |||
364 | ACPI_EXTERN char *acpi_gbl_db_args[ACPI_DEBUGGER_MAX_ARGS]; | ||
365 | ACPI_EXTERN char acpi_gbl_db_line_buf[80]; | ||
366 | ACPI_EXTERN char acpi_gbl_db_parsed_buf[80]; | ||
367 | ACPI_EXTERN char acpi_gbl_db_scope_buf[40]; | ||
368 | ACPI_EXTERN char acpi_gbl_db_debug_filename[40]; | ||
369 | ACPI_EXTERN u8 acpi_gbl_db_output_to_file; | ||
370 | ACPI_EXTERN char *acpi_gbl_db_buffer; | ||
371 | ACPI_EXTERN char *acpi_gbl_db_filename; | ||
372 | ACPI_EXTERN u32 acpi_gbl_db_debug_level; | ||
373 | ACPI_EXTERN u32 acpi_gbl_db_console_debug_level; | ||
374 | ACPI_EXTERN struct acpi_table_header *acpi_gbl_db_table_ptr; | ||
375 | ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_db_scope_node; | ||
376 | |||
377 | /* | ||
378 | * Statistic globals | ||
379 | */ | ||
380 | ACPI_EXTERN u16 acpi_gbl_obj_type_count[ACPI_TYPE_NS_NODE_MAX + 1]; | ||
381 | ACPI_EXTERN u16 acpi_gbl_node_type_count[ACPI_TYPE_NS_NODE_MAX + 1]; | ||
382 | ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc; | ||
383 | ACPI_EXTERN u16 acpi_gbl_node_type_count_misc; | ||
384 | ACPI_EXTERN u32 acpi_gbl_num_nodes; | ||
385 | ACPI_EXTERN u32 acpi_gbl_num_objects; | ||
386 | |||
387 | ACPI_EXTERN u32 acpi_gbl_size_of_parse_tree; | ||
388 | ACPI_EXTERN u32 acpi_gbl_size_of_method_trees; | ||
389 | ACPI_EXTERN u32 acpi_gbl_size_of_node_entries; | ||
390 | ACPI_EXTERN u32 acpi_gbl_size_of_acpi_objects; | ||
391 | |||
392 | #endif /* ACPI_DEBUGGER */ | ||
393 | |||
394 | #endif /* __ACGLOBAL_H__ */ | ||