#ifndef __ACLOCAL_H__
#define __ACLOCAL_H__
#define ACPI_SERIALIZED 0xFF
typedef UINT32 ACPI_MUTEX_HANDLE;
#define ACPI_GLOBAL_LOCK (ACPI_SEMAPHORE) (-1)
#define AML_NUM_OPCODES 0x83
struct acpi_walk_state;
struct acpi_obj_mutex;
union acpi_parse_object;
#define ACPI_MTX_INTERPRETER 0
#define ACPI_MTX_NAMESPACE 1
#define ACPI_MTX_TABLES 2
#define ACPI_MTX_EVENTS 3
#define ACPI_MTX_CACHES 4
#define ACPI_MTX_MEMORY 5
#define ACPI_MAX_MUTEX 5
#define ACPI_NUM_MUTEX (ACPI_MAX_MUTEX+1)
typedef struct acpi_rw_lock
{
ACPI_MUTEX WriterMutex;
ACPI_MUTEX ReaderMutex;
UINT32 NumReaders;
} ACPI_RW_LOCK;
#define ACPI_LOCK_GPES 0
#define ACPI_LOCK_HARDWARE 1
#define ACPI_MAX_LOCK 1
#define ACPI_NUM_LOCK (ACPI_MAX_LOCK+1)
#define ACPI_MUTEX_NOT_ACQUIRED ((ACPI_THREAD_ID) -1)
#ifdef ACPI_OS_INVALID_THREAD_ID
#define ACPI_INVALID_THREAD_ID ACPI_OS_INVALID_THREAD_ID
#else
#define ACPI_INVALID_THREAD_ID ((ACPI_THREAD_ID) 0xFFFFFFFF)
#endif
typedef struct acpi_mutex_info
{
ACPI_MUTEX Mutex;
UINT32 UseCount;
ACPI_THREAD_ID ThreadId;
} ACPI_MUTEX_INFO;
#define ACPI_MTX_DO_NOT_LOCK 0
#define ACPI_MTX_LOCK 1
#define ACPI_FIELD_BYTE_GRANULARITY 1
#define ACPI_FIELD_WORD_GRANULARITY 2
#define ACPI_FIELD_DWORD_GRANULARITY 4
#define ACPI_FIELD_QWORD_GRANULARITY 8
#define ACPI_ENTRY_NOT_FOUND NULL
typedef enum
{
ACPI_IMODE_LOAD_PASS1 = 0x01,
ACPI_IMODE_LOAD_PASS2 = 0x02,
ACPI_IMODE_EXECUTE = 0x03
} ACPI_INTERPRETER_MODE;
typedef struct acpi_namespace_node
{
union acpi_operand_object *Object;
UINT8 DescriptorType;
UINT8 Type;
UINT16 Flags;
ACPI_NAME_UNION Name;
struct acpi_namespace_node *Parent;
struct acpi_namespace_node *Child;
struct acpi_namespace_node *Peer;
ACPI_OWNER_ID OwnerId;
#ifdef ACPI_LARGE_NAMESPACE_NODE
union acpi_parse_object *Op;
void *MethodLocals;
void *MethodArgs;
UINT32 Value;
UINT32 Length;
UINT8 ArgCount;
#endif
} ACPI_NAMESPACE_NODE;
#define ANOBJ_RESERVED 0x01
#define ANOBJ_TEMPORARY 0x02
#define ANOBJ_METHOD_ARG 0x04
#define ANOBJ_METHOD_LOCAL 0x08
#define ANOBJ_SUBTREE_HAS_INI 0x10
#define ANOBJ_EVALUATED 0x20
#define ANOBJ_ALLOCATED_BUFFER 0x40
#define ANOBJ_NODE_EARLY_INIT 0x80
#define ANOBJ_IS_EXTERNAL 0x08
#define ANOBJ_METHOD_NO_RETVAL 0x10
#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20
#define ANOBJ_IS_REFERENCED 0x80
typedef struct acpi_table_list
{
ACPI_TABLE_DESC *Tables;
UINT32 CurrentTableCount;
UINT32 MaxTableCount;
UINT8 Flags;
} ACPI_TABLE_LIST;
#define ACPI_ROOT_ORIGIN_UNKNOWN (0)
#define ACPI_ROOT_ORIGIN_ALLOCATED (1)
#define ACPI_ROOT_ALLOW_RESIZE (2)
typedef struct acpi_new_table_desc
{
ACPI_TABLE_HEADER *Table;
struct acpi_new_table_desc *Next;
} ACPI_NEW_TABLE_DESC;
#define ACPI_INVALID_TABLE_INDEX (0xFFFFFFFF)
typedef struct acpi_find_context
{
char *SearchFor;
ACPI_HANDLE *List;
UINT32 *Count;
} ACPI_FIND_CONTEXT;
typedef struct acpi_ns_search_data
{
ACPI_NAMESPACE_NODE *Node;
} ACPI_NS_SEARCH_DATA;
#define ACPI_COPY_TYPE_SIMPLE 0
#define ACPI_COPY_TYPE_PACKAGE 1
typedef struct acpi_namestring_info
{
const char *ExternalName;
const char *NextExternalChar;
char *InternalName;
UINT32 Length;
UINT32 NumSegments;
UINT32 NumCarats;
BOOLEAN FullyQualified;
} ACPI_NAMESTRING_INFO;
typedef struct acpi_create_field_info
{
ACPI_NAMESPACE_NODE *RegionNode;
ACPI_NAMESPACE_NODE *FieldNode;
ACPI_NAMESPACE_NODE *RegisterNode;
ACPI_NAMESPACE_NODE *DataRegisterNode;
ACPI_NAMESPACE_NODE *ConnectionNode;
UINT8 *ResourceBuffer;
UINT32 BankValue;
UINT32 FieldBitPosition;
UINT32 FieldBitLength;
UINT16 ResourceLength;
UINT16 PinNumberIndex;
UINT8 FieldFlags;
UINT8 Attribute;
UINT8 FieldType;
UINT8 AccessLength;
} ACPI_CREATE_FIELD_INFO;
typedef
ACPI_STATUS (*ACPI_INTERNAL_METHOD) (
struct acpi_walk_state *WalkState);
#define ACPI_BTYPE_ANY 0x00000000
#define ACPI_BTYPE_INTEGER 0x00000001
#define ACPI_BTYPE_STRING 0x00000002
#define ACPI_BTYPE_BUFFER 0x00000004
#define ACPI_BTYPE_PACKAGE 0x00000008
#define ACPI_BTYPE_FIELD_UNIT 0x00000010
#define ACPI_BTYPE_DEVICE 0x00000020
#define ACPI_BTYPE_EVENT 0x00000040
#define ACPI_BTYPE_METHOD 0x00000080
#define ACPI_BTYPE_MUTEX 0x00000100
#define ACPI_BTYPE_REGION 0x00000200
#define ACPI_BTYPE_POWER 0x00000400
#define ACPI_BTYPE_PROCESSOR 0x00000800
#define ACPI_BTYPE_THERMAL 0x00001000
#define ACPI_BTYPE_BUFFER_FIELD 0x00002000
#define ACPI_BTYPE_DDB_HANDLE 0x00004000
#define ACPI_BTYPE_DEBUG_OBJECT 0x00008000
#define ACPI_BTYPE_REFERENCE_OBJECT 0x00010000
#define ACPI_BTYPE_RESOURCE 0x00020000
#define ACPI_BTYPE_NAMED_REFERENCE 0x00040000
#define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE)
#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE_OBJECT | ACPI_BTYPE_DDB_HANDLE)
#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
#define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF
#define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF
#pragma pack(1)
typedef struct acpi_name_info
{
char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
UINT16 ArgumentList;
UINT8 ExpectedBtypes;
} ACPI_NAME_INFO;
typedef struct acpi_package_info
{
UINT8 Type;
UINT8 ObjectType1;
UINT8 Count1;
UINT8 ObjectType2;
UINT8 Count2;
UINT16 Reserved;
} ACPI_PACKAGE_INFO;
typedef struct acpi_package_info2
{
UINT8 Type;
UINT8 Count;
UINT8 ObjectType[4];
UINT8 Reserved;
} ACPI_PACKAGE_INFO2;
typedef struct acpi_package_info3
{
UINT8 Type;
UINT8 Count;
UINT8 ObjectType[2];
UINT8 TailObjectType;
UINT16 Reserved;
} ACPI_PACKAGE_INFO3;
typedef struct acpi_package_info4
{
UINT8 Type;
UINT8 ObjectType1;
UINT8 Count1;
UINT8 SubObjectTypes;
UINT8 PkgCount;
UINT16 Reserved;
} ACPI_PACKAGE_INFO4;
typedef union acpi_predefined_info
{
ACPI_NAME_INFO Info;
ACPI_PACKAGE_INFO RetInfo;
ACPI_PACKAGE_INFO2 RetInfo2;
ACPI_PACKAGE_INFO3 RetInfo3;
ACPI_PACKAGE_INFO4 RetInfo4;
} ACPI_PREDEFINED_INFO;
#pragma pack()
typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) (
struct acpi_namespace_node *Scope,
union acpi_operand_object *OriginalObject,
union acpi_operand_object **ConvertedObject);
typedef struct acpi_simple_repair_info
{
char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
UINT32 UnexpectedBtypes;
UINT32 PackageIndex;
ACPI_OBJECT_CONVERTER ObjectConverter;
} ACPI_SIMPLE_REPAIR_INFO;
#define ACPI_RTYPE_ANY 0x00
#define ACPI_RTYPE_NONE 0x01
#define ACPI_RTYPE_INTEGER 0x02
#define ACPI_RTYPE_STRING 0x04
#define ACPI_RTYPE_BUFFER 0x08
#define ACPI_RTYPE_PACKAGE 0x10
#define ACPI_RTYPE_REFERENCE 0x20
#define ACPI_RTYPE_ALL 0x3F
#define ACPI_NUM_RTYPES 5
typedef struct acpi_reg_walk_info
{
UINT32 Function;
UINT32 RegRunCount;
ACPI_ADR_SPACE_TYPE SpaceId;
} ACPI_REG_WALK_INFO;
typedef struct acpi_sci_handler_info
{
struct acpi_sci_handler_info *Next;
ACPI_SCI_HANDLER Address;
void *Context;
} ACPI_SCI_HANDLER_INFO;
typedef struct acpi_gpe_handler_info
{
ACPI_GPE_HANDLER Address;
void *Context;
ACPI_NAMESPACE_NODE *MethodNode;
UINT8 OriginalFlags;
BOOLEAN OriginallyEnabled;
} ACPI_GPE_HANDLER_INFO;
typedef struct acpi_gpe_notify_info
{
ACPI_NAMESPACE_NODE *DeviceNode;
struct acpi_gpe_notify_info *Next;
} ACPI_GPE_NOTIFY_INFO;
typedef union acpi_gpe_dispatch_info
{
ACPI_NAMESPACE_NODE *MethodNode;
ACPI_GPE_HANDLER_INFO *Handler;
ACPI_GPE_NOTIFY_INFO *NotifyList;
} ACPI_GPE_DISPATCH_INFO;
typedef struct acpi_gpe_event_info
{
union acpi_gpe_dispatch_info Dispatch;
struct acpi_gpe_register_info *RegisterInfo;
UINT8 Flags;
UINT8 GpeNumber;
UINT8 RuntimeCount;
BOOLEAN DisableForDispatch;
} ACPI_GPE_EVENT_INFO;
typedef struct acpi_gpe_register_info
{
ACPI_GENERIC_ADDRESS StatusAddress;
ACPI_GENERIC_ADDRESS EnableAddress;
UINT16 BaseGpeNumber;
UINT8 EnableForWake;
UINT8 EnableForRun;
UINT8 MaskForRun;
UINT8 EnableMask;
} ACPI_GPE_REGISTER_INFO;
typedef struct acpi_gpe_block_info
{
ACPI_NAMESPACE_NODE *Node;
struct acpi_gpe_block_info *Previous;
struct acpi_gpe_block_info *Next;
struct acpi_gpe_xrupt_info *XruptBlock;
ACPI_GPE_REGISTER_INFO *RegisterInfo;
ACPI_GPE_EVENT_INFO *EventInfo;
UINT64 Address;
UINT32 RegisterCount;
UINT16 GpeCount;
UINT16 BlockBaseNumber;
UINT8 SpaceId;
BOOLEAN Initialized;
} ACPI_GPE_BLOCK_INFO;
typedef struct acpi_gpe_xrupt_info
{
struct acpi_gpe_xrupt_info *Previous;
struct acpi_gpe_xrupt_info *Next;
ACPI_GPE_BLOCK_INFO *GpeBlockListHead;
UINT32 InterruptNumber;
} ACPI_GPE_XRUPT_INFO;
typedef struct acpi_gpe_walk_info
{
ACPI_NAMESPACE_NODE *GpeDevice;
ACPI_GPE_BLOCK_INFO *GpeBlock;
UINT16 Count;
ACPI_OWNER_ID OwnerId;
BOOLEAN ExecuteByOwnerId;
} ACPI_GPE_WALK_INFO;
typedef struct acpi_gpe_device_info
{
UINT32 Index;
UINT32 NextBlockBaseIndex;
ACPI_STATUS Status;
ACPI_NAMESPACE_NODE *GpeDevice;
} ACPI_GPE_DEVICE_INFO;
typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) (
ACPI_GPE_XRUPT_INFO *GpeXruptInfo,
ACPI_GPE_BLOCK_INFO *GpeBlock,
void *Context);
typedef struct acpi_fixed_event_handler
{
ACPI_EVENT_HANDLER Handler;
void *Context;
} ACPI_FIXED_EVENT_HANDLER;
typedef struct acpi_fixed_event_info
{
UINT8 StatusRegisterId;
UINT8 EnableRegisterId;
UINT16 StatusBitMask;
UINT16 EnableBitMask;
} ACPI_FIXED_EVENT_INFO;
typedef struct acpi_field_info
{
UINT8 SkipField;
UINT8 FieldFlag;
UINT32 PkgLength;
} ACPI_FIELD_INFO;
typedef struct acpi_ged_handler_info
{
struct acpi_ged_handler_info *Next;
UINT32 IntId;
ACPI_NAMESPACE_NODE *EvtMethod;
} ACPI_GED_HANDLER_INFO;
#define ACPI_CONTROL_NORMAL 0xC0
#define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1
#define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2
#define ACPI_CONTROL_PREDICATE_FALSE 0xC3
#define ACPI_CONTROL_PREDICATE_TRUE 0xC4
#define ACPI_STATE_COMMON \
void *Next; \
UINT8 DescriptorType; \
UINT8 Flags; \
UINT16 Value; \
UINT16 State
typedef struct acpi_common_state
{
ACPI_STATE_COMMON;
} ACPI_COMMON_STATE;
typedef struct acpi_update_state
{
ACPI_STATE_COMMON;
union acpi_operand_object *Object;
} ACPI_UPDATE_STATE;
typedef struct acpi_pkg_state
{
ACPI_STATE_COMMON;
UINT32 Index;
union acpi_operand_object *SourceObject;
union acpi_operand_object *DestObject;
struct acpi_walk_state *WalkState;
void *ThisTargetObj;
UINT32 NumPackages;
} ACPI_PKG_STATE;
typedef struct acpi_control_state
{
ACPI_STATE_COMMON;
UINT16 Opcode;
union acpi_parse_object *PredicateOp;
UINT8 *AmlPredicateStart;
UINT8 *PackageEnd;
UINT64 LoopTimeout;
} ACPI_CONTROL_STATE;
typedef struct acpi_scope_state
{
ACPI_STATE_COMMON;
ACPI_NAMESPACE_NODE *Node;
} ACPI_SCOPE_STATE;
typedef struct acpi_pscope_state
{
ACPI_STATE_COMMON;
UINT32 ArgCount;
union acpi_parse_object *Op;
UINT8 *ArgEnd;
UINT8 *PkgEnd;
UINT32 ArgList;
} ACPI_PSCOPE_STATE;
typedef struct acpi_thread_state
{
ACPI_STATE_COMMON;
UINT8 CurrentSyncLevel;
struct acpi_walk_state *WalkStateList;
union acpi_operand_object *AcquiredMutexList;
ACPI_THREAD_ID ThreadId;
} ACPI_THREAD_STATE;
typedef struct acpi_result_values
{
ACPI_STATE_COMMON;
union acpi_operand_object *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM];
} ACPI_RESULT_VALUES;
typedef
ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (
struct acpi_walk_state *WalkState,
union acpi_parse_object **OutOp);
typedef
ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
struct acpi_walk_state *WalkState);
typedef struct acpi_global_notify_handler
{
ACPI_NOTIFY_HANDLER Handler;
void *Context;
} ACPI_GLOBAL_NOTIFY_HANDLER;
typedef struct acpi_notify_info
{
ACPI_STATE_COMMON;
UINT8 HandlerListId;
ACPI_NAMESPACE_NODE *Node;
union acpi_operand_object *HandlerListHead;
ACPI_GLOBAL_NOTIFY_HANDLER *Global;
} ACPI_NOTIFY_INFO;
typedef union acpi_generic_state
{
ACPI_COMMON_STATE Common;
ACPI_CONTROL_STATE Control;
ACPI_UPDATE_STATE Update;
ACPI_SCOPE_STATE Scope;
ACPI_PSCOPE_STATE ParseScope;
ACPI_PKG_STATE Pkg;
ACPI_THREAD_STATE Thread;
ACPI_RESULT_VALUES Results;
ACPI_NOTIFY_INFO Notify;
} ACPI_GENERIC_STATE;
typedef
ACPI_STATUS (*ACPI_EXECUTE_OP) (
struct acpi_walk_state *WalkState);
typedef struct acpi_address_range
{
struct acpi_address_range *Next;
ACPI_NAMESPACE_NODE *RegionNode;
ACPI_PHYSICAL_ADDRESS StartAddress;
ACPI_PHYSICAL_ADDRESS EndAddress;
} ACPI_ADDRESS_RANGE;
typedef struct acpi_opcode_info
{
#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
char *Name;
#endif
UINT32 ParseArgs;
UINT32 RuntimeArgs;
UINT16 Flags;
UINT8 ObjectType;
UINT8 Class;
UINT8 Type;
} ACPI_OPCODE_INFO;
typedef struct acpi_tag_info
{
UINT32 BitOffset;
UINT32 BitLength;
} ACPI_TAG_INFO;
typedef union acpi_parse_value
{
UINT64 Integer;
UINT32 Size;
char *String;
UINT8 *Buffer;
char *Name;
union acpi_parse_object *Arg;
ACPI_TAG_INFO Tag;
} ACPI_PARSE_VALUE;
#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
#define ACPI_DISASM_ONLY_MEMBERS(a) a;
#else
#define ACPI_DISASM_ONLY_MEMBERS(a)
#endif
#if defined(ACPI_ASL_COMPILER)
#define ACPI_CONVERTER_ONLY_MEMBERS(a) a;
#else
#define ACPI_CONVERTER_ONLY_MEMBERS(a)
#endif
#define ACPI_PARSE_COMMON \
union acpi_parse_object *Parent; \
UINT8 DescriptorType; \
UINT8 Flags; \
UINT16 AmlOpcode; \
UINT8 *Aml; \
union acpi_parse_object *Next; \
ACPI_NAMESPACE_NODE *Node; \
ACPI_PARSE_VALUE Value; \
UINT8 ArgListLength; \
ACPI_DISASM_ONLY_MEMBERS (\
UINT16 DisasmFlags; \
UINT8 DisasmOpcode; \
char *OperatorSymbol; \
char AmlOpName[16]) \
ACPI_CONVERTER_ONLY_MEMBERS (\
char *InlineComment; \
char *EndNodeComment; \
char *NameComment; \
char *CloseBraceComment; \
ACPI_COMMENT_NODE *CommentList; \
ACPI_COMMENT_NODE *EndBlkComment; \
char *CvFilename; \
char *CvParentFilename)
typedef enum
{
STANDARD_COMMENT = 1,
INLINE_COMMENT,
ENDNODE_COMMENT,
OPENBRACE_COMMENT,
CLOSE_BRACE_COMMENT,
STD_DEFBLK_COMMENT,
END_DEFBLK_COMMENT,
FILENAME_COMMENT,
PARENTFILENAME_COMMENT,
ENDBLK_COMMENT,
INCLUDE_COMMENT
} ASL_COMMENT_TYPES;
#define ACPI_DASM_BUFFER 0x00
#define ACPI_DASM_RESOURCE 0x01
#define ACPI_DASM_STRING 0x02
#define ACPI_DASM_UNICODE 0x03
#define ACPI_DASM_PLD_METHOD 0x04
#define ACPI_DASM_UUID 0x05
#define ACPI_DASM_EISAID 0x06
#define ACPI_DASM_MATCHOP 0x07
#define ACPI_DASM_LNOT_PREFIX 0x08
#define ACPI_DASM_LNOT_SUFFIX 0x09
#define ACPI_DASM_HID_STRING 0x0A
#define ACPI_DASM_IGNORE_SINGLE 0x0B
#define ACPI_DASM_SWITCH 0x0C
#define ACPI_DASM_SWITCH_PREDICATE 0x0D
#define ACPI_DASM_CASE 0x0E
#define ACPI_DASM_DEFAULT 0x0F
typedef struct acpi_comment_node
{
char *Comment;
struct acpi_comment_node *Next;
} ACPI_COMMENT_NODE;
typedef struct acpi_comment_addr_node
{
UINT8 *Addr;
struct acpi_comment_addr_node *Next;
} ACPI_COMMENT_ADDR_NODE;
typedef struct acpi_file_node
{
void *File;
char *Filename;
char *FileStart;
char *FileEnd;
struct acpi_file_node *Next;
struct acpi_file_node *Parent;
BOOLEAN IncludeWritten;
ACPI_COMMENT_NODE *IncludeComment;
} ACPI_FILE_NODE;
typedef struct acpi_parse_obj_common
{
ACPI_PARSE_COMMON
} ACPI_PARSE_OBJ_COMMON;
typedef struct acpi_parse_obj_named
{
ACPI_PARSE_COMMON
char *Path;
UINT8 *Data;
UINT32 Length;
UINT32 Name;
} ACPI_PARSE_OBJ_NAMED;
#define ACPI_MAX_PARSEOP_NAME 20
typedef struct acpi_parse_obj_asl
{
ACPI_PARSE_COMMON
union acpi_parse_object *Child;
union acpi_parse_object *ParentMethod;
char *Filename;
BOOLEAN FileChanged;
char *ParentFilename;
char *ExternalName;
char *Namepath;
char NameSeg[4];
UINT32 ExtraValue;
UINT32 Column;
UINT32 LineNumber;
UINT32 LogicalLineNumber;
UINT32 LogicalByteOffset;
UINT32 EndLine;
UINT32 EndLogicalLine;
UINT32 AcpiBtype;
UINT32 AmlLength;
UINT32 AmlSubtreeLength;
UINT32 FinalAmlLength;
UINT32 FinalAmlOffset;
UINT32 CompileFlags;
UINT16 ParseOpcode;
UINT8 AmlOpcodeLength;
UINT8 AmlPkgLenBytes;
UINT8 Extra;
char ParseOpName[ACPI_MAX_PARSEOP_NAME];
} ACPI_PARSE_OBJ_ASL;
typedef union acpi_parse_object
{
ACPI_PARSE_OBJ_COMMON Common;
ACPI_PARSE_OBJ_NAMED Named;
ACPI_PARSE_OBJ_ASL Asl;
} ACPI_PARSE_OBJECT;
typedef struct asl_comment_state
{
UINT8 CommentType;
UINT32 SpacesBefore;
ACPI_PARSE_OBJECT *LatestParseOp;
ACPI_PARSE_OBJECT *ParsingParenBraceNode;
BOOLEAN CaptureComments;
} ASL_COMMENT_STATE;
typedef struct acpi_parse_state
{
UINT8 *AmlStart;
UINT8 *Aml;
UINT8 *AmlEnd;
UINT8 *PkgStart;
UINT8 *PkgEnd;
union acpi_parse_object *StartOp;
struct acpi_namespace_node *StartNode;
union acpi_generic_state *Scope;
union acpi_parse_object *StartScope;
UINT32 AmlSize;
} ACPI_PARSE_STATE;
#define ACPI_PARSEOP_GENERIC 0x01
#define ACPI_PARSEOP_NAMED_OBJECT 0x02
#define ACPI_PARSEOP_DEFERRED 0x04
#define ACPI_PARSEOP_BYTELIST 0x08
#define ACPI_PARSEOP_IN_STACK 0x10
#define ACPI_PARSEOP_TARGET 0x20
#define ACPI_PARSEOP_IN_CACHE 0x80
#define ACPI_PARSEOP_IGNORE 0x0001
#define ACPI_PARSEOP_PARAMETER_LIST 0x0002
#define ACPI_PARSEOP_EMPTY_TERMLIST 0x0004
#define ACPI_PARSEOP_PREDEFINED_CHECKED 0x0008
#define ACPI_PARSEOP_CLOSING_PAREN 0x0010
#define ACPI_PARSEOP_COMPOUND_ASSIGNMENT 0x0020
#define ACPI_PARSEOP_ASSIGNMENT 0x0040
#define ACPI_PARSEOP_ELSEIF 0x0080
#define ACPI_PARSEOP_LEGACY_ASL_ONLY 0x0100
typedef struct acpi_bit_register_info
{
UINT8 ParentRegister;
UINT8 BitPosition;
UINT16 AccessBitMask;
} ACPI_BIT_REGISTER_INFO;
#define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800
#define ACPI_PM1_CONTROL_WRITEONLY_BITS 0x2004
#define ACPI_PM1_CONTROL_IGNORED_BITS 0x0200
#define ACPI_PM1_CONTROL_RESERVED_BITS 0xC1F8
#define ACPI_PM1_CONTROL_PRESERVED_BITS \
(ACPI_PM1_CONTROL_IGNORED_BITS | ACPI_PM1_CONTROL_RESERVED_BITS)
#define ACPI_PM2_CONTROL_PRESERVED_BITS 0xFFFFFFFE
#define ACPI_REGISTER_PM1_STATUS 0x01
#define ACPI_REGISTER_PM1_ENABLE 0x02
#define ACPI_REGISTER_PM1_CONTROL 0x03
#define ACPI_REGISTER_PM2_CONTROL 0x04
#define ACPI_REGISTER_PM_TIMER 0x05
#define ACPI_REGISTER_PROCESSOR_BLOCK 0x06
#define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x07
#define ACPI_BITMASK_TIMER_STATUS 0x0001
#define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010
#define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020
#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100
#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200
#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400
#define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000
#define ACPI_BITMASK_WAKE_STATUS 0x8000
#define ACPI_BITMASK_ALL_FIXED_STATUS (\
ACPI_BITMASK_TIMER_STATUS | \
ACPI_BITMASK_BUS_MASTER_STATUS | \
ACPI_BITMASK_GLOBAL_LOCK_STATUS | \
ACPI_BITMASK_POWER_BUTTON_STATUS | \
ACPI_BITMASK_SLEEP_BUTTON_STATUS | \
ACPI_BITMASK_RT_CLOCK_STATUS | \
ACPI_BITMASK_PCIEXP_WAKE_STATUS | \
ACPI_BITMASK_WAKE_STATUS)
#define ACPI_BITMASK_TIMER_ENABLE 0x0001
#define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020
#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100
#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200
#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400
#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000
#define ACPI_BITMASK_SCI_ENABLE 0x0001
#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002
#define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004
#define ACPI_BITMASK_SLEEP_TYPE 0x1C00
#define ACPI_BITMASK_SLEEP_ENABLE 0x2000
#define ACPI_BITMASK_ARB_DISABLE 0x0001
#define ACPI_BITPOSITION_TIMER_STATUS 0x00
#define ACPI_BITPOSITION_BUS_MASTER_STATUS 0x04
#define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS 0x05
#define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08
#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09
#define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A
#define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E
#define ACPI_BITPOSITION_WAKE_STATUS 0x0F
#define ACPI_BITPOSITION_TIMER_ENABLE 0x00
#define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE 0x05
#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08
#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09
#define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A
#define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E
#define ACPI_BITPOSITION_SCI_ENABLE 0x00
#define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01
#define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE 0x02
#define ACPI_BITPOSITION_SLEEP_TYPE 0x0A
#define ACPI_BITPOSITION_SLEEP_ENABLE 0x0D
#define ACPI_BITPOSITION_ARB_DISABLE 0x00
#define ACPI_ALWAYS_ILLEGAL 0x00
typedef struct acpi_interface_info
{
char *Name;
struct acpi_interface_info *Next;
UINT8 Flags;
UINT8 Value;
} ACPI_INTERFACE_INFO;
#define ACPI_OSI_INVALID 0x01
#define ACPI_OSI_DYNAMIC 0x02
#define ACPI_OSI_FEATURE 0x04
#define ACPI_OSI_DEFAULT_INVALID 0x08
#define ACPI_OSI_OPTIONAL_FEATURE (ACPI_OSI_FEATURE | ACPI_OSI_DEFAULT_INVALID | ACPI_OSI_INVALID)
typedef struct acpi_port_info
{
char *Name;
UINT16 Start;
UINT16 End;
UINT8 OsiDependency;
} ACPI_PORT_INFO;
#define ACPI_ADDRESS_TYPE_MEMORY_RANGE 0
#define ACPI_ADDRESS_TYPE_IO_RANGE 1
#define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2
#define ACPI_ADDRESS_TYPE_PCC_NUMBER 0xA
#define ACPI_RESOURCE_NAME_LARGE 0x80
#define ACPI_RESOURCE_NAME_SMALL 0x00
#define ACPI_RESOURCE_NAME_SMALL_MASK 0x78
#define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK 0x07
#define ACPI_RESOURCE_NAME_LARGE_MASK 0x7F
#define ACPI_RESOURCE_NAME_IRQ 0x20
#define ACPI_RESOURCE_NAME_DMA 0x28
#define ACPI_RESOURCE_NAME_START_DEPENDENT 0x30
#define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38
#define ACPI_RESOURCE_NAME_IO 0x40
#define ACPI_RESOURCE_NAME_FIXED_IO 0x48
#define ACPI_RESOURCE_NAME_FIXED_DMA 0x50
#define ACPI_RESOURCE_NAME_RESERVED_S2 0x58
#define ACPI_RESOURCE_NAME_RESERVED_S3 0x60
#define ACPI_RESOURCE_NAME_RESERVED_S4 0x68
#define ACPI_RESOURCE_NAME_VENDOR_SMALL 0x70
#define ACPI_RESOURCE_NAME_END_TAG 0x78
#define ACPI_RESOURCE_NAME_MEMORY24 0x81
#define ACPI_RESOURCE_NAME_GENERIC_REGISTER 0x82
#define ACPI_RESOURCE_NAME_RESERVED_L1 0x83
#define ACPI_RESOURCE_NAME_VENDOR_LARGE 0x84
#define ACPI_RESOURCE_NAME_MEMORY32 0x85
#define ACPI_RESOURCE_NAME_FIXED_MEMORY32 0x86
#define ACPI_RESOURCE_NAME_ADDRESS32 0x87
#define ACPI_RESOURCE_NAME_ADDRESS16 0x88
#define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89
#define ACPI_RESOURCE_NAME_ADDRESS64 0x8A
#define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B
#define ACPI_RESOURCE_NAME_GPIO 0x8C
#define ACPI_RESOURCE_NAME_PIN_FUNCTION 0x8D
#define ACPI_RESOURCE_NAME_SERIAL_BUS 0x8E
#define ACPI_RESOURCE_NAME_PIN_CONFIG 0x8F
#define ACPI_RESOURCE_NAME_PIN_GROUP 0x90
#define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION 0x91
#define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG 0x92
#define ACPI_RESOURCE_NAME_CLOCK_INPUT 0x93
#define ACPI_RESOURCE_NAME_LARGE_MAX 0x94
#define ACPI_ASCII_ZERO 0x30
typedef struct acpi_external_list
{
char *Path;
char *InternalPath;
struct acpi_external_list *Next;
UINT32 Value;
UINT16 Length;
UINT16 Flags;
UINT8 Type;
} ACPI_EXTERNAL_LIST;
#define ACPI_EXT_RESOLVED_REFERENCE 0x01
#define ACPI_EXT_ORIGIN_FROM_FILE 0x02
#define ACPI_EXT_INTERNAL_PATH_ALLOCATED 0x04
#define ACPI_EXT_EXTERNAL_EMITTED 0x08
#define ACPI_EXT_ORIGIN_FROM_OPCODE 0x10
#define ACPI_EXT_CONFLICTING_DECLARATION 0x20
typedef struct acpi_external_file
{
char *Path;
struct acpi_external_file *Next;
} ACPI_EXTERNAL_FILE;
typedef struct acpi_parse_object_list
{
ACPI_PARSE_OBJECT *Op;
struct acpi_parse_object_list *Next;
} ACPI_PARSE_OBJECT_LIST;
typedef struct acpi_db_method_info
{
ACPI_HANDLE Method;
ACPI_HANDLE MainThreadGate;
ACPI_HANDLE ThreadCompleteGate;
ACPI_HANDLE InfoGate;
ACPI_THREAD_ID *Threads;
UINT32 NumThreads;
UINT32 NumCreated;
UINT32 NumCompleted;
char *Name;
UINT32 Flags;
UINT32 NumLoops;
char Pathname[ACPI_DB_LINE_BUFFER_SIZE];
char **Args;
ACPI_OBJECT_TYPE *Types;
char InitArgs;
#ifdef ACPI_DEBUGGER
ACPI_OBJECT_TYPE ArgTypes[ACPI_METHOD_NUM_ARGS];
#endif
char *Arguments[ACPI_METHOD_NUM_ARGS];
char NumThreadsStr[11];
char IdOfThreadStr[11];
char IndexOfThreadStr[11];
} ACPI_DB_METHOD_INFO;
typedef struct acpi_integrity_info
{
UINT32 Nodes;
UINT32 Objects;
} ACPI_INTEGRITY_INFO;
#define ACPI_DB_DISABLE_OUTPUT 0x00
#define ACPI_DB_REDIRECTABLE_OUTPUT 0x01
#define ACPI_DB_CONSOLE_OUTPUT 0x02
#define ACPI_DB_DUPLICATE_OUTPUT 0x03
typedef struct acpi_object_info
{
UINT32 Types[ACPI_TOTAL_TYPES];
} ACPI_OBJECT_INFO;
#define ACPI_MEM_MALLOC 0
#define ACPI_MEM_CALLOC 1
#define ACPI_MAX_MODULE_NAME 16
#define ACPI_COMMON_DEBUG_MEM_HEADER \
struct acpi_debug_mem_block *Previous; \
struct acpi_debug_mem_block *Next; \
UINT32 Size; \
UINT32 Component; \
UINT32 Line; \
char Module[ACPI_MAX_MODULE_NAME]; \
UINT8 AllocType;
typedef struct acpi_debug_mem_header
{
ACPI_COMMON_DEBUG_MEM_HEADER
} ACPI_DEBUG_MEM_HEADER;
typedef struct acpi_debug_mem_block
{
ACPI_COMMON_DEBUG_MEM_HEADER
UINT64 UserSpace;
} ACPI_DEBUG_MEM_BLOCK;
#define ACPI_MEM_LIST_GLOBAL 0
#define ACPI_MEM_LIST_NSNODE 1
#define ACPI_MEM_LIST_MAX 1
#define ACPI_NUM_MEM_LISTS 2
typedef struct ah_predefined_name
{
char *Name;
char *Description;
#ifndef ACPI_ASL_COMPILER
char *Action;
#endif
} AH_PREDEFINED_NAME;
typedef struct ah_device_id
{
char *Name;
char *Description;
} AH_DEVICE_ID;
typedef struct ah_uuid
{
char *Description;
char *String;
} AH_UUID;
typedef struct ah_table
{
char *Signature;
char *Description;
} AH_TABLE;
#endif