acpica: Clean up the config header a bit.
[dragonfly.git] / sys / contrib / dev / acpica / source / include / acdispat.h
1 /******************************************************************************
2  *
3  * Name: acdispat.h - dispatcher (parser to interpreter interface)
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2014, 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
45 #ifndef _ACDISPAT_H_
46 #define _ACDISPAT_H_
47
48
49 #define NAMEOF_LOCAL_NTE    "__L0"
50 #define NAMEOF_ARG_NTE      "__A0"
51
52
53 /*
54  * dsargs - execution of dynamic arguments for static objects
55  */
56 ACPI_STATUS
57 AcpiDsGetBufferFieldArguments (
58     ACPI_OPERAND_OBJECT     *ObjDesc);
59
60 ACPI_STATUS
61 AcpiDsGetBankFieldArguments (
62     ACPI_OPERAND_OBJECT     *ObjDesc);
63
64 ACPI_STATUS
65 AcpiDsGetRegionArguments (
66     ACPI_OPERAND_OBJECT     *RgnDesc);
67
68 ACPI_STATUS
69 AcpiDsGetBufferArguments (
70     ACPI_OPERAND_OBJECT     *ObjDesc);
71
72 ACPI_STATUS
73 AcpiDsGetPackageArguments (
74     ACPI_OPERAND_OBJECT     *ObjDesc);
75
76
77 /*
78  * dscontrol - support for execution control opcodes
79  */
80 ACPI_STATUS
81 AcpiDsExecBeginControlOp (
82     ACPI_WALK_STATE         *WalkState,
83     ACPI_PARSE_OBJECT       *Op);
84
85 ACPI_STATUS
86 AcpiDsExecEndControlOp (
87     ACPI_WALK_STATE         *WalkState,
88     ACPI_PARSE_OBJECT       *Op);
89
90
91 /*
92  * dsopcode - support for late operand evaluation
93  */
94 ACPI_STATUS
95 AcpiDsEvalBufferFieldOperands (
96     ACPI_WALK_STATE         *WalkState,
97     ACPI_PARSE_OBJECT       *Op);
98
99 ACPI_STATUS
100 AcpiDsEvalRegionOperands (
101     ACPI_WALK_STATE         *WalkState,
102     ACPI_PARSE_OBJECT       *Op);
103
104 ACPI_STATUS
105 AcpiDsEvalTableRegionOperands (
106     ACPI_WALK_STATE         *WalkState,
107     ACPI_PARSE_OBJECT       *Op);
108
109 ACPI_STATUS
110 AcpiDsEvalDataObjectOperands (
111     ACPI_WALK_STATE         *WalkState,
112     ACPI_PARSE_OBJECT       *Op,
113     ACPI_OPERAND_OBJECT     *ObjDesc);
114
115 ACPI_STATUS
116 AcpiDsEvalBankFieldOperands (
117     ACPI_WALK_STATE         *WalkState,
118     ACPI_PARSE_OBJECT       *Op);
119
120 ACPI_STATUS
121 AcpiDsInitializeRegion (
122     ACPI_HANDLE             ObjHandle);
123
124
125 /*
126  * dsexec - Parser/Interpreter interface, method execution callbacks
127  */
128 ACPI_STATUS
129 AcpiDsGetPredicateValue (
130     ACPI_WALK_STATE         *WalkState,
131     ACPI_OPERAND_OBJECT     *ResultObj);
132
133 ACPI_STATUS
134 AcpiDsExecBeginOp (
135     ACPI_WALK_STATE         *WalkState,
136     ACPI_PARSE_OBJECT       **OutOp);
137
138 ACPI_STATUS
139 AcpiDsExecEndOp (
140     ACPI_WALK_STATE         *State);
141
142
143 /*
144  * dsfield - Parser/Interpreter interface for AML fields
145  */
146 ACPI_STATUS
147 AcpiDsCreateField (
148     ACPI_PARSE_OBJECT       *Op,
149     ACPI_NAMESPACE_NODE     *RegionNode,
150     ACPI_WALK_STATE         *WalkState);
151
152 ACPI_STATUS
153 AcpiDsCreateBankField (
154     ACPI_PARSE_OBJECT       *Op,
155     ACPI_NAMESPACE_NODE     *RegionNode,
156     ACPI_WALK_STATE         *WalkState);
157
158 ACPI_STATUS
159 AcpiDsCreateIndexField (
160     ACPI_PARSE_OBJECT       *Op,
161     ACPI_NAMESPACE_NODE     *RegionNode,
162     ACPI_WALK_STATE         *WalkState);
163
164 ACPI_STATUS
165 AcpiDsCreateBufferField (
166     ACPI_PARSE_OBJECT       *Op,
167     ACPI_WALK_STATE         *WalkState);
168
169 ACPI_STATUS
170 AcpiDsInitFieldObjects (
171     ACPI_PARSE_OBJECT       *Op,
172     ACPI_WALK_STATE         *WalkState);
173
174
175 /*
176  * dsload - Parser/Interpreter interface
177  */
178 ACPI_STATUS
179 AcpiDsInitCallbacks (
180     ACPI_WALK_STATE         *WalkState,
181     UINT32                  PassNumber);
182
183 /* dsload - pass 1 namespace load callbacks */
184
185 ACPI_STATUS
186 AcpiDsLoad1BeginOp (
187     ACPI_WALK_STATE         *WalkState,
188     ACPI_PARSE_OBJECT       **OutOp);
189
190 ACPI_STATUS
191 AcpiDsLoad1EndOp (
192     ACPI_WALK_STATE         *WalkState);
193
194
195 /* dsload - pass 2 namespace load callbacks */
196
197 ACPI_STATUS
198 AcpiDsLoad2BeginOp (
199     ACPI_WALK_STATE         *WalkState,
200     ACPI_PARSE_OBJECT       **OutOp);
201
202 ACPI_STATUS
203 AcpiDsLoad2EndOp (
204     ACPI_WALK_STATE         *WalkState);
205
206
207 /*
208  * dsmthdat - method data (locals/args)
209  */
210 ACPI_STATUS
211 AcpiDsStoreObjectToLocal (
212     UINT8                   Type,
213     UINT32                  Index,
214     ACPI_OPERAND_OBJECT     *SrcDesc,
215     ACPI_WALK_STATE         *WalkState);
216
217 ACPI_STATUS
218 AcpiDsMethodDataGetEntry (
219     UINT16                  Opcode,
220     UINT32                  Index,
221     ACPI_WALK_STATE         *WalkState,
222     ACPI_OPERAND_OBJECT     ***Node);
223
224 void
225 AcpiDsMethodDataDeleteAll (
226     ACPI_WALK_STATE         *WalkState);
227
228 BOOLEAN
229 AcpiDsIsMethodValue (
230     ACPI_OPERAND_OBJECT     *ObjDesc);
231
232 ACPI_STATUS
233 AcpiDsMethodDataGetValue (
234     UINT8                   Type,
235     UINT32                  Index,
236     ACPI_WALK_STATE         *WalkState,
237     ACPI_OPERAND_OBJECT     **DestDesc);
238
239 ACPI_STATUS
240 AcpiDsMethodDataInitArgs (
241     ACPI_OPERAND_OBJECT     **Params,
242     UINT32                  MaxParamCount,
243     ACPI_WALK_STATE         *WalkState);
244
245 ACPI_STATUS
246 AcpiDsMethodDataGetNode (
247     UINT8                   Type,
248     UINT32                  Index,
249     ACPI_WALK_STATE         *WalkState,
250     ACPI_NAMESPACE_NODE     **Node);
251
252 void
253 AcpiDsMethodDataInit (
254     ACPI_WALK_STATE         *WalkState);
255
256
257 /*
258  * dsmethod - Parser/Interpreter interface - control method parsing
259  */
260 ACPI_STATUS
261 AcpiDsAutoSerializeMethod (
262     ACPI_NAMESPACE_NODE     *Node,
263     ACPI_OPERAND_OBJECT     *ObjDesc);
264
265 ACPI_STATUS
266 AcpiDsCallControlMethod (
267     ACPI_THREAD_STATE       *Thread,
268     ACPI_WALK_STATE         *WalkState,
269     ACPI_PARSE_OBJECT       *Op);
270
271 ACPI_STATUS
272 AcpiDsRestartControlMethod (
273     ACPI_WALK_STATE         *WalkState,
274     ACPI_OPERAND_OBJECT     *ReturnDesc);
275
276 void
277 AcpiDsTerminateControlMethod (
278     ACPI_OPERAND_OBJECT     *MethodDesc,
279     ACPI_WALK_STATE         *WalkState);
280
281 ACPI_STATUS
282 AcpiDsBeginMethodExecution (
283     ACPI_NAMESPACE_NODE     *MethodNode,
284     ACPI_OPERAND_OBJECT     *ObjDesc,
285     ACPI_WALK_STATE         *WalkState);
286
287 ACPI_STATUS
288 AcpiDsMethodError (
289     ACPI_STATUS             Status,
290     ACPI_WALK_STATE         *WalkState);
291
292 /*
293  * dsinit
294  */
295 ACPI_STATUS
296 AcpiDsInitializeObjects (
297     UINT32                  TableIndex,
298     ACPI_NAMESPACE_NODE     *StartNode);
299
300
301 /*
302  * dsobject - Parser/Interpreter interface - object initialization and conversion
303  */
304 ACPI_STATUS
305 AcpiDsBuildInternalBufferObj (
306     ACPI_WALK_STATE         *WalkState,
307     ACPI_PARSE_OBJECT       *Op,
308     UINT32                  BufferLength,
309     ACPI_OPERAND_OBJECT     **ObjDescPtr);
310
311 ACPI_STATUS
312 AcpiDsBuildInternalPackageObj (
313     ACPI_WALK_STATE         *WalkState,
314     ACPI_PARSE_OBJECT       *op,
315     UINT32                  PackageLength,
316     ACPI_OPERAND_OBJECT     **ObjDesc);
317
318 ACPI_STATUS
319 AcpiDsInitObjectFromOp (
320     ACPI_WALK_STATE         *WalkState,
321     ACPI_PARSE_OBJECT       *Op,
322     UINT16                  Opcode,
323     ACPI_OPERAND_OBJECT     **ObjDesc);
324
325 ACPI_STATUS
326 AcpiDsCreateNode (
327     ACPI_WALK_STATE         *WalkState,
328     ACPI_NAMESPACE_NODE     *Node,
329     ACPI_PARSE_OBJECT       *Op);
330
331
332 /*
333  * dsutils - Parser/Interpreter interface utility routines
334  */
335 void
336 AcpiDsClearImplicitReturn (
337     ACPI_WALK_STATE         *WalkState);
338
339 BOOLEAN
340 AcpiDsDoImplicitReturn (
341     ACPI_OPERAND_OBJECT     *ReturnDesc,
342     ACPI_WALK_STATE         *WalkState,
343     BOOLEAN                 AddReference);
344
345 BOOLEAN
346 AcpiDsIsResultUsed (
347     ACPI_PARSE_OBJECT       *Op,
348     ACPI_WALK_STATE         *WalkState);
349
350 void
351 AcpiDsDeleteResultIfNotUsed (
352     ACPI_PARSE_OBJECT       *Op,
353     ACPI_OPERAND_OBJECT     *ResultObj,
354     ACPI_WALK_STATE         *WalkState);
355
356 ACPI_STATUS
357 AcpiDsCreateOperand (
358     ACPI_WALK_STATE         *WalkState,
359     ACPI_PARSE_OBJECT       *Arg,
360     UINT32                  ArgsRemaining);
361
362 ACPI_STATUS
363 AcpiDsCreateOperands (
364     ACPI_WALK_STATE         *WalkState,
365     ACPI_PARSE_OBJECT       *FirstArg);
366
367 ACPI_STATUS
368 AcpiDsResolveOperands (
369     ACPI_WALK_STATE         *WalkState);
370
371 void
372 AcpiDsClearOperands (
373     ACPI_WALK_STATE         *WalkState);
374
375 ACPI_STATUS
376 AcpiDsEvaluateNamePath (
377     ACPI_WALK_STATE         *WalkState);
378
379
380 /*
381  * dswscope - Scope Stack manipulation
382  */
383 ACPI_STATUS
384 AcpiDsScopeStackPush (
385     ACPI_NAMESPACE_NODE     *Node,
386     ACPI_OBJECT_TYPE        Type,
387     ACPI_WALK_STATE         *WalkState);
388
389
390 ACPI_STATUS
391 AcpiDsScopeStackPop (
392     ACPI_WALK_STATE         *WalkState);
393
394 void
395 AcpiDsScopeStackClear (
396     ACPI_WALK_STATE         *WalkState);
397
398
399 /*
400  * dswstate - parser WALK_STATE management routines
401  */
402 ACPI_STATUS
403 AcpiDsObjStackPush (
404     void                    *Object,
405     ACPI_WALK_STATE         *WalkState);
406
407 ACPI_STATUS
408 AcpiDsObjStackPop (
409     UINT32                  PopCount,
410     ACPI_WALK_STATE         *WalkState);
411
412 ACPI_WALK_STATE *
413 AcpiDsCreateWalkState (
414     ACPI_OWNER_ID           OwnerId,
415     ACPI_PARSE_OBJECT       *Origin,
416     ACPI_OPERAND_OBJECT     *MthDesc,
417     ACPI_THREAD_STATE       *Thread);
418
419 ACPI_STATUS
420 AcpiDsInitAmlWalk (
421     ACPI_WALK_STATE         *WalkState,
422     ACPI_PARSE_OBJECT       *Op,
423     ACPI_NAMESPACE_NODE     *MethodNode,
424     UINT8                   *AmlStart,
425     UINT32                  AmlLength,
426     ACPI_EVALUATE_INFO      *Info,
427     UINT8                   PassNumber);
428
429 void
430 AcpiDsObjStackPopAndDelete (
431     UINT32                  PopCount,
432     ACPI_WALK_STATE         *WalkState);
433
434 void
435 AcpiDsDeleteWalkState (
436     ACPI_WALK_STATE         *WalkState);
437
438 ACPI_WALK_STATE *
439 AcpiDsPopWalkState (
440     ACPI_THREAD_STATE       *Thread);
441
442 void
443 AcpiDsPushWalkState (
444     ACPI_WALK_STATE         *WalkState,
445     ACPI_THREAD_STATE       *Thread);
446
447 ACPI_STATUS
448 AcpiDsResultStackClear (
449     ACPI_WALK_STATE         *WalkState);
450
451 ACPI_WALK_STATE *
452 AcpiDsGetCurrentWalkState (
453     ACPI_THREAD_STATE       *Thread);
454
455 ACPI_STATUS
456 AcpiDsResultPop (
457     ACPI_OPERAND_OBJECT     **Object,
458     ACPI_WALK_STATE         *WalkState);
459
460 ACPI_STATUS
461 AcpiDsResultPush (
462     ACPI_OPERAND_OBJECT     *Object,
463     ACPI_WALK_STATE         *WalkState);
464
465 #endif /* _ACDISPAT_H_ */