Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
acpi
acpica
acinterp.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
4
*
5
*****************************************************************************/
6
7
/*
8
* Copyright (C) 2000 - 2012, 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 __ACINTERP_H__
45
#define __ACINTERP_H__
46
47
#define ACPI_WALK_OPERANDS (&(walk_state->operands [walk_state->num_operands -1]))
48
49
/* Macros for tables used for debug output */
50
51
#define ACPI_EXD_OFFSET(f) (u8) ACPI_OFFSET (union acpi_operand_object,f)
52
#define ACPI_EXD_NSOFFSET(f) (u8) ACPI_OFFSET (struct acpi_namespace_node,f)
53
#define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_exdump_info))
54
55
/*
56
* If possible, pack the following structures to byte alignment, since we
57
* don't care about performance for debug output. Two cases where we cannot
58
* pack the structures:
59
*
60
* 1) Hardware does not support misaligned memory transfers
61
* 2) Compiler does not support pointers within packed structures
62
*/
63
#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
64
#pragma pack(1)
65
#endif
66
67
typedef
const
struct
acpi_exdump_info
{
68
u8
opcode
;
69
u8
offset
;
70
char
*
name
;
71
72
}
acpi_exdump_info
;
73
74
/* Values for the Opcode field above */
75
76
#define ACPI_EXD_INIT 0
77
#define ACPI_EXD_TYPE 1
78
#define ACPI_EXD_UINT8 2
79
#define ACPI_EXD_UINT16 3
80
#define ACPI_EXD_UINT32 4
81
#define ACPI_EXD_UINT64 5
82
#define ACPI_EXD_LITERAL 6
83
#define ACPI_EXD_POINTER 7
84
#define ACPI_EXD_ADDRESS 8
85
#define ACPI_EXD_STRING 9
86
#define ACPI_EXD_BUFFER 10
87
#define ACPI_EXD_PACKAGE 11
88
#define ACPI_EXD_FIELD 12
89
#define ACPI_EXD_REFERENCE 13
90
91
/* restore default alignment */
92
93
#pragma pack()
94
95
/*
96
* exconvrt - object conversion
97
*/
98
acpi_status
99
acpi_ex_convert_to_integer
(
union
acpi_operand_object
*obj_desc,
100
union
acpi_operand_object
**result_desc,
u32
flags
);
101
102
acpi_status
103
acpi_ex_convert_to_buffer
(
union
acpi_operand_object
*obj_desc,
104
union
acpi_operand_object
**result_desc);
105
106
acpi_status
107
acpi_ex_convert_to_string
(
union
acpi_operand_object
*obj_desc,
108
union
acpi_operand_object
**result_desc,
u32
type
);
109
110
/* Types for ->String conversion */
111
112
#define ACPI_EXPLICIT_BYTE_COPY 0x00000000
113
#define ACPI_EXPLICIT_CONVERT_HEX 0x00000001
114
#define ACPI_IMPLICIT_CONVERT_HEX 0x00000002
115
#define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003
116
117
acpi_status
118
acpi_ex_convert_to_target_type
(
acpi_object_type
destination_type,
119
union
acpi_operand_object
*source_desc,
120
union
acpi_operand_object
**result_desc,
121
struct
acpi_walk_state
*walk_state);
122
123
/*
124
* exdebug - AML debug object
125
*/
126
void
127
acpi_ex_do_debug_object
(
union
acpi_operand_object
*source_desc,
128
u32
level
,
u32
index
);
129
130
/*
131
* exfield - ACPI AML (p-code) execution - field manipulation
132
*/
133
acpi_status
134
acpi_ex_common_buffer_setup
(
union
acpi_operand_object
*obj_desc,
135
u32
buffer_length
,
u32
* datum_count);
136
137
acpi_status
138
acpi_ex_write_with_update_rule
(
union
acpi_operand_object
*obj_desc,
139
u64
mask
,
140
u64
field_value,
u32
field_datum_byte_offset);
141
142
void
143
acpi_ex_get_buffer_datum
(
u64
*datum,
144
void
*
buffer
,
145
u32
buffer_length
,
146
u32
byte_granularity,
u32
buffer_offset);
147
148
void
149
acpi_ex_set_buffer_datum
(
u64
merged_datum,
150
void
*
buffer
,
151
u32
buffer_length
,
152
u32
byte_granularity,
u32
buffer_offset);
153
154
acpi_status
155
acpi_ex_read_data_from_field
(
struct
acpi_walk_state
*walk_state,
156
union
acpi_operand_object
*obj_desc,
157
union
acpi_operand_object
**ret_buffer_desc);
158
159
acpi_status
160
acpi_ex_write_data_to_field
(
union
acpi_operand_object
*source_desc,
161
union
acpi_operand_object
*obj_desc,
162
union
acpi_operand_object
**result_desc);
163
164
/*
165
* exfldio - low level field I/O
166
*/
167
acpi_status
168
acpi_ex_extract_from_field
(
union
acpi_operand_object
*obj_desc,
169
void
*
buffer
,
u32
buffer_length
);
170
171
acpi_status
172
acpi_ex_insert_into_field
(
union
acpi_operand_object
*obj_desc,
173
void
*
buffer
,
u32
buffer_length
);
174
175
acpi_status
176
acpi_ex_access_region
(
union
acpi_operand_object
*obj_desc,
177
u32
field_datum_byte_offset,
u64
*
value
,
u32
read_write);
178
179
/*
180
* exmisc - misc support routines
181
*/
182
acpi_status
183
acpi_ex_get_object_reference
(
union
acpi_operand_object
*obj_desc,
184
union
acpi_operand_object
**return_desc,
185
struct
acpi_walk_state
*walk_state);
186
187
acpi_status
188
acpi_ex_concat_template
(
union
acpi_operand_object
*obj_desc,
189
union
acpi_operand_object
*obj_desc2,
190
union
acpi_operand_object
**actual_return_desc,
191
struct
acpi_walk_state
*walk_state);
192
193
acpi_status
194
acpi_ex_do_concatenate
(
union
acpi_operand_object
*obj_desc,
195
union
acpi_operand_object
*obj_desc2,
196
union
acpi_operand_object
**actual_return_desc,
197
struct
acpi_walk_state
*walk_state);
198
199
acpi_status
200
acpi_ex_do_logical_numeric_op
(
u16
opcode
,
201
u64
integer0,
u64
integer1,
u8
*logical_result);
202
203
acpi_status
204
acpi_ex_do_logical_op
(
u16
opcode
,
205
union
acpi_operand_object
*operand0,
206
union
acpi_operand_object
*operand1,
u8
*logical_result);
207
208
u64
acpi_ex_do_math_op
(
u16
opcode
,
u64
operand0,
u64
operand1);
209
210
acpi_status
acpi_ex_create_mutex
(
struct
acpi_walk_state
*walk_state);
211
212
acpi_status
acpi_ex_create_processor
(
struct
acpi_walk_state
*walk_state);
213
214
acpi_status
acpi_ex_create_power_resource
(
struct
acpi_walk_state
*walk_state);
215
216
acpi_status
217
acpi_ex_create_region
(
u8
* aml_start,
218
u32
aml_length,
219
u8
region_space,
struct
acpi_walk_state
*walk_state);
220
221
acpi_status
acpi_ex_create_event
(
struct
acpi_walk_state
*walk_state);
222
223
acpi_status
acpi_ex_create_alias
(
struct
acpi_walk_state
*walk_state);
224
225
acpi_status
226
acpi_ex_create_method
(
u8
* aml_start,
227
u32
aml_length,
struct
acpi_walk_state
*walk_state);
228
229
/*
230
* exconfig - dynamic table load/unload
231
*/
232
acpi_status
233
acpi_ex_load_op
(
union
acpi_operand_object
*obj_desc,
234
union
acpi_operand_object
*
target
,
235
struct
acpi_walk_state
*walk_state);
236
237
acpi_status
238
acpi_ex_load_table_op
(
struct
acpi_walk_state
*walk_state,
239
union
acpi_operand_object
**return_desc);
240
241
acpi_status
acpi_ex_unload_table
(
union
acpi_operand_object
*ddb_handle);
242
243
/*
244
* exmutex - mutex support
245
*/
246
acpi_status
247
acpi_ex_acquire_mutex
(
union
acpi_operand_object
*time_desc,
248
union
acpi_operand_object
*obj_desc,
249
struct
acpi_walk_state
*walk_state);
250
251
acpi_status
252
acpi_ex_acquire_mutex_object
(
u16
timeout,
253
union
acpi_operand_object
*obj_desc,
254
acpi_thread_id
thread_id);
255
256
acpi_status
257
acpi_ex_release_mutex
(
union
acpi_operand_object
*obj_desc,
258
struct
acpi_walk_state
*walk_state);
259
260
acpi_status
acpi_ex_release_mutex_object
(
union
acpi_operand_object
*obj_desc);
261
262
void
acpi_ex_release_all_mutexes
(
struct
acpi_thread_state
*
thread
);
263
264
void
acpi_ex_unlink_mutex
(
union
acpi_operand_object
*obj_desc);
265
266
/*
267
* exprep - ACPI AML execution - prep utilities
268
*/
269
acpi_status
270
acpi_ex_prep_common_field_object
(
union
acpi_operand_object
*obj_desc,
271
u8
field_flags,
272
u8
field_attribute,
273
u32
field_bit_position,
u32
field_bit_length);
274
275
acpi_status
acpi_ex_prep_field_value
(
struct
acpi_create_field_info
*
info
);
276
277
/*
278
* exsystem - Interface to OS services
279
*/
280
acpi_status
281
acpi_ex_system_do_notify_op
(
union
acpi_operand_object
*
value
,
282
union
acpi_operand_object
*obj_desc);
283
284
acpi_status
acpi_ex_system_do_sleep
(
u64
time
);
285
286
acpi_status
acpi_ex_system_do_stall
(
u32
time
);
287
288
acpi_status
acpi_ex_system_signal_event
(
union
acpi_operand_object
*obj_desc);
289
290
acpi_status
291
acpi_ex_system_wait_event
(
union
acpi_operand_object
*
time
,
292
union
acpi_operand_object
*obj_desc);
293
294
acpi_status
acpi_ex_system_reset_event
(
union
acpi_operand_object
*obj_desc);
295
296
acpi_status
297
acpi_ex_system_wait_semaphore
(
acpi_semaphore
semaphore
,
u16
timeout);
298
299
acpi_status
acpi_ex_system_wait_mutex
(
acpi_mutex
mutex
,
u16
timeout);
300
301
/*
302
* exoparg1 - ACPI AML execution, 1 operand
303
*/
304
acpi_status
acpi_ex_opcode_0A_0T_1R
(
struct
acpi_walk_state
*walk_state);
305
306
acpi_status
acpi_ex_opcode_1A_0T_0R
(
struct
acpi_walk_state
*walk_state);
307
308
acpi_status
acpi_ex_opcode_1A_0T_1R
(
struct
acpi_walk_state
*walk_state);
309
310
acpi_status
acpi_ex_opcode_1A_1T_1R
(
struct
acpi_walk_state
*walk_state);
311
312
acpi_status
acpi_ex_opcode_1A_1T_0R
(
struct
acpi_walk_state
*walk_state);
313
314
/*
315
* exoparg2 - ACPI AML execution, 2 operands
316
*/
317
acpi_status
acpi_ex_opcode_2A_0T_0R
(
struct
acpi_walk_state
*walk_state);
318
319
acpi_status
acpi_ex_opcode_2A_0T_1R
(
struct
acpi_walk_state
*walk_state);
320
321
acpi_status
acpi_ex_opcode_2A_1T_1R
(
struct
acpi_walk_state
*walk_state);
322
323
acpi_status
acpi_ex_opcode_2A_2T_1R
(
struct
acpi_walk_state
*walk_state);
324
325
/*
326
* exoparg3 - ACPI AML execution, 3 operands
327
*/
328
acpi_status
acpi_ex_opcode_3A_0T_0R
(
struct
acpi_walk_state
*walk_state);
329
330
acpi_status
acpi_ex_opcode_3A_1T_1R
(
struct
acpi_walk_state
*walk_state);
331
332
/*
333
* exoparg6 - ACPI AML execution, 6 operands
334
*/
335
acpi_status
acpi_ex_opcode_6A_0T_1R
(
struct
acpi_walk_state
*walk_state);
336
337
/*
338
* exresolv - Object resolution and get value functions
339
*/
340
acpi_status
341
acpi_ex_resolve_to_value
(
union
acpi_operand_object
**stack_ptr,
342
struct
acpi_walk_state
*walk_state);
343
344
acpi_status
345
acpi_ex_resolve_multiple
(
struct
acpi_walk_state
*walk_state,
346
union
acpi_operand_object
*
operand
,
347
acpi_object_type
* return_type,
348
union
acpi_operand_object
**return_desc);
349
350
/*
351
* exresnte - resolve namespace node
352
*/
353
acpi_status
354
acpi_ex_resolve_node_to_value
(
struct
acpi_namespace_node
**stack_ptr,
355
struct
acpi_walk_state
*walk_state);
356
357
/*
358
* exresop - resolve operand to value
359
*/
360
acpi_status
361
acpi_ex_resolve_operands
(
u16
opcode
,
362
union
acpi_operand_object
**stack_ptr,
363
struct
acpi_walk_state
*walk_state);
364
365
/*
366
* exdump - Interpreter debug output routines
367
*/
368
void
acpi_ex_dump_operand
(
union
acpi_operand_object
*obj_desc,
u32
depth
);
369
370
void
371
acpi_ex_dump_operands
(
union
acpi_operand_object
**operands,
372
const
char
*opcode_name,
u32
num_opcodes);
373
374
#ifdef ACPI_FUTURE_USAGE
375
void
376
acpi_ex_dump_object_descriptor(
union
acpi_operand_object
*
object
,
u32
flags
);
377
378
void
acpi_ex_dump_namespace_node(
struct
acpi_namespace_node
*
node
,
u32
flags
);
379
#endif
/* ACPI_FUTURE_USAGE */
380
381
/*
382
* exnames - AML namestring support
383
*/
384
acpi_status
385
acpi_ex_get_name_string
(
acpi_object_type
data_type
,
386
u8
* in_aml_address,
387
char
**out_name_string,
u32
* out_name_length);
388
389
/*
390
* exstore - Object store support
391
*/
392
acpi_status
393
acpi_ex_store
(
union
acpi_operand_object
*val_desc,
394
union
acpi_operand_object
*dest_desc,
395
struct
acpi_walk_state
*walk_state);
396
397
acpi_status
398
acpi_ex_store_object_to_node
(
union
acpi_operand_object
*source_desc,
399
struct
acpi_namespace_node
*
node
,
400
struct
acpi_walk_state
*walk_state,
401
u8
implicit_conversion);
402
403
#define ACPI_IMPLICIT_CONVERSION TRUE
404
#define ACPI_NO_IMPLICIT_CONVERSION FALSE
405
406
/*
407
* exstoren - resolve/store object
408
*/
409
acpi_status
410
acpi_ex_resolve_object
(
union
acpi_operand_object
**source_desc_ptr,
411
acpi_object_type
target_type
,
412
struct
acpi_walk_state
*walk_state);
413
414
acpi_status
415
acpi_ex_store_object_to_object
(
union
acpi_operand_object
*source_desc,
416
union
acpi_operand_object
*dest_desc,
417
union
acpi_operand_object
**new_desc,
418
struct
acpi_walk_state
*walk_state);
419
420
/*
421
* exstorob - store object - buffer/string
422
*/
423
acpi_status
424
acpi_ex_store_buffer_to_buffer
(
union
acpi_operand_object
*source_desc,
425
union
acpi_operand_object
*target_desc);
426
427
acpi_status
428
acpi_ex_store_string_to_string
(
union
acpi_operand_object
*source_desc,
429
union
acpi_operand_object
*target_desc);
430
431
/*
432
* excopy - object copy
433
*/
434
acpi_status
435
acpi_ex_copy_integer_to_index_field
(
union
acpi_operand_object
*source_desc,
436
union
acpi_operand_object
*target_desc);
437
438
acpi_status
439
acpi_ex_copy_integer_to_bank_field
(
union
acpi_operand_object
*source_desc,
440
union
acpi_operand_object
*target_desc);
441
442
acpi_status
443
acpi_ex_copy_data_to_named_field
(
union
acpi_operand_object
*source_desc,
444
struct
acpi_namespace_node
*
node
);
445
446
acpi_status
447
acpi_ex_copy_integer_to_buffer_field
(
union
acpi_operand_object
*source_desc,
448
union
acpi_operand_object
*target_desc);
449
450
/*
451
* exutils - interpreter/scanner utilities
452
*/
453
void
acpi_ex_enter_interpreter
(
void
);
454
455
void
acpi_ex_exit_interpreter
(
void
);
456
457
void
acpi_ex_reacquire_interpreter
(
void
);
458
459
void
acpi_ex_relinquish_interpreter
(
void
);
460
461
void
acpi_ex_truncate_for32bit_table
(
union
acpi_operand_object
*obj_desc);
462
463
void
acpi_ex_acquire_global_lock
(
u32
rule
);
464
465
void
acpi_ex_release_global_lock
(
u32
rule
);
466
467
void
acpi_ex_eisa_id_to_string
(
char
*
dest
,
u64
compressed_id);
468
469
void
acpi_ex_integer_to_string
(
char
*
dest
,
u64
value
);
470
471
u8
acpi_is_valid_space_id
(
u8
space_id);
472
473
/*
474
* exregion - default op_region handlers
475
*/
476
acpi_status
477
acpi_ex_system_memory_space_handler
(
u32
function
,
478
acpi_physical_address
address
,
479
u32
bit_width
,
480
u64
*
value
,
481
void
*handler_context,
482
void
*region_context);
483
484
acpi_status
485
acpi_ex_system_io_space_handler
(
u32
function
,
486
acpi_physical_address
address
,
487
u32
bit_width
,
488
u64
*
value
,
489
void
*handler_context,
void
*region_context);
490
491
acpi_status
492
acpi_ex_pci_config_space_handler
(
u32
function
,
493
acpi_physical_address
address
,
494
u32
bit_width
,
495
u64
*
value
,
496
void
*handler_context,
void
*region_context);
497
498
acpi_status
499
acpi_ex_cmos_space_handler
(
u32
function
,
500
acpi_physical_address
address
,
501
u32
bit_width
,
502
u64
*
value
,
503
void
*handler_context,
void
*region_context);
504
505
acpi_status
506
acpi_ex_pci_bar_space_handler
(
u32
function
,
507
acpi_physical_address
address
,
508
u32
bit_width
,
509
u64
*
value
,
510
void
*handler_context,
void
*region_context);
511
512
acpi_status
513
acpi_ex_embedded_controller_space_handler
(
u32
function
,
514
acpi_physical_address
address
,
515
u32
bit_width
,
516
u64
*
value
,
517
void
*handler_context,
518
void
*region_context);
519
520
acpi_status
521
acpi_ex_sm_bus_space_handler
(
u32
function
,
522
acpi_physical_address
address
,
523
u32
bit_width
,
524
u64
*
value
,
525
void
*handler_context,
void
*region_context);
526
527
acpi_status
528
acpi_ex_data_table_space_handler
(
u32
function
,
529
acpi_physical_address
address
,
530
u32
bit_width
,
531
u64
*
value
,
532
void
*handler_context,
void
*region_context);
533
534
#endif
/* __INTERP_H__ */
Generated on Thu Jan 10 2013 13:23:25 for Linux Kernel by
1.8.2