acstruct.h revision 167802
1193576Sed/******************************************************************************
2193576Sed *
3193576Sed * Name: acstruct.h - Internal structs
4193576Sed *       $Revision: 1.47 $
5193576Sed *
6193576Sed *****************************************************************************/
7193576Sed
8193576Sed/******************************************************************************
9193576Sed *
10193576Sed * 1. Copyright Notice
11193576Sed *
12193576Sed * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
13212904Sdim * All rights reserved.
14249423Sdim *
15193576Sed * 2. License
16263508Sdim *
17212904Sdim * 2.1. This is your license from Intel Corp. under its intellectual property
18193576Sed * rights.  You may have additional license terms from the party that provided
19193576Sed * you this software, covering your right to use that party's intellectual
20193576Sed * property rights.
21249423Sdim *
22249423Sdim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23249423Sdim * copy of the source code appearing in this file ("Covered Code") an
24249423Sdim * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25234353Sdim * base code distributed originally by Intel ("Original Intel Code") to copy,
26198092Srdivacky * make derivatives, distribute, use and display any portion of the Covered
27195099Sed * Code in any form, with the right to sublicense such rights; and
28195099Sed *
29212904Sdim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30195099Sed * license (with the right to sublicense), under only those claims of Intel
31195099Sed * patents that are infringed by the Original Intel Code, to make, use, sell,
32195099Sed * offer to sell, and import the Covered Code and derivative works thereof
33195099Sed * solely to the minimum extent necessary to exercise the above copyright
34195099Sed * license, and in no event shall the patent license extend to any additions
35195099Sed * to or modifications of the Original Intel Code.  No other license or right
36195099Sed * is granted directly or by implication, estoppel or otherwise;
37195099Sed *
38195099Sed * The above copyright and patent license is granted only if the following
39195099Sed * conditions are met:
40195099Sed *
41195099Sed * 3. Conditions
42195099Sed *
43195099Sed * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44195099Sed * Redistribution of source code of any substantial portion of the Covered
45195099Sed * Code or modification with rights to further distribute source must include
46195099Sed * the above Copyright Notice, the above License, this list of Conditions,
47195099Sed * and the following Disclaimer and Export Compliance provision.  In addition,
48198092Srdivacky * Licensee must cause all Covered Code to which Licensee contributes to
49198092Srdivacky * contain a file documenting the changes Licensee made to create that Covered
50198092Srdivacky * Code and the date of any change.  Licensee must include in that file the
51198092Srdivacky * documentation of any changes made by any predecessor Licensee.  Licensee
52218893Sdim * must include a prominent statement that the modification is derived,
53218893Sdim * directly or indirectly, from Original Intel Code.
54218893Sdim *
55251662Sdim * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56251662Sdim * Redistribution of source code of any substantial portion of the Covered
57251662Sdim * Code or modification without rights to further distribute source must
58251662Sdim * include the following Disclaimer and Export Compliance provision in the
59251662Sdim * documentation and/or other materials provided with distribution.  In
60195099Sed * addition, Licensee may not authorize further sublicense of source of any
61195099Sed * portion of the Covered Code, and must include terms to the effect that the
62195099Sed * license from Licensee to its licensee is limited to the intellectual
63193576Sed * property embodied in the software Licensee provides to its licensee, and
64193576Sed * not to intellectual property embodied in modifications its licensee may
65206084Srdivacky * make.
66206084Srdivacky *
67206084Srdivacky * 3.3. Redistribution of Executable. Redistribution in executable form of any
68206084Srdivacky * substantial portion of the Covered Code or modification must reproduce the
69218893Sdim * above Copyright Notice, and the following Disclaimer and Export Compliance
70206084Srdivacky * provision in the documentation and/or other materials provided with the
71218893Sdim * distribution.
72206084Srdivacky *
73206084Srdivacky * 3.4. Intel retains all right, title, and interest in and to the Original
74206084Srdivacky * Intel Code.
75206084Srdivacky *
76206084Srdivacky * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77206084Srdivacky * Intel shall be used in advertising or otherwise to promote the sale, use or
78206084Srdivacky * other dealings in products derived from or relating to the Covered Code
79206084Srdivacky * without prior written authorization from Intel.
80206084Srdivacky *
81206084Srdivacky * 4. Disclaimer and Export Compliance
82206084Srdivacky *
83206084Srdivacky * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84206084Srdivacky * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85206084Srdivacky * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
86194179Sed * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
87203955Srdivacky * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
88194179Sed * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89194179Sed * PARTICULAR PURPOSE.
90218893Sdim *
91212904Sdim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92263508Sdim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93194179Sed * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94218893Sdim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95218893Sdim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96218893Sdim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
97218893Sdim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98218893Sdim * LIMITED REMEDY.
99218893Sdim *
100218893Sdim * 4.3. Licensee shall not export, either directly or indirectly, any of this
101218893Sdim * software or system incorporating such software without first obtaining any
102218893Sdim * required license or other approval from the U. S. Department of Commerce or
103218893Sdim * any other agency or department of the United States Government.  In the
104218893Sdim * event Licensee exports any such software from the United States or
105218893Sdim * re-exports any such software from a foreign destination, Licensee shall
106218893Sdim * ensure that the distribution and export/re-export of the software is in
107218893Sdim * compliance with all laws, regulations, orders, or other restrictions of the
108218893Sdim * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109218893Sdim * any of its subsidiaries will export/re-export any technical data, process,
110218893Sdim * software, or service, directly or indirectly, to any country for which the
111218893Sdim * United States government or any agency thereof requires an export license,
112218893Sdim * other governmental approval, or letter of assurance, without first obtaining
113218893Sdim * such license, approval or letter.
114218893Sdim *
115218893Sdim *****************************************************************************/
116218893Sdim
117218893Sdim#ifndef __ACSTRUCT_H__
118218893Sdim#define __ACSTRUCT_H__
119234353Sdim
120234353Sdim/* acpisrc:StructDefs -- for acpisrc conversion */
121234353Sdim
122234353Sdim/*****************************************************************************
123234353Sdim *
124234353Sdim * Tree walking typedefs and structs
125234353Sdim *
126234353Sdim ****************************************************************************/
127234353Sdim
128234353Sdim
129218893Sdim/*
130218893Sdim * Walk state - current state of a parse tree walk.  Used for both a leisurely
131218893Sdim * stroll through the tree (for whatever reason), and for control method
132218893Sdim * execution.
133218893Sdim */
134218893Sdim#define ACPI_NEXT_OP_DOWNWARD       1
135218893Sdim#define ACPI_NEXT_OP_UPWARD         2
136218893Sdim
137249423Sdim/*
138218893Sdim * Groups of definitions for WalkType used for different implementations of
139193576Sed * walkers (never simultaneously) - flags for interpreter:
140193576Sed */
141193576Sed#define ACPI_WALK_NON_METHOD        0
142193576Sed#define ACPI_WALK_METHOD            0x01
143239462Sdim#define ACPI_WALK_METHOD_RESTART    0x02
144239462Sdim
145239462Sdim/* Flags for iASL compiler only */
146239462Sdim
147239462Sdim#define ACPI_WALK_CONST_REQUIRED    0x10
148239462Sdim#define ACPI_WALK_CONST_OPTIONAL    0x20
149239462Sdim
150239462Sdim
151239462Sdimtypedef struct acpi_walk_state
152239462Sdim{
153239462Sdim    struct acpi_walk_state          *Next;              /* Next WalkState in list */
154198092Srdivacky    UINT8                           DescriptorType;     /* To differentiate various internal objs */
155193576Sed    UINT8                           WalkType;
156193576Sed    UINT16                          Opcode;             /* Current AML opcode */
157198092Srdivacky    UINT8                           NextOpInfo;         /* Info about NextOp */
158193576Sed    UINT8                           NumOperands;        /* Stack pointer for Operands[] array */
159193576Sed    UINT8                           OperandIndex;       /* Index into operand stack, to be used by AcpiDsObjStackPush */
160193576Sed    ACPI_OWNER_ID                   OwnerId;            /* Owner of objects created during the walk */
161218893Sdim    BOOLEAN                         LastPredicate;      /* Result of last predicate */
162218893Sdim    UINT8                           CurrentResult;
163218893Sdim    UINT8                           ReturnUsed;
164218893Sdim    UINT8                           ScopeDepth;
165218893Sdim    UINT8                           PassNumber;         /* Parse pass during table load */
166218893Sdim    UINT8                           ResultSize;         /* Total elements for the result stack */
167218893Sdim    UINT8                           ResultCount;        /* Current number of occupied elements of result stack */
168218893Sdim    UINT32                          AmlOffset;
169218893Sdim    UINT32                          ArgTypes;
170218893Sdim    UINT32                          MethodBreakpoint;   /* For single stepping */
171218893Sdim    UINT32                          UserBreakpoint;     /* User AML breakpoint */
172218893Sdim    UINT32                          ParseFlags;
173218893Sdim
174218893Sdim    ACPI_PARSE_STATE                ParserState;        /* Current state of parser */
175218893Sdim    UINT32                          PrevArgTypes;
176218893Sdim    UINT32                          ArgCount;           /* push for fixed or var args */
177218893Sdim
178218893Sdim    struct acpi_namespace_node      Arguments[ACPI_METHOD_NUM_ARGS];        /* Control method arguments */
179218893Sdim    struct acpi_namespace_node      LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
180218893Sdim    union acpi_operand_object       *Operands[ACPI_OBJ_NUM_OPERANDS + 1];   /* Operands passed to the interpreter (+1 for NULL terminator) */
181218893Sdim    union acpi_operand_object       **Params;
182218893Sdim
183218893Sdim    UINT8                           *AmlLastWhile;
184218893Sdim    union acpi_operand_object       **CallerReturnDesc;
185218893Sdim    ACPI_GENERIC_STATE              *ControlState;      /* List of control states (nested IFs) */
186218893Sdim    struct acpi_namespace_node      *DeferredNode;      /* Used when executing deferred opcodes */
187218893Sdim    struct acpi_gpe_event_info      *GpeEventInfo;      /* Info for GPE (_Lxx/_Exx methods only */
188218893Sdim    union acpi_operand_object       *ImplicitReturnObj;
189218893Sdim    struct acpi_namespace_node      *MethodCallNode;    /* Called method Node*/
190218893Sdim    ACPI_PARSE_OBJECT               *MethodCallOp;      /* MethodCall Op if running a method */
191218893Sdim    union acpi_operand_object       *MethodDesc;        /* Method descriptor if running a method */
192218893Sdim    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method. */
193218893Sdim    ACPI_PARSE_OBJECT               *Op;                /* Current parser op */
194218893Sdim    const ACPI_OPCODE_INFO          *OpInfo;            /* Info on current opcode */
195218893Sdim    ACPI_PARSE_OBJECT               *Origin;            /* Start of walk [Obsolete] */
196218893Sdim    union acpi_operand_object       *ResultObj;
197218893Sdim    ACPI_GENERIC_STATE              *Results;           /* Stack of accumulated results */
198218893Sdim    union acpi_operand_object       *ReturnDesc;        /* Return object, if any */
199218893Sdim    ACPI_GENERIC_STATE              *ScopeInfo;         /* Stack of nested scopes */
200218893Sdim    ACPI_PARSE_OBJECT               *PrevOp;            /* Last op that was processed */
201218893Sdim    ACPI_PARSE_OBJECT               *NextOp;            /* next op to be processed */
202218893Sdim    ACPI_THREAD_STATE               *Thread;
203218893Sdim    ACPI_PARSE_DOWNWARDS            DescendingCallback;
204218893Sdim    ACPI_PARSE_UPWARDS              AscendingCallback;
205239462Sdim
206218893Sdim} ACPI_WALK_STATE;
207218893Sdim
208218893Sdim
209218893Sdim/* Info used by AcpiPsInitObjects */
210218893Sdim
211218893Sdimtypedef struct acpi_init_walk_info
212218893Sdim{
213218893Sdim    UINT16                          MethodCount;
214218893Sdim    UINT16                          DeviceCount;
215218893Sdim    UINT16                          OpRegionCount;
216218893Sdim    UINT16                          FieldCount;
217218893Sdim    UINT16                          BufferCount;
218218893Sdim    UINT16                          PackageCount;
219218893Sdim    UINT16                          OpRegionInit;
220218893Sdim    UINT16                          FieldInit;
221218893Sdim    UINT16                          BufferInit;
222218893Sdim    UINT16                          PackageInit;
223218893Sdim    UINT16                          ObjectCount;
224218893Sdim    ACPI_OWNER_ID                   OwnerId;
225218893Sdim    ACPI_NATIVE_UINT                TableIndex;
226218893Sdim
227218893Sdim} ACPI_INIT_WALK_INFO;
228218893Sdim
229218893Sdim
230218893Sdimtypedef struct acpi_get_devices_info
231218893Sdim{
232218893Sdim    ACPI_WALK_CALLBACK              UserFunction;
233218893Sdim    void                            *Context;
234218893Sdim    char                            *Hid;
235218893Sdim
236218893Sdim} ACPI_GET_DEVICES_INFO;
237218893Sdim
238218893Sdim
239218893Sdimtypedef union acpi_aml_operands
240218893Sdim{
241218893Sdim    ACPI_OPERAND_OBJECT             *Operands[7];
242218893Sdim
243218893Sdim    struct
244218893Sdim    {
245218893Sdim        ACPI_OBJECT_INTEGER             *Type;
246218893Sdim        ACPI_OBJECT_INTEGER             *Code;
247218893Sdim        ACPI_OBJECT_INTEGER             *Argument;
248218893Sdim
249218893Sdim    } Fatal;
250218893Sdim
251218893Sdim    struct
252218893Sdim    {
253218893Sdim        ACPI_OPERAND_OBJECT             *Source;
254218893Sdim        ACPI_OBJECT_INTEGER             *Index;
255218893Sdim        ACPI_OPERAND_OBJECT             *Target;
256218893Sdim
257218893Sdim    } Index;
258218893Sdim
259218893Sdim    struct
260218893Sdim    {
261218893Sdim        ACPI_OPERAND_OBJECT             *Source;
262218893Sdim        ACPI_OBJECT_INTEGER             *Index;
263218893Sdim        ACPI_OBJECT_INTEGER             *Length;
264218893Sdim        ACPI_OPERAND_OBJECT             *Target;
265243830Sdim
266243830Sdim    } Mid;
267218893Sdim
268218893Sdim} ACPI_AML_OPERANDS;
269218893Sdim
270218893Sdim
271218893Sdim/*
272243830Sdim * Structure used to pass object evaluation parameters.
273243830Sdim * Purpose is to reduce CPU stack use.
274243830Sdim */
275243830Sdimtypedef struct acpi_evaluate_info
276243830Sdim{
277243830Sdim    ACPI_NAMESPACE_NODE             *PrefixNode;
278243830Sdim    char                            *Pathname;
279243830Sdim    ACPI_OPERAND_OBJECT             *ObjDesc;
280243830Sdim    ACPI_OPERAND_OBJECT             **Parameters;
281243830Sdim    ACPI_NAMESPACE_NODE             *ResolvedNode;
282243830Sdim    ACPI_OPERAND_OBJECT             *ReturnObject;
283243830Sdim    UINT8                           PassNumber;
284243830Sdim    UINT8                           ParameterType;
285243830Sdim    UINT8                           ReturnObjectType;
286243830Sdim    UINT8                           Flags;
287243830Sdim
288243830Sdim} ACPI_EVALUATE_INFO;
289243830Sdim
290243830Sdim/* Types for ParameterType above */
291218893Sdim
292218893Sdim#define ACPI_PARAM_ARGS                 0
293218893Sdim#define ACPI_PARAM_GPE                  1
294218893Sdim
295218893Sdim/* Values for Flags above */
296218893Sdim
297218893Sdim#define ACPI_IGNORE_RETURN_VALUE        1
298218893Sdim
299218893Sdim
300218893Sdim/* Info used by AcpiNsInitializeDevices */
301218893Sdim
302218893Sdimtypedef struct acpi_device_walk_info
303218893Sdim{
304218893Sdim    UINT16                          DeviceCount;
305218893Sdim    UINT16                          Num_STA;
306218893Sdim    UINT16                          Num_INI;
307218893Sdim    ACPI_TABLE_DESC                 *TableDesc;
308218893Sdim    ACPI_EVALUATE_INFO              *EvaluateInfo;
309218893Sdim
310234353Sdim} ACPI_DEVICE_WALK_INFO;
311218893Sdim
312218893Sdim
313198092Srdivacky/* TBD: [Restructure] Merge with struct above */
314193576Sed
315194179Sedtypedef struct acpi_walk_info
316203955Srdivacky{
317198092Srdivacky    UINT32                          DebugLevel;
318206084Srdivacky    UINT32                          Count;
319206084Srdivacky    ACPI_OWNER_ID                   OwnerId;
320212904Sdim    UINT8                           DisplayType;
321226633Sdim
322198092Srdivacky} ACPI_WALK_INFO;
323193576Sed
324198092Srdivacky/* Display Types */
325239462Sdim
326239462Sdim#define ACPI_DISPLAY_SUMMARY        (UINT8) 0
327218893Sdim#define ACPI_DISPLAY_OBJECTS        (UINT8) 1
328218893Sdim#define ACPI_DISPLAY_MASK           (UINT8) 1
329218893Sdim
330218893Sdim#define ACPI_DISPLAY_SHORT          (UINT8) 2
331194179Sed
332194179Sed
333218893Sdim#endif
334194179Sed