Home | History | Annotate | Line # | Download | only in include
acpixf.h revision 1.7
      1 /******************************************************************************
      2  *
      3  * Name: acpixf.h - External interfaces to the ACPI subsystem
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2014, Intel Corp.
      9  * All rights reserved.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions, and the following disclaimer,
     16  *    without modification.
     17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  *    including a substantially similar Disclaimer requirement for further
     21  *    binary redistribution.
     22  * 3. Neither the names of the above-listed copyright holders nor the names
     23  *    of any contributors may be used to endorse or promote products derived
     24  *    from this software without specific prior written permission.
     25  *
     26  * Alternatively, this software may be distributed under the terms of the
     27  * GNU General Public License ("GPL") version 2 as published by the Free
     28  * Software Foundation.
     29  *
     30  * NO WARRANTY
     31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  * POSSIBILITY OF SUCH DAMAGES.
     42  */
     43 
     44 #ifndef __ACXFACE_H__
     45 #define __ACXFACE_H__
     46 
     47 /* Current ACPICA subsystem version in YYYYMMDD format */
     48 
     49 #define ACPI_CA_VERSION                 0x20140926
     50 
     51 #include "acconfig.h"
     52 #include "actypes.h"
     53 #include "actbl.h"
     54 #include "acbuffer.h"
     55 
     56 
     57 /*****************************************************************************
     58  *
     59  * Macros used for ACPICA globals and configuration
     60  *
     61  ****************************************************************************/
     62 
     63 /*
     64  * Ensure that global variables are defined and initialized only once.
     65  *
     66  * The use of these macros allows for a single list of globals (here)
     67  * in order to simplify maintenance of the code.
     68  */
     69 #ifdef DEFINE_ACPI_GLOBALS
     70 #define ACPI_GLOBAL(type,name) \
     71     extern type name; \
     72     type name
     73 
     74 #define ACPI_INIT_GLOBAL(type,name,value) \
     75     type name=value
     76 
     77 #else
     78 #ifndef ACPI_GLOBAL
     79 #define ACPI_GLOBAL(type,name) \
     80     extern type name
     81 #endif
     82 
     83 #ifndef ACPI_INIT_GLOBAL
     84 #define ACPI_INIT_GLOBAL(type,name,value) \
     85     extern type name
     86 #endif
     87 #endif
     88 
     89 /*
     90  * These macros configure the various ACPICA interfaces. They are
     91  * useful for generating stub inline functions for features that are
     92  * configured out of the current kernel or ACPICA application.
     93  */
     94 #ifndef ACPI_EXTERNAL_RETURN_STATUS
     95 #define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \
     96     Prototype;
     97 #endif
     98 
     99 #ifndef ACPI_EXTERNAL_RETURN_OK
    100 #define ACPI_EXTERNAL_RETURN_OK(Prototype) \
    101     Prototype;
    102 #endif
    103 
    104 #ifndef ACPI_EXTERNAL_RETURN_VOID
    105 #define ACPI_EXTERNAL_RETURN_VOID(Prototype) \
    106     Prototype;
    107 #endif
    108 
    109 #ifndef ACPI_EXTERNAL_RETURN_UINT32
    110 #define ACPI_EXTERNAL_RETURN_UINT32(Prototype) \
    111     Prototype;
    112 #endif
    113 
    114 #ifndef ACPI_EXTERNAL_RETURN_PTR
    115 #define ACPI_EXTERNAL_RETURN_PTR(Prototype) \
    116     Prototype;
    117 #endif
    118 
    119 
    120 /*****************************************************************************
    121  *
    122  * Public globals and runtime configuration options
    123  *
    124  ****************************************************************************/
    125 
    126 /*
    127  * Enable "slack mode" of the AML interpreter?  Default is FALSE, and the
    128  * interpreter strictly follows the ACPI specification. Setting to TRUE
    129  * allows the interpreter to ignore certain errors and/or bad AML constructs.
    130  *
    131  * Currently, these features are enabled by this flag:
    132  *
    133  * 1) Allow "implicit return" of last value in a control method
    134  * 2) Allow access beyond the end of an operation region
    135  * 3) Allow access to uninitialized locals/args (auto-init to integer 0)
    136  * 4) Allow ANY object type to be a source operand for the Store() operator
    137  * 5) Allow unresolved references (invalid target name) in package objects
    138  * 6) Enable warning messages for behavior that is not ACPI spec compliant
    139  */
    140 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_EnableInterpreterSlack, FALSE);
    141 
    142 /*
    143  * Automatically serialize all methods that create named objects? Default
    144  * is TRUE, meaning that all NonSerialized methods are scanned once at
    145  * table load time to determine those that create named objects. Methods
    146  * that create named objects are marked Serialized in order to prevent
    147  * possible run-time problems if they are entered by more than one thread.
    148  */
    149 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_AutoSerializeMethods, TRUE);
    150 
    151 /*
    152  * Create the predefined _OSI method in the namespace? Default is TRUE
    153  * because ACPICA is fully compatible with other ACPI implementations.
    154  * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior.
    155  */
    156 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CreateOsiMethod, TRUE);
    157 
    158 /*
    159  * Optionally use default values for the ACPI register widths. Set this to
    160  * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
    161  */
    162 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_UseDefaultRegisterWidths, TRUE);
    163 
    164 /*
    165  * Whether or not to verify the table checksum before installation. Set
    166  * this to TRUE to verify the table checksum before install it to the table
    167  * manager. Note that enabling this option causes errors to happen in some
    168  * OSPMs during early initialization stages. Default behavior is to do such
    169  * verification.
    170  */
    171 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_VerifyTableChecksum, TRUE);
    172 
    173 /*
    174  * Optionally enable output from the AML Debug Object.
    175  */
    176 ACPI_INIT_GLOBAL (_Bool,            AcpiGbl_EnableAmlDebugObject, FALSE);
    177 
    178 /*
    179  * Optionally copy the entire DSDT to local memory (instead of simply
    180  * mapping it.) There are some BIOSs that corrupt or replace the original
    181  * DSDT, creating the need for this option. Default is FALSE, do not copy
    182  * the DSDT.
    183  */
    184 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CopyDsdtLocally, FALSE);
    185 
    186 /*
    187  * Optionally ignore an XSDT if present and use the RSDT instead.
    188  * Although the ACPI specification requires that an XSDT be used instead
    189  * of the RSDT, the XSDT has been found to be corrupt or ill-formed on
    190  * some machines. Default behavior is to use the XSDT if present.
    191  */
    192 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
    193 
    194 /*
    195  * Optionally use 32-bit FADT addresses if and when there is a conflict
    196  * (address mismatch) between the 32-bit and 64-bit versions of the
    197  * address. Although ACPICA adheres to the ACPI specification which
    198  * requires the use of the corresponding 64-bit address if it is non-zero,
    199  * some machines have been found to have a corrupted non-zero 64-bit
    200  * address. Default is FALSE, do not favor the 32-bit addresses.
    201  */
    202 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_Use32BitFadtAddresses, FALSE);
    203 
    204 /*
    205  * Optionally truncate I/O addresses to 16 bits. Provides compatibility
    206  * with other ACPI implementations. NOTE: During ACPICA initialization,
    207  * this value is set to TRUE if any Windows OSI strings have been
    208  * requested by the BIOS.
    209  */
    210 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_TruncateIoAddresses, FALSE);
    211 
    212 /*
    213  * Disable runtime checking and repair of values returned by control methods.
    214  * Use only if the repair is causing a problem on a particular machine.
    215  */
    216 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableAutoRepair, FALSE);
    217 
    218 /*
    219  * Optionally do not install any SSDTs from the RSDT/XSDT during initialization.
    220  * This can be useful for debugging ACPI problems on some machines.
    221  */
    222 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableSsdtTableInstall, FALSE);
    223 
    224 /*
    225  * We keep track of the latest version of Windows that has been requested by
    226  * the BIOS. ACPI 5.0.
    227  */
    228 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_OsiData, 0);
    229 
    230 /*
    231  * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
    232  * that the ACPI hardware is no longer required. A flag in the FADT indicates
    233  * a reduced HW machine, and that flag is duplicated here for convenience.
    234  */
    235 ACPI_INIT_GLOBAL (BOOLEAN,          AcpiGbl_ReducedHardware, FALSE);
    236 
    237 /*
    238  * This mechanism is used to trace a specified AML method. The method is
    239  * traced each time it is executed.
    240  */
    241 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceFlags, 0);
    242 ACPI_INIT_GLOBAL (ACPI_NAME,        AcpiGbl_TraceMethodName, 0);
    243 
    244 /*
    245  * Runtime configuration of debug output control masks. We want the debug
    246  * switches statically initialized so they are already set when the debugger
    247  * is entered.
    248  */
    249 #ifdef ACPI_DEBUG_OUTPUT
    250 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_DEBUG_DEFAULT);
    251 #else
    252 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_NORMAL_DEFAULT);
    253 #endif
    254 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLayer, ACPI_COMPONENT_DEFAULT);
    255 
    256 /*
    257  * Other miscellaneous globals
    258  */
    259 ACPI_GLOBAL (ACPI_TABLE_FADT,       AcpiGbl_FADT);
    260 ACPI_GLOBAL (UINT32,                AcpiCurrentGpeCount);
    261 ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
    262 
    263 
    264 /*****************************************************************************
    265  *
    266  * ACPICA public interface configuration.
    267  *
    268  * Interfaces that are configured out of the ACPICA build are replaced
    269  * by inlined stubs by default.
    270  *
    271  ****************************************************************************/
    272 
    273 /*
    274  * Hardware-reduced prototypes (default: Not hardware reduced).
    275  *
    276  * All ACPICA hardware-related interfaces that use these macros will be
    277  * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
    278  * is set to TRUE.
    279  *
    280  * Note: This static build option for reduced hardware is intended to
    281  * reduce ACPICA code size if desired or necessary. However, even if this
    282  * option is not specified, the runtime behavior of ACPICA is dependent
    283  * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set,
    284  * the flag will enable similar behavior -- ACPICA will not attempt
    285  * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.)
    286  */
    287 #if (!ACPI_REDUCED_HARDWARE)
    288 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
    289     ACPI_EXTERNAL_RETURN_STATUS(Prototype)
    290 
    291 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
    292     ACPI_EXTERNAL_RETURN_OK(Prototype)
    293 
    294 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
    295     ACPI_EXTERNAL_RETURN_VOID(Prototype)
    296 
    297 #else
    298 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
    299     static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);}
    300 
    301 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
    302     static ACPI_INLINE Prototype {return(AE_OK);}
    303 
    304 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
    305     static ACPI_INLINE Prototype {return;}
    306 
    307 #endif /* !ACPI_REDUCED_HARDWARE */
    308 
    309 
    310 /*
    311  * Error message prototypes (default: error messages enabled).
    312  *
    313  * All interfaces related to error and warning messages
    314  * will be configured out of the ACPICA build if the
    315  * ACPI_NO_ERROR_MESSAGE flag is defined.
    316  */
    317 #ifndef ACPI_NO_ERROR_MESSAGES
    318 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \
    319     Prototype;
    320 
    321 #else
    322 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \
    323     static ACPI_INLINE Prototype {return;}
    324 
    325 #endif /* ACPI_NO_ERROR_MESSAGES */
    326 
    327 
    328 /*
    329  * Debugging output prototypes (default: no debug output).
    330  *
    331  * All interfaces related to debug output messages
    332  * will be configured out of the ACPICA build unless the
    333  * ACPI_DEBUG_OUTPUT flag is defined.
    334  */
    335 #ifdef ACPI_DEBUG_OUTPUT
    336 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \
    337     Prototype;
    338 
    339 #else
    340 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \
    341     static ACPI_INLINE Prototype {return;}
    342 
    343 #endif /* ACPI_DEBUG_OUTPUT */
    344 
    345 
    346 /*
    347  * Application prototypes
    348  *
    349  * All interfaces used by application will be configured
    350  * out of the ACPICA build unless the ACPI_APPLICATION
    351  * flag is defined.
    352  */
    353 #ifdef ACPI_APPLICATION
    354 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
    355     Prototype;
    356 
    357 #else
    358 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
    359     static ACPI_INLINE Prototype {return;}
    360 
    361 #endif /* ACPI_APPLICATION */
    362 
    363 
    364 /*****************************************************************************
    365  *
    366  * ACPICA public interface prototypes
    367  *
    368  ****************************************************************************/
    369 
    370 /*
    371  * Initialization
    372  */
    373 ACPI_EXTERNAL_RETURN_STATUS (
    374 ACPI_STATUS
    375 AcpiInitializeTables (
    376     ACPI_TABLE_DESC         *InitialStorage,
    377     UINT32                  InitialTableCount,
    378     BOOLEAN                 AllowResize))
    379 
    380 ACPI_EXTERNAL_RETURN_STATUS (
    381 ACPI_STATUS
    382 AcpiInitializeSubsystem (
    383     void))
    384 
    385 ACPI_EXTERNAL_RETURN_STATUS (
    386 ACPI_STATUS
    387 AcpiEnableSubsystem (
    388     UINT32                  Flags))
    389 
    390 ACPI_EXTERNAL_RETURN_STATUS (
    391 ACPI_STATUS
    392 AcpiInitializeObjects (
    393     UINT32                  Flags))
    394 
    395 ACPI_EXTERNAL_RETURN_STATUS (
    396 ACPI_STATUS
    397 AcpiTerminate (
    398     void))
    399 
    400 
    401 /*
    402  * Miscellaneous global interfaces
    403  */
    404 ACPI_HW_DEPENDENT_RETURN_STATUS (
    405 ACPI_STATUS
    406 AcpiEnable (
    407     void))
    408 
    409 ACPI_HW_DEPENDENT_RETURN_STATUS (
    410 ACPI_STATUS
    411 AcpiDisable (
    412     void))
    413 
    414 ACPI_EXTERNAL_RETURN_STATUS (
    415 ACPI_STATUS
    416 AcpiSubsystemStatus (
    417     void))
    418 
    419 ACPI_EXTERNAL_RETURN_STATUS (
    420 ACPI_STATUS
    421 AcpiGetSystemInfo (
    422     ACPI_BUFFER             *RetBuffer))
    423 
    424 ACPI_EXTERNAL_RETURN_STATUS (
    425 ACPI_STATUS
    426 AcpiGetStatistics (
    427     ACPI_STATISTICS         *Stats))
    428 
    429 ACPI_EXTERNAL_RETURN_PTR (
    430 const char *
    431 AcpiFormatException (
    432     ACPI_STATUS             Exception))
    433 
    434 ACPI_EXTERNAL_RETURN_STATUS (
    435 ACPI_STATUS
    436 AcpiPurgeCachedObjects (
    437     void))
    438 
    439 ACPI_EXTERNAL_RETURN_STATUS (
    440 ACPI_STATUS
    441 AcpiInstallInterface (
    442     ACPI_STRING             InterfaceName))
    443 
    444 ACPI_EXTERNAL_RETURN_STATUS (
    445 ACPI_STATUS
    446 AcpiRemoveInterface (
    447     ACPI_STRING             InterfaceName))
    448 
    449 ACPI_EXTERNAL_RETURN_STATUS (
    450 ACPI_STATUS
    451 AcpiUpdateInterfaces (
    452     UINT8                   Action))
    453 
    454 ACPI_EXTERNAL_RETURN_UINT32 (
    455 UINT32
    456 AcpiCheckAddressRange (
    457     ACPI_ADR_SPACE_TYPE     SpaceId,
    458     ACPI_PHYSICAL_ADDRESS   Address,
    459     ACPI_SIZE               Length,
    460     BOOLEAN                 Warn))
    461 
    462 ACPI_EXTERNAL_RETURN_STATUS (
    463 ACPI_STATUS
    464 AcpiDecodePldBuffer (
    465     UINT8                   *InBuffer,
    466     ACPI_SIZE               Length,
    467     ACPI_PLD_INFO           **ReturnBuffer))
    468 
    469 
    470 /*
    471  * ACPI table load/unload interfaces
    472  */
    473 ACPI_EXTERNAL_RETURN_STATUS (
    474 ACPI_STATUS
    475 AcpiInstallTable (
    476     ACPI_PHYSICAL_ADDRESS   Address,
    477     BOOLEAN                 Physical))
    478 
    479 ACPI_EXTERNAL_RETURN_STATUS (
    480 ACPI_STATUS
    481 AcpiLoadTable (
    482     ACPI_TABLE_HEADER       *Table))
    483 
    484 ACPI_EXTERNAL_RETURN_STATUS (
    485 ACPI_STATUS
    486 AcpiUnloadParentTable (
    487     ACPI_HANDLE             Object))
    488 
    489 ACPI_EXTERNAL_RETURN_STATUS (
    490 ACPI_STATUS
    491 AcpiLoadTables (
    492     void))
    493 
    494 
    495 /*
    496  * ACPI table manipulation interfaces
    497  */
    498 ACPI_EXTERNAL_RETURN_STATUS (
    499 ACPI_STATUS
    500 AcpiReallocateRootTable (
    501     void))
    502 
    503 ACPI_EXTERNAL_RETURN_STATUS (
    504 ACPI_STATUS
    505 AcpiFindRootPointer (
    506     ACPI_SIZE               *RsdpAddress))
    507 
    508 ACPI_EXTERNAL_RETURN_STATUS (
    509 ACPI_STATUS
    510 AcpiGetTableHeader (
    511     ACPI_CONST_STRING       Signature,
    512     UINT32                  Instance,
    513     ACPI_TABLE_HEADER       *OutTableHeader))
    514 
    515 ACPI_EXTERNAL_RETURN_STATUS (
    516 ACPI_STATUS
    517 AcpiGetTable (
    518     ACPI_CONST_STRING       Signature,
    519     UINT32                  Instance,
    520     ACPI_TABLE_HEADER       **OutTable))
    521 
    522 ACPI_EXTERNAL_RETURN_STATUS (
    523 ACPI_STATUS
    524 AcpiGetTableByIndex (
    525     UINT32                  TableIndex,
    526     ACPI_TABLE_HEADER       **OutTable))
    527 
    528 ACPI_EXTERNAL_RETURN_STATUS (
    529 ACPI_STATUS
    530 AcpiInstallTableHandler (
    531     ACPI_TABLE_HANDLER      Handler,
    532     void                    *Context))
    533 
    534 ACPI_EXTERNAL_RETURN_STATUS (
    535 ACPI_STATUS
    536 AcpiRemoveTableHandler (
    537     ACPI_TABLE_HANDLER      Handler))
    538 
    539 
    540 /*
    541  * Namespace and name interfaces
    542  */
    543 ACPI_EXTERNAL_RETURN_STATUS (
    544 ACPI_STATUS
    545 AcpiWalkNamespace (
    546     ACPI_OBJECT_TYPE        Type,
    547     ACPI_HANDLE             StartObject,
    548     UINT32                  MaxDepth,
    549     ACPI_WALK_CALLBACK      DescendingCallback,
    550     ACPI_WALK_CALLBACK      AscendingCallback,
    551     void                    *Context,
    552     void                    **ReturnValue))
    553 
    554 ACPI_EXTERNAL_RETURN_STATUS (
    555 ACPI_STATUS
    556 AcpiGetDevices (
    557     char                    *HID,
    558     ACPI_WALK_CALLBACK      UserFunction,
    559     void                    *Context,
    560     void                    **ReturnValue))
    561 
    562 ACPI_EXTERNAL_RETURN_STATUS (
    563 ACPI_STATUS
    564 AcpiGetName (
    565     ACPI_HANDLE             Object,
    566     UINT32                  NameType,
    567     ACPI_BUFFER             *RetPathPtr))
    568 
    569 ACPI_EXTERNAL_RETURN_STATUS (
    570 ACPI_STATUS
    571 AcpiGetHandle (
    572     ACPI_HANDLE             Parent,
    573     ACPI_CONST_STRING       Pathname,
    574     ACPI_HANDLE             *RetHandle))
    575 
    576 ACPI_EXTERNAL_RETURN_STATUS (
    577 ACPI_STATUS
    578 AcpiAttachData (
    579     ACPI_HANDLE             Object,
    580     ACPI_OBJECT_HANDLER     Handler,
    581     void                    *Data))
    582 
    583 ACPI_EXTERNAL_RETURN_STATUS (
    584 ACPI_STATUS
    585 AcpiDetachData (
    586     ACPI_HANDLE             Object,
    587     ACPI_OBJECT_HANDLER     Handler))
    588 
    589 ACPI_EXTERNAL_RETURN_STATUS (
    590 ACPI_STATUS
    591 AcpiGetData (
    592     ACPI_HANDLE             Object,
    593     ACPI_OBJECT_HANDLER     Handler,
    594     void                    **Data))
    595 
    596 ACPI_EXTERNAL_RETURN_STATUS (
    597 ACPI_STATUS
    598 AcpiDebugTrace (
    599     char                    *Name,
    600     UINT32                  DebugLevel,
    601     UINT32                  DebugLayer,
    602     UINT32                  Flags))
    603 
    604 
    605 /*
    606  * Object manipulation and enumeration
    607  */
    608 ACPI_EXTERNAL_RETURN_STATUS (
    609 ACPI_STATUS
    610 AcpiEvaluateObject (
    611     ACPI_HANDLE             Object,
    612     ACPI_CONST_STRING       Pathname,
    613     ACPI_OBJECT_LIST        *ParameterObjects,
    614     ACPI_BUFFER             *ReturnObjectBuffer))
    615 
    616 ACPI_EXTERNAL_RETURN_STATUS (
    617 ACPI_STATUS
    618 AcpiEvaluateObjectTyped (
    619     ACPI_HANDLE             Object,
    620     ACPI_CONST_STRING       Pathname,
    621     ACPI_OBJECT_LIST        *ExternalParams,
    622     ACPI_BUFFER             *ReturnBuffer,
    623     ACPI_OBJECT_TYPE        ReturnType))
    624 
    625 ACPI_EXTERNAL_RETURN_STATUS (
    626 ACPI_STATUS
    627 AcpiGetObjectInfo (
    628     ACPI_HANDLE             Object,
    629     ACPI_DEVICE_INFO        **ReturnBuffer))
    630 
    631 ACPI_EXTERNAL_RETURN_STATUS (
    632 ACPI_STATUS
    633 AcpiInstallMethod (
    634     UINT8                   *Buffer))
    635 
    636 ACPI_EXTERNAL_RETURN_STATUS (
    637 ACPI_STATUS
    638 AcpiGetNextObject (
    639     ACPI_OBJECT_TYPE        Type,
    640     ACPI_HANDLE             Parent,
    641     ACPI_HANDLE             Child,
    642     ACPI_HANDLE             *OutHandle))
    643 
    644 ACPI_EXTERNAL_RETURN_STATUS (
    645 ACPI_STATUS
    646 AcpiGetType (
    647     ACPI_HANDLE             Object,
    648     ACPI_OBJECT_TYPE        *OutType))
    649 
    650 ACPI_EXTERNAL_RETURN_STATUS (
    651 ACPI_STATUS
    652 AcpiGetParent (
    653     ACPI_HANDLE             Object,
    654     ACPI_HANDLE             *OutHandle))
    655 
    656 
    657 /*
    658  * Handler interfaces
    659  */
    660 ACPI_EXTERNAL_RETURN_STATUS (
    661 ACPI_STATUS
    662 AcpiInstallInitializationHandler (
    663     ACPI_INIT_HANDLER       Handler,
    664     UINT32                  Function))
    665 
    666 ACPI_HW_DEPENDENT_RETURN_STATUS (
    667 ACPI_STATUS
    668 AcpiInstallSciHandler (
    669     ACPI_SCI_HANDLER        Address,
    670     void                    *Context))
    671 
    672 ACPI_HW_DEPENDENT_RETURN_STATUS (
    673 ACPI_STATUS
    674 AcpiRemoveSciHandler (
    675     ACPI_SCI_HANDLER        Address))
    676 
    677 ACPI_HW_DEPENDENT_RETURN_STATUS (
    678 ACPI_STATUS
    679 AcpiInstallGlobalEventHandler (
    680     ACPI_GBL_EVENT_HANDLER  Handler,
    681     void                    *Context))
    682 
    683 ACPI_HW_DEPENDENT_RETURN_STATUS (
    684 ACPI_STATUS
    685 AcpiInstallFixedEventHandler (
    686     UINT32                  AcpiEvent,
    687     ACPI_EVENT_HANDLER      Handler,
    688     void                    *Context))
    689 
    690 ACPI_HW_DEPENDENT_RETURN_STATUS (
    691 ACPI_STATUS
    692 AcpiRemoveFixedEventHandler (
    693     UINT32                  AcpiEvent,
    694     ACPI_EVENT_HANDLER      Handler))
    695 
    696 ACPI_HW_DEPENDENT_RETURN_STATUS (
    697 ACPI_STATUS
    698 AcpiInstallGpeHandler (
    699     ACPI_HANDLE             GpeDevice,
    700     UINT32                  GpeNumber,
    701     UINT32                  Type,
    702     ACPI_GPE_HANDLER        Address,
    703     void                    *Context))
    704 
    705 ACPI_HW_DEPENDENT_RETURN_STATUS (
    706 ACPI_STATUS
    707 AcpiRemoveGpeHandler (
    708     ACPI_HANDLE             GpeDevice,
    709     UINT32                  GpeNumber,
    710     ACPI_GPE_HANDLER        Address))
    711 
    712 ACPI_EXTERNAL_RETURN_STATUS (
    713 ACPI_STATUS
    714 AcpiInstallNotifyHandler (
    715     ACPI_HANDLE             Device,
    716     UINT32                  HandlerType,
    717     ACPI_NOTIFY_HANDLER     Handler,
    718     void                    *Context))
    719 
    720 ACPI_EXTERNAL_RETURN_STATUS (
    721 ACPI_STATUS
    722 AcpiRemoveNotifyHandler (
    723     ACPI_HANDLE             Device,
    724     UINT32                  HandlerType,
    725     ACPI_NOTIFY_HANDLER     Handler))
    726 
    727 ACPI_EXTERNAL_RETURN_STATUS (
    728 ACPI_STATUS
    729 AcpiInstallAddressSpaceHandler (
    730     ACPI_HANDLE             Device,
    731     ACPI_ADR_SPACE_TYPE     SpaceId,
    732     ACPI_ADR_SPACE_HANDLER  Handler,
    733     ACPI_ADR_SPACE_SETUP    Setup,
    734     void                    *Context))
    735 
    736 ACPI_EXTERNAL_RETURN_STATUS (
    737 ACPI_STATUS
    738 AcpiRemoveAddressSpaceHandler (
    739     ACPI_HANDLE             Device,
    740     ACPI_ADR_SPACE_TYPE     SpaceId,
    741     ACPI_ADR_SPACE_HANDLER  Handler))
    742 
    743 ACPI_EXTERNAL_RETURN_STATUS (
    744 ACPI_STATUS
    745 AcpiInstallExceptionHandler (
    746     ACPI_EXCEPTION_HANDLER  Handler))
    747 
    748 ACPI_EXTERNAL_RETURN_STATUS (
    749 ACPI_STATUS
    750 AcpiInstallInterfaceHandler (
    751     ACPI_INTERFACE_HANDLER  Handler))
    752 
    753 
    754 /*
    755  * Global Lock interfaces
    756  */
    757 ACPI_HW_DEPENDENT_RETURN_STATUS (
    758 ACPI_STATUS
    759 AcpiAcquireGlobalLock (
    760     UINT16                  Timeout,
    761     UINT32                  *Handle))
    762 
    763 ACPI_HW_DEPENDENT_RETURN_STATUS (
    764 ACPI_STATUS
    765 AcpiReleaseGlobalLock (
    766     UINT32                  Handle))
    767 
    768 
    769 /*
    770  * Interfaces to AML mutex objects
    771  */
    772 ACPI_EXTERNAL_RETURN_STATUS (
    773 ACPI_STATUS
    774 AcpiAcquireMutex (
    775     ACPI_HANDLE             Handle,
    776     ACPI_STRING             Pathname,
    777     UINT16                  Timeout))
    778 
    779 ACPI_EXTERNAL_RETURN_STATUS (
    780 ACPI_STATUS
    781 AcpiReleaseMutex (
    782     ACPI_HANDLE             Handle,
    783     ACPI_STRING             Pathname))
    784 
    785 
    786 /*
    787  * Fixed Event interfaces
    788  */
    789 ACPI_HW_DEPENDENT_RETURN_STATUS (
    790 ACPI_STATUS
    791 AcpiEnableEvent (
    792     UINT32                  Event,
    793     UINT32                  Flags))
    794 
    795 ACPI_HW_DEPENDENT_RETURN_STATUS (
    796 ACPI_STATUS
    797 AcpiDisableEvent (
    798     UINT32                  Event,
    799     UINT32                  Flags))
    800 
    801 ACPI_HW_DEPENDENT_RETURN_STATUS (
    802 ACPI_STATUS
    803 AcpiClearEvent (
    804     UINT32                  Event))
    805 
    806 ACPI_HW_DEPENDENT_RETURN_STATUS (
    807 ACPI_STATUS
    808 AcpiGetEventStatus (
    809     UINT32                  Event,
    810     ACPI_EVENT_STATUS       *EventStatus))
    811 
    812 
    813 /*
    814  * General Purpose Event (GPE) Interfaces
    815  */
    816 ACPI_HW_DEPENDENT_RETURN_STATUS (
    817 ACPI_STATUS
    818 AcpiUpdateAllGpes (
    819     void))
    820 
    821 ACPI_HW_DEPENDENT_RETURN_STATUS (
    822 ACPI_STATUS
    823 AcpiEnableGpe (
    824     ACPI_HANDLE             GpeDevice,
    825     UINT32                  GpeNumber))
    826 
    827 ACPI_HW_DEPENDENT_RETURN_STATUS (
    828 ACPI_STATUS
    829 AcpiDisableGpe (
    830     ACPI_HANDLE             GpeDevice,
    831     UINT32                  GpeNumber))
    832 
    833 ACPI_HW_DEPENDENT_RETURN_STATUS (
    834 ACPI_STATUS
    835 AcpiClearGpe (
    836     ACPI_HANDLE             GpeDevice,
    837     UINT32                  GpeNumber))
    838 
    839 ACPI_HW_DEPENDENT_RETURN_STATUS (
    840 ACPI_STATUS
    841 AcpiSetGpe (
    842     ACPI_HANDLE             GpeDevice,
    843     UINT32                  GpeNumber,
    844     UINT8                   Action))
    845 
    846 ACPI_HW_DEPENDENT_RETURN_STATUS (
    847 ACPI_STATUS
    848 AcpiFinishGpe (
    849     ACPI_HANDLE             GpeDevice,
    850     UINT32                  GpeNumber))
    851 
    852 ACPI_HW_DEPENDENT_RETURN_STATUS (
    853 ACPI_STATUS
    854 AcpiMarkGpeForWake (
    855     ACPI_HANDLE             GpeDevice,
    856     UINT32                  GpeNumber))
    857 
    858 ACPI_HW_DEPENDENT_RETURN_STATUS (
    859 ACPI_STATUS
    860 AcpiSetupGpeForWake (
    861     ACPI_HANDLE             ParentDevice,
    862     ACPI_HANDLE             GpeDevice,
    863     UINT32                  GpeNumber))
    864 
    865 ACPI_HW_DEPENDENT_RETURN_STATUS (
    866 ACPI_STATUS
    867 AcpiSetGpeWakeMask (
    868     ACPI_HANDLE             GpeDevice,
    869     UINT32                  GpeNumber,
    870     UINT8                   Action))
    871 
    872 ACPI_HW_DEPENDENT_RETURN_STATUS (
    873 ACPI_STATUS
    874 AcpiGetGpeStatus (
    875     ACPI_HANDLE             GpeDevice,
    876     UINT32                  GpeNumber,
    877     ACPI_EVENT_STATUS       *EventStatus))
    878 
    879 ACPI_HW_DEPENDENT_RETURN_STATUS (
    880 ACPI_STATUS
    881 AcpiDisableAllGpes (
    882     void))
    883 
    884 ACPI_HW_DEPENDENT_RETURN_STATUS (
    885 ACPI_STATUS
    886 AcpiEnableAllRuntimeGpes (
    887     void))
    888 
    889 ACPI_HW_DEPENDENT_RETURN_STATUS (
    890 ACPI_STATUS
    891 AcpiGetGpeDevice (
    892     UINT32                  GpeIndex,
    893     ACPI_HANDLE             *GpeDevice))
    894 
    895 ACPI_HW_DEPENDENT_RETURN_STATUS (
    896 ACPI_STATUS
    897 AcpiInstallGpeBlock (
    898     ACPI_HANDLE             GpeDevice,
    899     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
    900     UINT32                  RegisterCount,
    901     UINT32                  InterruptNumber))
    902 
    903 ACPI_HW_DEPENDENT_RETURN_STATUS (
    904 ACPI_STATUS
    905 AcpiRemoveGpeBlock (
    906     ACPI_HANDLE             GpeDevice))
    907 
    908 
    909 /*
    910  * Resource interfaces
    911  */
    912 typedef
    913 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
    914     ACPI_RESOURCE           *Resource,
    915     void                    *Context);
    916 
    917 ACPI_EXTERNAL_RETURN_STATUS (
    918 ACPI_STATUS
    919 AcpiGetVendorResource (
    920     ACPI_HANDLE             Device,
    921     char                    *Name,
    922     ACPI_VENDOR_UUID        *Uuid,
    923     ACPI_BUFFER             *RetBuffer))
    924 
    925 ACPI_EXTERNAL_RETURN_STATUS (
    926 ACPI_STATUS
    927 AcpiGetCurrentResources (
    928     ACPI_HANDLE             Device,
    929     ACPI_BUFFER             *RetBuffer))
    930 
    931 ACPI_EXTERNAL_RETURN_STATUS (
    932 ACPI_STATUS
    933 AcpiGetPossibleResources (
    934     ACPI_HANDLE             Device,
    935     ACPI_BUFFER             *RetBuffer))
    936 
    937 ACPI_EXTERNAL_RETURN_STATUS (
    938 ACPI_STATUS
    939 AcpiGetEventResources (
    940     ACPI_HANDLE             DeviceHandle,
    941     ACPI_BUFFER             *RetBuffer))
    942 
    943 ACPI_EXTERNAL_RETURN_STATUS (
    944 ACPI_STATUS
    945 AcpiWalkResourceBuffer (
    946     ACPI_BUFFER                 *Buffer,
    947     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
    948     void                        *Context))
    949 
    950 ACPI_EXTERNAL_RETURN_STATUS (
    951 ACPI_STATUS
    952 AcpiWalkResources (
    953     ACPI_HANDLE                 Device,
    954     const char                  *Name,
    955     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
    956     void                        *Context))
    957 
    958 ACPI_EXTERNAL_RETURN_STATUS (
    959 ACPI_STATUS
    960 AcpiSetCurrentResources (
    961     ACPI_HANDLE             Device,
    962     ACPI_BUFFER             *InBuffer))
    963 
    964 ACPI_EXTERNAL_RETURN_STATUS (
    965 ACPI_STATUS
    966 AcpiGetIrqRoutingTable (
    967     ACPI_HANDLE             Device,
    968     ACPI_BUFFER             *RetBuffer))
    969 
    970 ACPI_EXTERNAL_RETURN_STATUS (
    971 ACPI_STATUS
    972 AcpiResourceToAddress64 (
    973     ACPI_RESOURCE           *Resource,
    974     ACPI_RESOURCE_ADDRESS64 *Out))
    975 
    976 ACPI_EXTERNAL_RETURN_STATUS (
    977 ACPI_STATUS
    978 AcpiBufferToResource (
    979     UINT8                   *AmlBuffer,
    980     UINT16                  AmlBufferLength,
    981     ACPI_RESOURCE           **ResourcePtr))
    982 
    983 
    984 /*
    985  * Hardware (ACPI device) interfaces
    986  */
    987 ACPI_EXTERNAL_RETURN_STATUS (
    988 ACPI_STATUS
    989 AcpiReset (
    990     void))
    991 
    992 ACPI_EXTERNAL_RETURN_STATUS (
    993 ACPI_STATUS
    994 AcpiRead (
    995     UINT64                  *Value,
    996     ACPI_GENERIC_ADDRESS    *Reg))
    997 
    998 ACPI_EXTERNAL_RETURN_STATUS (
    999 ACPI_STATUS
   1000 AcpiWrite (
   1001     UINT64                  Value,
   1002     ACPI_GENERIC_ADDRESS    *Reg))
   1003 
   1004 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1005 ACPI_STATUS
   1006 AcpiReadBitRegister (
   1007     UINT32                  RegisterId,
   1008     UINT32                  *ReturnValue))
   1009 
   1010 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1011 ACPI_STATUS
   1012 AcpiWriteBitRegister (
   1013     UINT32                  RegisterId,
   1014     UINT32                  Value))
   1015 
   1016 
   1017 /*
   1018  * Sleep/Wake interfaces
   1019  */
   1020 ACPI_EXTERNAL_RETURN_STATUS (
   1021 ACPI_STATUS
   1022 AcpiGetSleepTypeData (
   1023     UINT8                   SleepState,
   1024     UINT8                   *Slp_TypA,
   1025     UINT8                   *Slp_TypB))
   1026 
   1027 ACPI_EXTERNAL_RETURN_STATUS (
   1028 ACPI_STATUS
   1029 AcpiEnterSleepStatePrep (
   1030     UINT8                   SleepState))
   1031 
   1032 ACPI_EXTERNAL_RETURN_STATUS (
   1033 ACPI_STATUS
   1034 AcpiEnterSleepState (
   1035     UINT8                   SleepState))
   1036 
   1037 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1038 ACPI_STATUS
   1039 AcpiEnterSleepStateS4bios (
   1040     void))
   1041 
   1042 ACPI_EXTERNAL_RETURN_STATUS (
   1043 ACPI_STATUS
   1044 AcpiLeaveSleepStatePrep (
   1045     UINT8                   SleepState))
   1046 
   1047 ACPI_EXTERNAL_RETURN_STATUS (
   1048 ACPI_STATUS
   1049 AcpiLeaveSleepState (
   1050     UINT8                   SleepState))
   1051 
   1052 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1053 ACPI_STATUS
   1054 AcpiSetFirmwareWakingVector (
   1055     UINT32                  PhysicalAddress))
   1056 
   1057 #if ACPI_MACHINE_WIDTH == 64
   1058 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1059 ACPI_STATUS
   1060 AcpiSetFirmwareWakingVector64 (
   1061     UINT64                  PhysicalAddress))
   1062 #endif
   1063 
   1064 
   1065 /*
   1066  * ACPI Timer interfaces
   1067  */
   1068 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1069 ACPI_STATUS
   1070 AcpiGetTimerResolution (
   1071     UINT32                  *Resolution))
   1072 
   1073 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1074 ACPI_STATUS
   1075 AcpiGetTimer (
   1076     UINT32                  *Ticks))
   1077 
   1078 ACPI_HW_DEPENDENT_RETURN_STATUS (
   1079 ACPI_STATUS
   1080 AcpiGetTimerDuration (
   1081     UINT32                  StartTicks,
   1082     UINT32                  EndTicks,
   1083     UINT32                  *TimeElapsed))
   1084 
   1085 
   1086 /*
   1087  * Error/Warning output
   1088  */
   1089 ACPI_MSG_DEPENDENT_RETURN_VOID (
   1090 ACPI_PRINTF_LIKE(3)
   1091 void ACPI_INTERNAL_VAR_XFACE
   1092 AcpiError (
   1093     const char              *ModuleName,
   1094     UINT32                  LineNumber,
   1095     const char              *Format,
   1096     ...))
   1097 
   1098 ACPI_MSG_DEPENDENT_RETURN_VOID (
   1099 ACPI_PRINTF_LIKE(4)
   1100 void  ACPI_INTERNAL_VAR_XFACE
   1101 AcpiException (
   1102     const char              *ModuleName,
   1103     UINT32                  LineNumber,
   1104     ACPI_STATUS             Status,
   1105     const char              *Format,
   1106     ...))
   1107 
   1108 ACPI_MSG_DEPENDENT_RETURN_VOID (
   1109 ACPI_PRINTF_LIKE(3)
   1110 void ACPI_INTERNAL_VAR_XFACE
   1111 AcpiWarning (
   1112     const char              *ModuleName,
   1113     UINT32                  LineNumber,
   1114     const char              *Format,
   1115     ...))
   1116 
   1117 ACPI_MSG_DEPENDENT_RETURN_VOID (
   1118 ACPI_PRINTF_LIKE(3)
   1119 void ACPI_INTERNAL_VAR_XFACE
   1120 AcpiInfo (
   1121     const char              *ModuleName,
   1122     UINT32                  LineNumber,
   1123     const char              *Format,
   1124     ...))
   1125 
   1126 ACPI_MSG_DEPENDENT_RETURN_VOID (
   1127 ACPI_PRINTF_LIKE(3)
   1128 void ACPI_INTERNAL_VAR_XFACE
   1129 AcpiBiosError (
   1130     const char              *ModuleName,
   1131     UINT32                  LineNumber,
   1132     const char              *Format,
   1133     ...))
   1134 
   1135 ACPI_MSG_DEPENDENT_RETURN_VOID (
   1136 ACPI_PRINTF_LIKE(3)
   1137 void ACPI_INTERNAL_VAR_XFACE
   1138 AcpiBiosWarning (
   1139     const char              *ModuleName,
   1140     UINT32                  LineNumber,
   1141     const char              *Format,
   1142     ...))
   1143 
   1144 
   1145 /*
   1146  * Debug output
   1147  */
   1148 ACPI_DBG_DEPENDENT_RETURN_VOID (
   1149 ACPI_PRINTF_LIKE(6)
   1150 void ACPI_INTERNAL_VAR_XFACE
   1151 AcpiDebugPrint (
   1152     UINT32                  RequestedDebugLevel,
   1153     UINT32                  LineNumber,
   1154     const char              *FunctionName,
   1155     const char              *ModuleName,
   1156     UINT32                  ComponentId,
   1157     const char              *Format,
   1158     ...))
   1159 
   1160 ACPI_DBG_DEPENDENT_RETURN_VOID (
   1161 ACPI_PRINTF_LIKE(6)
   1162 void ACPI_INTERNAL_VAR_XFACE
   1163 AcpiDebugPrintRaw (
   1164     UINT32                  RequestedDebugLevel,
   1165     UINT32                  LineNumber,
   1166     const char              *FunctionName,
   1167     const char              *ModuleName,
   1168     UINT32                  ComponentId,
   1169     const char              *Format,
   1170     ...))
   1171 
   1172 ACPI_APP_DEPENDENT_RETURN_VOID (
   1173 ACPI_PRINTF_LIKE(1)
   1174 void ACPI_INTERNAL_VAR_XFACE
   1175 AcpiLogError (
   1176     const char              *Format,
   1177     ...))
   1178 
   1179 #endif /* __ACXFACE_H__ */
   1180