ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / acpi / acdisasm.h
1 /******************************************************************************
2  *
3  * Name: acdisasm.h - AML disassembler
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2004, R. Byron Moore
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 __ACDISASM_H__
45 #define __ACDISASM_H__
46
47 #include "amlresrc.h"
48
49
50 #define BLOCK_NONE              0
51 #define BLOCK_PAREN             1
52 #define BLOCK_BRACE             2
53 #define BLOCK_COMMA_LIST        4
54
55 extern const char                       *acpi_gbl_io_decode[2];
56 extern const char                       *acpi_gbl_word_decode[4];
57 extern const char                       *acpi_gbl_consume_decode[2];
58 extern const char                       *acpi_gbl_min_decode[2];
59 extern const char                       *acpi_gbl_max_decode[2];
60 extern const char                       *acpi_gbl_DECdecode[2];
61 extern const char                       *acpi_gbl_RNGdecode[4];
62 extern const char                       *acpi_gbl_MEMdecode[4];
63 extern const char                       *acpi_gbl_RWdecode[2];
64 extern const char                       *acpi_gbl_irq_decode[2];
65 extern const char                       *acpi_gbl_HEdecode[2];
66 extern const char                       *acpi_gbl_LLdecode[2];
67 extern const char                       *acpi_gbl_SHRdecode[2];
68 extern const char                       *acpi_gbl_TYPdecode[4];
69 extern const char                       *acpi_gbl_BMdecode[2];
70 extern const char                       *acpi_gbl_SIZdecode[4];
71 extern const char                       *acpi_gbl_lock_rule[ACPI_NUM_LOCK_RULES];
72 extern const char                       *acpi_gbl_access_types[ACPI_NUM_ACCESS_TYPES];
73 extern const char                       *acpi_gbl_update_rules[ACPI_NUM_UPDATE_RULES];
74 extern const char                       *acpi_gbl_match_ops[ACPI_NUM_MATCH_OPS];
75
76
77 struct acpi_op_walk_info
78 {
79         u32                             level;
80         u32                             bit_offset;
81 };
82
83 typedef
84 acpi_status (*asl_walk_callback) (
85         union acpi_parse_object             *op,
86         u32                                 level,
87         void                                *context);
88
89
90 /*
91  * dmwalk
92  */
93
94 void
95 acpi_dm_walk_parse_tree (
96         union acpi_parse_object         *op,
97         asl_walk_callback               descending_callback,
98         asl_walk_callback               ascending_callback,
99         void                            *context);
100
101 acpi_status
102 acpi_dm_descending_op (
103         union acpi_parse_object         *op,
104         u32                             level,
105         void                            *context);
106
107 acpi_status
108 acpi_dm_ascending_op (
109         union acpi_parse_object         *op,
110         u32                             level,
111         void                            *context);
112
113
114 /*
115  * dmopcode
116  */
117
118 void
119 acpi_dm_validate_name (
120         char                            *name,
121         union acpi_parse_object         *op);
122
123 u32
124 acpi_dm_dump_name (
125         char                            *name);
126
127 void
128 acpi_dm_unicode (
129         union acpi_parse_object         *op);
130
131 void
132 acpi_dm_disassemble (
133         struct acpi_walk_state          *walk_state,
134         union acpi_parse_object         *origin,
135         u32                             num_opcodes);
136
137 void
138 acpi_dm_namestring (
139         char                            *name);
140
141 void
142 acpi_dm_display_path (
143         union acpi_parse_object         *op);
144
145 void
146 acpi_dm_disassemble_one_op (
147         struct acpi_walk_state          *walk_state,
148         struct acpi_op_walk_info        *info,
149         union acpi_parse_object         *op);
150
151 void
152 acpi_dm_decode_internal_object (
153         union acpi_operand_object       *obj_desc);
154
155 u32
156 acpi_dm_block_type (
157         union acpi_parse_object         *op);
158
159 u32
160 acpi_dm_list_type (
161         union acpi_parse_object         *op);
162
163 acpi_status
164 acpi_ps_display_object_pathname (
165         struct acpi_walk_state          *walk_state,
166         union acpi_parse_object         *op);
167
168 void
169 acpi_dm_method_flags (
170         union acpi_parse_object         *op);
171
172 void
173 acpi_dm_field_flags (
174         union acpi_parse_object         *op);
175
176 void
177 acpi_dm_address_space (
178         u8                              space_id);
179
180 void
181 acpi_dm_region_flags (
182         union acpi_parse_object         *op);
183
184 void
185 acpi_dm_match_op (
186         union acpi_parse_object         *op);
187
188 void
189 acpi_dm_match_keyword (
190         union acpi_parse_object         *op);
191
192 u8
193 acpi_dm_comma_if_list_member (
194         union acpi_parse_object         *op);
195
196 void
197 acpi_dm_comma_if_field_member (
198         union acpi_parse_object         *op);
199
200
201 /*
202  * dmobject
203  */
204
205 void
206 acpi_dm_decode_node (
207         struct acpi_namespace_node      *node);
208
209 void
210 acpi_dm_display_internal_object (
211         union acpi_operand_object       *obj_desc,
212         struct acpi_walk_state          *walk_state);
213
214 void
215 acpi_dm_display_arguments (
216         struct acpi_walk_state          *walk_state);
217
218 void
219 acpi_dm_display_locals (
220         struct acpi_walk_state          *walk_state);
221
222 void
223 acpi_dm_dump_method_info (
224         acpi_status                     status,
225         struct acpi_walk_state          *walk_state,
226         union acpi_parse_object         *op);
227
228
229 /*
230  * dmbuffer
231  */
232
233 void
234 acpi_is_eisa_id (
235         union acpi_parse_object         *op);
236
237 void
238 acpi_dm_eisa_id (
239         u32                             encoded_id);
240
241 u8
242 acpi_dm_is_unicode_buffer (
243         union acpi_parse_object         *op);
244
245 u8
246 acpi_dm_is_string_buffer (
247         union acpi_parse_object         *op);
248
249
250 /*
251  * dmresrc
252  */
253
254 void
255 acpi_dm_disasm_byte_list (
256         u32                             level,
257         u8                              *byte_data,
258         u32                             byte_count);
259
260 void
261 acpi_dm_byte_list (
262         struct acpi_op_walk_info        *info,
263         union acpi_parse_object         *op);
264
265 void
266 acpi_dm_resource_descriptor (
267         struct acpi_op_walk_info        *info,
268         u8                              *byte_data,
269         u32                             byte_count);
270
271 u8
272 acpi_dm_is_resource_descriptor (
273         union acpi_parse_object         *op);
274
275 void
276 acpi_dm_indent (
277         u32                             level);
278
279 void
280 acpi_dm_bit_list (
281         u16                             mask);
282
283 void
284 acpi_dm_decode_attribute (
285         u8                              attribute);
286
287 /*
288  * dmresrcl
289  */
290
291 void
292 acpi_dm_io_flags (
293                 u8                          flags);
294
295 void
296 acpi_dm_memory_flags (
297         u8                              flags,
298         u8                              specific_flags);
299
300 void
301 acpi_dm_word_descriptor (
302         struct asl_word_address_desc    *resource,
303         u32                             length,
304         u32                             level);
305
306 void
307 acpi_dm_dword_descriptor (
308         struct asl_dword_address_desc   *resource,
309         u32                             length,
310         u32                             level);
311
312 void
313 acpi_dm_qword_descriptor (
314         struct asl_qword_address_desc   *resource,
315         u32                             length,
316         u32                             level);
317
318 void
319 acpi_dm_memory24_descriptor (
320         struct asl_memory_24_desc       *resource,
321         u32                             length,
322         u32                             level);
323
324 void
325 acpi_dm_memory32_descriptor (
326         struct asl_memory_32_desc       *resource,
327         u32                             length,
328         u32                             level);
329
330 void
331 acpi_dm_fixed_mem32_descriptor (
332         struct asl_fixed_memory_32_desc *resource,
333         u32                             length,
334         u32                             level);
335
336 void
337 acpi_dm_generic_register_descriptor (
338         struct asl_general_register_desc *resource,
339         u32                             length,
340         u32                             level);
341
342 void
343 acpi_dm_interrupt_descriptor (
344         struct asl_extended_xrupt_desc *resource,
345         u32                             length,
346         u32                             level);
347
348 void
349 acpi_dm_vendor_large_descriptor (
350         struct asl_large_vendor_desc    *resource,
351         u32                             length,
352         u32                             level);
353
354
355 /*
356  * dmresrcs
357  */
358
359 void
360 acpi_dm_irq_descriptor (
361         struct asl_irq_format_desc      *resource,
362         u32                             length,
363         u32                             level);
364
365 void
366 acpi_dm_dma_descriptor (
367         struct asl_dma_format_desc      *resource,
368         u32                             length,
369         u32                             level);
370
371 void
372 acpi_dm_io_descriptor (
373         struct asl_io_port_desc         *resource,
374         u32                             length,
375         u32                             level);
376
377 void
378 acpi_dm_fixed_io_descriptor (
379         struct asl_fixed_io_port_desc   *resource,
380         u32                             length,
381         u32                             level);
382
383 void
384 acpi_dm_start_dependent_descriptor (
385         struct asl_start_dependent_desc *resource,
386         u32                             length,
387         u32                             level);
388
389 void
390 acpi_dm_end_dependent_descriptor (
391         struct asl_start_dependent_desc *resource,
392         u32                             length,
393         u32                             level);
394
395 void
396 acpi_dm_vendor_small_descriptor (
397         struct asl_small_vendor_desc    *resource,
398         u32                             length,
399         u32                             level);
400
401
402 #endif  /* __ACDISASM_H__ */