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