1433d6423SLionel Sambuc /****************************************************************************** 2433d6423SLionel Sambuc * 3433d6423SLionel Sambuc * Name: acinterp.h - Interpreter subcomponent prototypes and defines 4433d6423SLionel Sambuc * 5433d6423SLionel Sambuc *****************************************************************************/ 6433d6423SLionel Sambuc 7*29492bb7SDavid van Moolenbroek /* 8*29492bb7SDavid van Moolenbroek * Copyright (C) 2000 - 2014, Intel Corp. 9433d6423SLionel Sambuc * All rights reserved. 10433d6423SLionel Sambuc * 11*29492bb7SDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 12*29492bb7SDavid van Moolenbroek * modification, are permitted provided that the following conditions 13*29492bb7SDavid van Moolenbroek * are met: 14*29492bb7SDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 15*29492bb7SDavid van Moolenbroek * notice, this list of conditions, and the following disclaimer, 16*29492bb7SDavid van Moolenbroek * without modification. 17*29492bb7SDavid van Moolenbroek * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*29492bb7SDavid van Moolenbroek * substantially similar to the "NO WARRANTY" disclaimer below 19*29492bb7SDavid van Moolenbroek * ("Disclaimer") and any redistribution must be conditioned upon 20*29492bb7SDavid van Moolenbroek * including a substantially similar Disclaimer requirement for further 21*29492bb7SDavid van Moolenbroek * binary redistribution. 22*29492bb7SDavid van Moolenbroek * 3. Neither the names of the above-listed copyright holders nor the names 23*29492bb7SDavid van Moolenbroek * of any contributors may be used to endorse or promote products derived 24*29492bb7SDavid van Moolenbroek * from this software without specific prior written permission. 25433d6423SLionel Sambuc * 26*29492bb7SDavid van Moolenbroek * Alternatively, this software may be distributed under the terms of the 27*29492bb7SDavid van Moolenbroek * GNU General Public License ("GPL") version 2 as published by the Free 28*29492bb7SDavid van Moolenbroek * Software Foundation. 29433d6423SLionel Sambuc * 30*29492bb7SDavid van Moolenbroek * NO WARRANTY 31*29492bb7SDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*29492bb7SDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*29492bb7SDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*29492bb7SDavid van Moolenbroek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*29492bb7SDavid van Moolenbroek * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*29492bb7SDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*29492bb7SDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*29492bb7SDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*29492bb7SDavid van Moolenbroek * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*29492bb7SDavid van Moolenbroek * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*29492bb7SDavid van Moolenbroek * POSSIBILITY OF SUCH DAMAGES. 42*29492bb7SDavid van Moolenbroek */ 43433d6423SLionel Sambuc 44433d6423SLionel Sambuc #ifndef __ACINTERP_H__ 45433d6423SLionel Sambuc #define __ACINTERP_H__ 46433d6423SLionel Sambuc 47433d6423SLionel Sambuc 48433d6423SLionel Sambuc #define ACPI_WALK_OPERANDS (&(WalkState->Operands [WalkState->NumOperands -1])) 49433d6423SLionel Sambuc 50433d6423SLionel Sambuc /* Macros for tables used for debug output */ 51433d6423SLionel Sambuc 52433d6423SLionel Sambuc #define ACPI_EXD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f) 53433d6423SLionel Sambuc #define ACPI_EXD_NSOFFSET(f) (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f) 54433d6423SLionel Sambuc #define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (ACPI_EXDUMP_INFO)) 55433d6423SLionel Sambuc 56433d6423SLionel Sambuc /* 57433d6423SLionel Sambuc * If possible, pack the following structures to byte alignment, since we 58433d6423SLionel Sambuc * don't care about performance for debug output. Two cases where we cannot 59433d6423SLionel Sambuc * pack the structures: 60433d6423SLionel Sambuc * 61433d6423SLionel Sambuc * 1) Hardware does not support misaligned memory transfers 62433d6423SLionel Sambuc * 2) Compiler does not support pointers within packed structures 63433d6423SLionel Sambuc */ 64433d6423SLionel Sambuc #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) 65433d6423SLionel Sambuc #pragma pack(1) 66433d6423SLionel Sambuc #endif 67433d6423SLionel Sambuc 68433d6423SLionel Sambuc typedef const struct acpi_exdump_info 69433d6423SLionel Sambuc { 70433d6423SLionel Sambuc UINT8 Opcode; 71433d6423SLionel Sambuc UINT8 Offset; 72433d6423SLionel Sambuc char *Name; 73433d6423SLionel Sambuc 74433d6423SLionel Sambuc } ACPI_EXDUMP_INFO; 75433d6423SLionel Sambuc 76433d6423SLionel Sambuc /* Values for the Opcode field above */ 77433d6423SLionel Sambuc 78433d6423SLionel Sambuc #define ACPI_EXD_INIT 0 79433d6423SLionel Sambuc #define ACPI_EXD_TYPE 1 80433d6423SLionel Sambuc #define ACPI_EXD_UINT8 2 81433d6423SLionel Sambuc #define ACPI_EXD_UINT16 3 82433d6423SLionel Sambuc #define ACPI_EXD_UINT32 4 83433d6423SLionel Sambuc #define ACPI_EXD_UINT64 5 84433d6423SLionel Sambuc #define ACPI_EXD_LITERAL 6 85433d6423SLionel Sambuc #define ACPI_EXD_POINTER 7 86433d6423SLionel Sambuc #define ACPI_EXD_ADDRESS 8 87433d6423SLionel Sambuc #define ACPI_EXD_STRING 9 88433d6423SLionel Sambuc #define ACPI_EXD_BUFFER 10 89433d6423SLionel Sambuc #define ACPI_EXD_PACKAGE 11 90433d6423SLionel Sambuc #define ACPI_EXD_FIELD 12 91433d6423SLionel Sambuc #define ACPI_EXD_REFERENCE 13 92*29492bb7SDavid van Moolenbroek #define ACPI_EXD_LIST 14 /* Operand object list */ 93*29492bb7SDavid van Moolenbroek #define ACPI_EXD_HDLR_LIST 15 /* Address Handler list */ 94*29492bb7SDavid van Moolenbroek #define ACPI_EXD_RGN_LIST 16 /* Region list */ 95*29492bb7SDavid van Moolenbroek #define ACPI_EXD_NODE 17 /* Namespace Node */ 96433d6423SLionel Sambuc 97433d6423SLionel Sambuc /* restore default alignment */ 98433d6423SLionel Sambuc 99433d6423SLionel Sambuc #pragma pack() 100433d6423SLionel Sambuc 101433d6423SLionel Sambuc 102433d6423SLionel Sambuc /* 103433d6423SLionel Sambuc * exconvrt - object conversion 104433d6423SLionel Sambuc */ 105433d6423SLionel Sambuc ACPI_STATUS 106433d6423SLionel Sambuc AcpiExConvertToInteger ( 107433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 108433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ResultDesc, 109433d6423SLionel Sambuc UINT32 Flags); 110433d6423SLionel Sambuc 111433d6423SLionel Sambuc ACPI_STATUS 112433d6423SLionel Sambuc AcpiExConvertToBuffer ( 113433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 114433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ResultDesc); 115433d6423SLionel Sambuc 116433d6423SLionel Sambuc ACPI_STATUS 117433d6423SLionel Sambuc AcpiExConvertToString ( 118433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 119433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ResultDesc, 120433d6423SLionel Sambuc UINT32 Type); 121433d6423SLionel Sambuc 122433d6423SLionel Sambuc /* Types for ->String conversion */ 123433d6423SLionel Sambuc 124433d6423SLionel Sambuc #define ACPI_EXPLICIT_BYTE_COPY 0x00000000 125433d6423SLionel Sambuc #define ACPI_EXPLICIT_CONVERT_HEX 0x00000001 126433d6423SLionel Sambuc #define ACPI_IMPLICIT_CONVERT_HEX 0x00000002 127433d6423SLionel Sambuc #define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003 128433d6423SLionel Sambuc 129433d6423SLionel Sambuc ACPI_STATUS 130433d6423SLionel Sambuc AcpiExConvertToTargetType ( 131433d6423SLionel Sambuc ACPI_OBJECT_TYPE DestinationType, 132433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 133433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ResultDesc, 134433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 135433d6423SLionel Sambuc 136433d6423SLionel Sambuc 137433d6423SLionel Sambuc /* 138433d6423SLionel Sambuc * exdebug - AML debug object 139433d6423SLionel Sambuc */ 140433d6423SLionel Sambuc void 141433d6423SLionel Sambuc AcpiExDoDebugObject ( 142433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 143433d6423SLionel Sambuc UINT32 Level, 144433d6423SLionel Sambuc UINT32 Index); 145433d6423SLionel Sambuc 146433d6423SLionel Sambuc 147433d6423SLionel Sambuc /* 148433d6423SLionel Sambuc * exfield - ACPI AML (p-code) execution - field manipulation 149433d6423SLionel Sambuc */ 150433d6423SLionel Sambuc ACPI_STATUS 151433d6423SLionel Sambuc AcpiExCommonBufferSetup ( 152433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 153433d6423SLionel Sambuc UINT32 BufferLength, 154433d6423SLionel Sambuc UINT32 *DatumCount); 155433d6423SLionel Sambuc 156433d6423SLionel Sambuc ACPI_STATUS 157433d6423SLionel Sambuc AcpiExWriteWithUpdateRule ( 158433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 159433d6423SLionel Sambuc UINT64 Mask, 160433d6423SLionel Sambuc UINT64 FieldValue, 161433d6423SLionel Sambuc UINT32 FieldDatumByteOffset); 162433d6423SLionel Sambuc 163433d6423SLionel Sambuc void 164433d6423SLionel Sambuc AcpiExGetBufferDatum( 165433d6423SLionel Sambuc UINT64 *Datum, 166433d6423SLionel Sambuc void *Buffer, 167433d6423SLionel Sambuc UINT32 BufferLength, 168433d6423SLionel Sambuc UINT32 ByteGranularity, 169433d6423SLionel Sambuc UINT32 BufferOffset); 170433d6423SLionel Sambuc 171433d6423SLionel Sambuc void 172433d6423SLionel Sambuc AcpiExSetBufferDatum ( 173433d6423SLionel Sambuc UINT64 MergedDatum, 174433d6423SLionel Sambuc void *Buffer, 175433d6423SLionel Sambuc UINT32 BufferLength, 176433d6423SLionel Sambuc UINT32 ByteGranularity, 177433d6423SLionel Sambuc UINT32 BufferOffset); 178433d6423SLionel Sambuc 179433d6423SLionel Sambuc ACPI_STATUS 180433d6423SLionel Sambuc AcpiExReadDataFromField ( 181433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState, 182433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 183433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **RetBufferDesc); 184433d6423SLionel Sambuc 185433d6423SLionel Sambuc ACPI_STATUS 186433d6423SLionel Sambuc AcpiExWriteDataToField ( 187433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 188433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 189433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ResultDesc); 190433d6423SLionel Sambuc 191433d6423SLionel Sambuc 192433d6423SLionel Sambuc /* 193433d6423SLionel Sambuc * exfldio - low level field I/O 194433d6423SLionel Sambuc */ 195433d6423SLionel Sambuc ACPI_STATUS 196433d6423SLionel Sambuc AcpiExExtractFromField ( 197433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 198433d6423SLionel Sambuc void *Buffer, 199433d6423SLionel Sambuc UINT32 BufferLength); 200433d6423SLionel Sambuc 201433d6423SLionel Sambuc ACPI_STATUS 202433d6423SLionel Sambuc AcpiExInsertIntoField ( 203433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 204433d6423SLionel Sambuc void *Buffer, 205433d6423SLionel Sambuc UINT32 BufferLength); 206433d6423SLionel Sambuc 207433d6423SLionel Sambuc ACPI_STATUS 208433d6423SLionel Sambuc AcpiExAccessRegion ( 209433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 210433d6423SLionel Sambuc UINT32 FieldDatumByteOffset, 211433d6423SLionel Sambuc UINT64 *Value, 212433d6423SLionel Sambuc UINT32 ReadWrite); 213433d6423SLionel Sambuc 214433d6423SLionel Sambuc 215433d6423SLionel Sambuc /* 216433d6423SLionel Sambuc * exmisc - misc support routines 217433d6423SLionel Sambuc */ 218433d6423SLionel Sambuc ACPI_STATUS 219433d6423SLionel Sambuc AcpiExGetObjectReference ( 220433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 221433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ReturnDesc, 222433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 223433d6423SLionel Sambuc 224433d6423SLionel Sambuc ACPI_STATUS 225433d6423SLionel Sambuc AcpiExConcatTemplate ( 226433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 227433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc2, 228433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ActualReturnDesc, 229433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 230433d6423SLionel Sambuc 231433d6423SLionel Sambuc ACPI_STATUS 232433d6423SLionel Sambuc AcpiExDoConcatenate ( 233433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 234433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc2, 235433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ActualReturnDesc, 236433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 237433d6423SLionel Sambuc 238433d6423SLionel Sambuc ACPI_STATUS 239433d6423SLionel Sambuc AcpiExDoLogicalNumericOp ( 240433d6423SLionel Sambuc UINT16 Opcode, 241433d6423SLionel Sambuc UINT64 Integer0, 242433d6423SLionel Sambuc UINT64 Integer1, 243433d6423SLionel Sambuc BOOLEAN *LogicalResult); 244433d6423SLionel Sambuc 245433d6423SLionel Sambuc ACPI_STATUS 246433d6423SLionel Sambuc AcpiExDoLogicalOp ( 247433d6423SLionel Sambuc UINT16 Opcode, 248433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Operand0, 249433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Operand1, 250433d6423SLionel Sambuc BOOLEAN *LogicalResult); 251433d6423SLionel Sambuc 252433d6423SLionel Sambuc UINT64 253433d6423SLionel Sambuc AcpiExDoMathOp ( 254433d6423SLionel Sambuc UINT16 Opcode, 255433d6423SLionel Sambuc UINT64 Operand0, 256433d6423SLionel Sambuc UINT64 Operand1); 257433d6423SLionel Sambuc 258433d6423SLionel Sambuc ACPI_STATUS 259433d6423SLionel Sambuc AcpiExCreateMutex ( 260433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 261433d6423SLionel Sambuc 262433d6423SLionel Sambuc ACPI_STATUS 263433d6423SLionel Sambuc AcpiExCreateProcessor ( 264433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 265433d6423SLionel Sambuc 266433d6423SLionel Sambuc ACPI_STATUS 267433d6423SLionel Sambuc AcpiExCreatePowerResource ( 268433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 269433d6423SLionel Sambuc 270433d6423SLionel Sambuc ACPI_STATUS 271433d6423SLionel Sambuc AcpiExCreateRegion ( 272433d6423SLionel Sambuc UINT8 *AmlStart, 273433d6423SLionel Sambuc UINT32 AmlLength, 274433d6423SLionel Sambuc UINT8 RegionSpace, 275433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 276433d6423SLionel Sambuc 277433d6423SLionel Sambuc ACPI_STATUS 278433d6423SLionel Sambuc AcpiExCreateEvent ( 279433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 280433d6423SLionel Sambuc 281433d6423SLionel Sambuc ACPI_STATUS 282433d6423SLionel Sambuc AcpiExCreateAlias ( 283433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 284433d6423SLionel Sambuc 285433d6423SLionel Sambuc ACPI_STATUS 286433d6423SLionel Sambuc AcpiExCreateMethod ( 287433d6423SLionel Sambuc UINT8 *AmlStart, 288433d6423SLionel Sambuc UINT32 AmlLength, 289433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 290433d6423SLionel Sambuc 291433d6423SLionel Sambuc 292433d6423SLionel Sambuc /* 293433d6423SLionel Sambuc * exconfig - dynamic table load/unload 294433d6423SLionel Sambuc */ 295433d6423SLionel Sambuc ACPI_STATUS 296433d6423SLionel Sambuc AcpiExLoadOp ( 297433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 298433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Target, 299433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 300433d6423SLionel Sambuc 301433d6423SLionel Sambuc ACPI_STATUS 302433d6423SLionel Sambuc AcpiExLoadTableOp ( 303433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState, 304433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ReturnDesc); 305433d6423SLionel Sambuc 306433d6423SLionel Sambuc ACPI_STATUS 307433d6423SLionel Sambuc AcpiExUnloadTable ( 308433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *DdbHandle); 309433d6423SLionel Sambuc 310433d6423SLionel Sambuc 311433d6423SLionel Sambuc /* 312433d6423SLionel Sambuc * exmutex - mutex support 313433d6423SLionel Sambuc */ 314433d6423SLionel Sambuc ACPI_STATUS 315433d6423SLionel Sambuc AcpiExAcquireMutex ( 316433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *TimeDesc, 317433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 318433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 319433d6423SLionel Sambuc 320433d6423SLionel Sambuc ACPI_STATUS 321433d6423SLionel Sambuc AcpiExAcquireMutexObject ( 322433d6423SLionel Sambuc UINT16 Timeout, 323433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 324433d6423SLionel Sambuc ACPI_THREAD_ID ThreadId); 325433d6423SLionel Sambuc 326433d6423SLionel Sambuc ACPI_STATUS 327433d6423SLionel Sambuc AcpiExReleaseMutex ( 328433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 329433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 330433d6423SLionel Sambuc 331433d6423SLionel Sambuc ACPI_STATUS 332433d6423SLionel Sambuc AcpiExReleaseMutexObject ( 333433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 334433d6423SLionel Sambuc 335433d6423SLionel Sambuc void 336433d6423SLionel Sambuc AcpiExReleaseAllMutexes ( 337433d6423SLionel Sambuc ACPI_THREAD_STATE *Thread); 338433d6423SLionel Sambuc 339433d6423SLionel Sambuc void 340433d6423SLionel Sambuc AcpiExUnlinkMutex ( 341433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 342433d6423SLionel Sambuc 343433d6423SLionel Sambuc 344433d6423SLionel Sambuc /* 345433d6423SLionel Sambuc * exprep - ACPI AML execution - prep utilities 346433d6423SLionel Sambuc */ 347433d6423SLionel Sambuc ACPI_STATUS 348433d6423SLionel Sambuc AcpiExPrepCommonFieldObject ( 349433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 350433d6423SLionel Sambuc UINT8 FieldFlags, 351433d6423SLionel Sambuc UINT8 FieldAttribute, 352433d6423SLionel Sambuc UINT32 FieldBitPosition, 353433d6423SLionel Sambuc UINT32 FieldBitLength); 354433d6423SLionel Sambuc 355433d6423SLionel Sambuc ACPI_STATUS 356433d6423SLionel Sambuc AcpiExPrepFieldValue ( 357433d6423SLionel Sambuc ACPI_CREATE_FIELD_INFO *Info); 358433d6423SLionel Sambuc 359433d6423SLionel Sambuc 360433d6423SLionel Sambuc /* 361433d6423SLionel Sambuc * exsystem - Interface to OS services 362433d6423SLionel Sambuc */ 363433d6423SLionel Sambuc ACPI_STATUS 364433d6423SLionel Sambuc AcpiExSystemDoNotifyOp ( 365433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Value, 366433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 367433d6423SLionel Sambuc 368433d6423SLionel Sambuc ACPI_STATUS 369433d6423SLionel Sambuc AcpiExSystemDoSleep( 370433d6423SLionel Sambuc UINT64 Time); 371433d6423SLionel Sambuc 372433d6423SLionel Sambuc ACPI_STATUS 373433d6423SLionel Sambuc AcpiExSystemDoStall ( 374433d6423SLionel Sambuc UINT32 Time); 375433d6423SLionel Sambuc 376433d6423SLionel Sambuc ACPI_STATUS 377433d6423SLionel Sambuc AcpiExSystemSignalEvent( 378433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 379433d6423SLionel Sambuc 380433d6423SLionel Sambuc ACPI_STATUS 381433d6423SLionel Sambuc AcpiExSystemWaitEvent( 382433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Time, 383433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 384433d6423SLionel Sambuc 385433d6423SLionel Sambuc ACPI_STATUS 386433d6423SLionel Sambuc AcpiExSystemResetEvent( 387433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 388433d6423SLionel Sambuc 389433d6423SLionel Sambuc ACPI_STATUS 390433d6423SLionel Sambuc AcpiExSystemWaitSemaphore ( 391433d6423SLionel Sambuc ACPI_SEMAPHORE Semaphore, 392433d6423SLionel Sambuc UINT16 Timeout); 393433d6423SLionel Sambuc 394433d6423SLionel Sambuc ACPI_STATUS 395433d6423SLionel Sambuc AcpiExSystemWaitMutex ( 396433d6423SLionel Sambuc ACPI_MUTEX Mutex, 397433d6423SLionel Sambuc UINT16 Timeout); 398433d6423SLionel Sambuc 399433d6423SLionel Sambuc /* 400433d6423SLionel Sambuc * exoparg1 - ACPI AML execution, 1 operand 401433d6423SLionel Sambuc */ 402433d6423SLionel Sambuc ACPI_STATUS 403433d6423SLionel Sambuc AcpiExOpcode_0A_0T_1R ( 404433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 405433d6423SLionel Sambuc 406433d6423SLionel Sambuc ACPI_STATUS 407433d6423SLionel Sambuc AcpiExOpcode_1A_0T_0R ( 408433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 409433d6423SLionel Sambuc 410433d6423SLionel Sambuc ACPI_STATUS 411433d6423SLionel Sambuc AcpiExOpcode_1A_0T_1R ( 412433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 413433d6423SLionel Sambuc 414433d6423SLionel Sambuc ACPI_STATUS 415433d6423SLionel Sambuc AcpiExOpcode_1A_1T_1R ( 416433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 417433d6423SLionel Sambuc 418433d6423SLionel Sambuc ACPI_STATUS 419433d6423SLionel Sambuc AcpiExOpcode_1A_1T_0R ( 420433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 421433d6423SLionel Sambuc 422433d6423SLionel Sambuc /* 423433d6423SLionel Sambuc * exoparg2 - ACPI AML execution, 2 operands 424433d6423SLionel Sambuc */ 425433d6423SLionel Sambuc ACPI_STATUS 426433d6423SLionel Sambuc AcpiExOpcode_2A_0T_0R ( 427433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 428433d6423SLionel Sambuc 429433d6423SLionel Sambuc ACPI_STATUS 430433d6423SLionel Sambuc AcpiExOpcode_2A_0T_1R ( 431433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 432433d6423SLionel Sambuc 433433d6423SLionel Sambuc ACPI_STATUS 434433d6423SLionel Sambuc AcpiExOpcode_2A_1T_1R ( 435433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 436433d6423SLionel Sambuc 437433d6423SLionel Sambuc ACPI_STATUS 438433d6423SLionel Sambuc AcpiExOpcode_2A_2T_1R ( 439433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 440433d6423SLionel Sambuc 441433d6423SLionel Sambuc 442433d6423SLionel Sambuc /* 443433d6423SLionel Sambuc * exoparg3 - ACPI AML execution, 3 operands 444433d6423SLionel Sambuc */ 445433d6423SLionel Sambuc ACPI_STATUS 446433d6423SLionel Sambuc AcpiExOpcode_3A_0T_0R ( 447433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 448433d6423SLionel Sambuc 449433d6423SLionel Sambuc ACPI_STATUS 450433d6423SLionel Sambuc AcpiExOpcode_3A_1T_1R ( 451433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 452433d6423SLionel Sambuc 453433d6423SLionel Sambuc 454433d6423SLionel Sambuc /* 455433d6423SLionel Sambuc * exoparg6 - ACPI AML execution, 6 operands 456433d6423SLionel Sambuc */ 457433d6423SLionel Sambuc ACPI_STATUS 458433d6423SLionel Sambuc AcpiExOpcode_6A_0T_1R ( 459433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 460433d6423SLionel Sambuc 461433d6423SLionel Sambuc 462433d6423SLionel Sambuc /* 463433d6423SLionel Sambuc * exresolv - Object resolution and get value functions 464433d6423SLionel Sambuc */ 465433d6423SLionel Sambuc ACPI_STATUS 466433d6423SLionel Sambuc AcpiExResolveToValue ( 467433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **StackPtr, 468433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 469433d6423SLionel Sambuc 470433d6423SLionel Sambuc ACPI_STATUS 471433d6423SLionel Sambuc AcpiExResolveMultiple ( 472433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState, 473433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Operand, 474433d6423SLionel Sambuc ACPI_OBJECT_TYPE *ReturnType, 475433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **ReturnDesc); 476433d6423SLionel Sambuc 477433d6423SLionel Sambuc 478433d6423SLionel Sambuc /* 479433d6423SLionel Sambuc * exresnte - resolve namespace node 480433d6423SLionel Sambuc */ 481433d6423SLionel Sambuc ACPI_STATUS 482433d6423SLionel Sambuc AcpiExResolveNodeToValue ( 483433d6423SLionel Sambuc ACPI_NAMESPACE_NODE **StackPtr, 484433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 485433d6423SLionel Sambuc 486433d6423SLionel Sambuc 487433d6423SLionel Sambuc /* 488433d6423SLionel Sambuc * exresop - resolve operand to value 489433d6423SLionel Sambuc */ 490433d6423SLionel Sambuc ACPI_STATUS 491433d6423SLionel Sambuc AcpiExResolveOperands ( 492433d6423SLionel Sambuc UINT16 Opcode, 493433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **StackPtr, 494433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 495433d6423SLionel Sambuc 496433d6423SLionel Sambuc 497433d6423SLionel Sambuc /* 498433d6423SLionel Sambuc * exdump - Interpreter debug output routines 499433d6423SLionel Sambuc */ 500433d6423SLionel Sambuc void 501433d6423SLionel Sambuc AcpiExDumpOperand ( 502433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc, 503433d6423SLionel Sambuc UINT32 Depth); 504433d6423SLionel Sambuc 505433d6423SLionel Sambuc void 506433d6423SLionel Sambuc AcpiExDumpOperands ( 507433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **Operands, 508433d6423SLionel Sambuc const char *OpcodeName, 509433d6423SLionel Sambuc UINT32 NumOpcodes); 510433d6423SLionel Sambuc 511433d6423SLionel Sambuc void 512433d6423SLionel Sambuc AcpiExDumpObjectDescriptor ( 513433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *Object, 514433d6423SLionel Sambuc UINT32 Flags); 515433d6423SLionel Sambuc 516433d6423SLionel Sambuc void 517433d6423SLionel Sambuc AcpiExDumpNamespaceNode ( 518433d6423SLionel Sambuc ACPI_NAMESPACE_NODE *Node, 519433d6423SLionel Sambuc UINT32 Flags); 520433d6423SLionel Sambuc 521433d6423SLionel Sambuc 522433d6423SLionel Sambuc /* 523433d6423SLionel Sambuc * exnames - AML namestring support 524433d6423SLionel Sambuc */ 525433d6423SLionel Sambuc ACPI_STATUS 526433d6423SLionel Sambuc AcpiExGetNameString ( 527433d6423SLionel Sambuc ACPI_OBJECT_TYPE DataType, 528433d6423SLionel Sambuc UINT8 *InAmlAddress, 529433d6423SLionel Sambuc char **OutNameString, 530433d6423SLionel Sambuc UINT32 *OutNameLength); 531433d6423SLionel Sambuc 532433d6423SLionel Sambuc 533433d6423SLionel Sambuc /* 534433d6423SLionel Sambuc * exstore - Object store support 535433d6423SLionel Sambuc */ 536433d6423SLionel Sambuc ACPI_STATUS 537433d6423SLionel Sambuc AcpiExStore ( 538433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ValDesc, 539433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *DestDesc, 540433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 541433d6423SLionel Sambuc 542433d6423SLionel Sambuc ACPI_STATUS 543433d6423SLionel Sambuc AcpiExStoreObjectToNode ( 544433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 545433d6423SLionel Sambuc ACPI_NAMESPACE_NODE *Node, 546433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState, 547433d6423SLionel Sambuc UINT8 ImplicitConversion); 548433d6423SLionel Sambuc 549433d6423SLionel Sambuc #define ACPI_IMPLICIT_CONVERSION TRUE 550433d6423SLionel Sambuc #define ACPI_NO_IMPLICIT_CONVERSION FALSE 551433d6423SLionel Sambuc 552433d6423SLionel Sambuc 553433d6423SLionel Sambuc /* 554433d6423SLionel Sambuc * exstoren - resolve/store object 555433d6423SLionel Sambuc */ 556433d6423SLionel Sambuc ACPI_STATUS 557433d6423SLionel Sambuc AcpiExResolveObject ( 558433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **SourceDescPtr, 559433d6423SLionel Sambuc ACPI_OBJECT_TYPE TargetType, 560433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 561433d6423SLionel Sambuc 562433d6423SLionel Sambuc ACPI_STATUS 563433d6423SLionel Sambuc AcpiExStoreObjectToObject ( 564433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 565433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *DestDesc, 566433d6423SLionel Sambuc ACPI_OPERAND_OBJECT **NewDesc, 567433d6423SLionel Sambuc ACPI_WALK_STATE *WalkState); 568433d6423SLionel Sambuc 569433d6423SLionel Sambuc 570433d6423SLionel Sambuc /* 571433d6423SLionel Sambuc * exstorob - store object - buffer/string 572433d6423SLionel Sambuc */ 573433d6423SLionel Sambuc ACPI_STATUS 574433d6423SLionel Sambuc AcpiExStoreBufferToBuffer ( 575433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 576433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *TargetDesc); 577433d6423SLionel Sambuc 578433d6423SLionel Sambuc ACPI_STATUS 579433d6423SLionel Sambuc AcpiExStoreStringToString ( 580433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 581433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *TargetDesc); 582433d6423SLionel Sambuc 583433d6423SLionel Sambuc 584433d6423SLionel Sambuc /* 585433d6423SLionel Sambuc * excopy - object copy 586433d6423SLionel Sambuc */ 587433d6423SLionel Sambuc ACPI_STATUS 588433d6423SLionel Sambuc AcpiExCopyIntegerToIndexField ( 589433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 590433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *TargetDesc); 591433d6423SLionel Sambuc 592433d6423SLionel Sambuc ACPI_STATUS 593433d6423SLionel Sambuc AcpiExCopyIntegerToBankField ( 594433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 595433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *TargetDesc); 596433d6423SLionel Sambuc 597433d6423SLionel Sambuc ACPI_STATUS 598433d6423SLionel Sambuc AcpiExCopyDataToNamedField ( 599433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 600433d6423SLionel Sambuc ACPI_NAMESPACE_NODE *Node); 601433d6423SLionel Sambuc 602433d6423SLionel Sambuc ACPI_STATUS 603433d6423SLionel Sambuc AcpiExCopyIntegerToBufferField ( 604433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *SourceDesc, 605433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *TargetDesc); 606433d6423SLionel Sambuc 607433d6423SLionel Sambuc 608433d6423SLionel Sambuc /* 609433d6423SLionel Sambuc * exutils - interpreter/scanner utilities 610433d6423SLionel Sambuc */ 611433d6423SLionel Sambuc void 612433d6423SLionel Sambuc AcpiExEnterInterpreter ( 613433d6423SLionel Sambuc void); 614433d6423SLionel Sambuc 615433d6423SLionel Sambuc void 616433d6423SLionel Sambuc AcpiExExitInterpreter ( 617433d6423SLionel Sambuc void); 618433d6423SLionel Sambuc 619*29492bb7SDavid van Moolenbroek BOOLEAN 620433d6423SLionel Sambuc AcpiExTruncateFor32bitTable ( 621433d6423SLionel Sambuc ACPI_OPERAND_OBJECT *ObjDesc); 622433d6423SLionel Sambuc 623433d6423SLionel Sambuc void 624433d6423SLionel Sambuc AcpiExAcquireGlobalLock ( 625433d6423SLionel Sambuc UINT32 Rule); 626433d6423SLionel Sambuc 627433d6423SLionel Sambuc void 628433d6423SLionel Sambuc AcpiExReleaseGlobalLock ( 629433d6423SLionel Sambuc UINT32 Rule); 630433d6423SLionel Sambuc 631433d6423SLionel Sambuc void 632433d6423SLionel Sambuc AcpiExEisaIdToString ( 633433d6423SLionel Sambuc char *Dest, 634433d6423SLionel Sambuc UINT64 CompressedId); 635433d6423SLionel Sambuc 636433d6423SLionel Sambuc void 637433d6423SLionel Sambuc AcpiExIntegerToString ( 638433d6423SLionel Sambuc char *Dest, 639433d6423SLionel Sambuc UINT64 Value); 640433d6423SLionel Sambuc 641*29492bb7SDavid van Moolenbroek BOOLEAN 642*29492bb7SDavid van Moolenbroek AcpiIsValidSpaceId ( 643*29492bb7SDavid van Moolenbroek UINT8 SpaceId); 644*29492bb7SDavid van Moolenbroek 645433d6423SLionel Sambuc 646433d6423SLionel Sambuc /* 647433d6423SLionel Sambuc * exregion - default OpRegion handlers 648433d6423SLionel Sambuc */ 649433d6423SLionel Sambuc ACPI_STATUS 650433d6423SLionel Sambuc AcpiExSystemMemorySpaceHandler ( 651433d6423SLionel Sambuc UINT32 Function, 652433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 653433d6423SLionel Sambuc UINT32 BitWidth, 654433d6423SLionel Sambuc UINT64 *Value, 655433d6423SLionel Sambuc void *HandlerContext, 656433d6423SLionel Sambuc void *RegionContext); 657433d6423SLionel Sambuc 658433d6423SLionel Sambuc ACPI_STATUS 659433d6423SLionel Sambuc AcpiExSystemIoSpaceHandler ( 660433d6423SLionel Sambuc UINT32 Function, 661433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 662433d6423SLionel Sambuc UINT32 BitWidth, 663433d6423SLionel Sambuc UINT64 *Value, 664433d6423SLionel Sambuc void *HandlerContext, 665433d6423SLionel Sambuc void *RegionContext); 666433d6423SLionel Sambuc 667433d6423SLionel Sambuc ACPI_STATUS 668433d6423SLionel Sambuc AcpiExPciConfigSpaceHandler ( 669433d6423SLionel Sambuc UINT32 Function, 670433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 671433d6423SLionel Sambuc UINT32 BitWidth, 672433d6423SLionel Sambuc UINT64 *Value, 673433d6423SLionel Sambuc void *HandlerContext, 674433d6423SLionel Sambuc void *RegionContext); 675433d6423SLionel Sambuc 676433d6423SLionel Sambuc ACPI_STATUS 677433d6423SLionel Sambuc AcpiExCmosSpaceHandler ( 678433d6423SLionel Sambuc UINT32 Function, 679433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 680433d6423SLionel Sambuc UINT32 BitWidth, 681433d6423SLionel Sambuc UINT64 *Value, 682433d6423SLionel Sambuc void *HandlerContext, 683433d6423SLionel Sambuc void *RegionContext); 684433d6423SLionel Sambuc 685433d6423SLionel Sambuc ACPI_STATUS 686433d6423SLionel Sambuc AcpiExPciBarSpaceHandler ( 687433d6423SLionel Sambuc UINT32 Function, 688433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 689433d6423SLionel Sambuc UINT32 BitWidth, 690433d6423SLionel Sambuc UINT64 *Value, 691433d6423SLionel Sambuc void *HandlerContext, 692433d6423SLionel Sambuc void *RegionContext); 693433d6423SLionel Sambuc 694433d6423SLionel Sambuc ACPI_STATUS 695433d6423SLionel Sambuc AcpiExEmbeddedControllerSpaceHandler ( 696433d6423SLionel Sambuc UINT32 Function, 697433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 698433d6423SLionel Sambuc UINT32 BitWidth, 699433d6423SLionel Sambuc UINT64 *Value, 700433d6423SLionel Sambuc void *HandlerContext, 701433d6423SLionel Sambuc void *RegionContext); 702433d6423SLionel Sambuc 703433d6423SLionel Sambuc ACPI_STATUS 704433d6423SLionel Sambuc AcpiExSmBusSpaceHandler ( 705433d6423SLionel Sambuc UINT32 Function, 706433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 707433d6423SLionel Sambuc UINT32 BitWidth, 708433d6423SLionel Sambuc UINT64 *Value, 709433d6423SLionel Sambuc void *HandlerContext, 710433d6423SLionel Sambuc void *RegionContext); 711433d6423SLionel Sambuc 712433d6423SLionel Sambuc 713433d6423SLionel Sambuc ACPI_STATUS 714433d6423SLionel Sambuc AcpiExDataTableSpaceHandler ( 715433d6423SLionel Sambuc UINT32 Function, 716433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 717433d6423SLionel Sambuc UINT32 BitWidth, 718433d6423SLionel Sambuc UINT64 *Value, 719433d6423SLionel Sambuc void *HandlerContext, 720433d6423SLionel Sambuc void *RegionContext); 721433d6423SLionel Sambuc 722433d6423SLionel Sambuc #endif /* __INTERP_H__ */ 723