Home | History | Annotate | Line # | Download | only in include
acpixf.h revision 1.1.1.3
      1 
      2 /******************************************************************************
      3  *
      4  * Name: acpixf.h - External interfaces to the ACPI subsystem
      5  *
      6  *****************************************************************************/
      7 
      8 /*
      9  * Copyright (C) 2000 - 2011, Intel Corp.
     10  * All rights reserved.
     11  *
     12  * Redistribution and use in source and binary forms, with or without
     13  * modification, are permitted provided that the following conditions
     14  * are met:
     15  * 1. Redistributions of source code must retain the above copyright
     16  *    notice, this list of conditions, and the following disclaimer,
     17  *    without modification.
     18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19  *    substantially similar to the "NO WARRANTY" disclaimer below
     20  *    ("Disclaimer") and any redistribution must be conditioned upon
     21  *    including a substantially similar Disclaimer requirement for further
     22  *    binary redistribution.
     23  * 3. Neither the names of the above-listed copyright holders nor the names
     24  *    of any contributors may be used to endorse or promote products derived
     25  *    from this software without specific prior written permission.
     26  *
     27  * Alternatively, this software may be distributed under the terms of the
     28  * GNU General Public License ("GPL") version 2 as published by the Free
     29  * Software Foundation.
     30  *
     31  * NO WARRANTY
     32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42  * POSSIBILITY OF SUCH DAMAGES.
     43  */
     44 
     45 
     46 #ifndef __ACXFACE_H__
     47 #define __ACXFACE_H__
     48 
     49 /* Current ACPICA subsystem version in YYYYMMDD format */
     50 
     51 #define ACPI_CA_VERSION                 0x20110623
     52 
     53 #include "actypes.h"
     54 #include "actbl.h"
     55 
     56 /*
     57  * Globals that are publically available
     58  */
     59 extern UINT32               AcpiCurrentGpeCount;
     60 extern ACPI_TABLE_FADT      AcpiGbl_FADT;
     61 extern BOOLEAN              AcpiGbl_SystemAwakeAndRunning;
     62 
     63 /* Runtime configuration of debug print levels */
     64 
     65 extern UINT32               AcpiDbgLevel;
     66 extern UINT32               AcpiDbgLayer;
     67 
     68 /* ACPICA runtime options */
     69 
     70 extern UINT8                AcpiGbl_EnableInterpreterSlack;
     71 extern UINT8                AcpiGbl_AllMethodsSerialized;
     72 extern UINT8                AcpiGbl_CreateOsiMethod;
     73 extern UINT8                AcpiGbl_UseDefaultRegisterWidths;
     74 extern ACPI_NAME            AcpiGbl_TraceMethodName;
     75 extern UINT32               AcpiGbl_TraceFlags;
     76 extern UINT8                AcpiGbl_EnableAmlDebugObject;
     77 extern UINT8                AcpiGbl_CopyDsdtLocally;
     78 extern UINT8                AcpiGbl_TruncateIoAddresses;
     79 extern UINT8                AcpiGbl_DisableAutoRepair;
     80 
     81 
     82 /*
     83  * Initialization
     84  */
     85 ACPI_STATUS
     86 AcpiInitializeTables (
     87     ACPI_TABLE_DESC         *InitialStorage,
     88     UINT32                  InitialTableCount,
     89     BOOLEAN                 AllowResize);
     90 
     91 ACPI_STATUS
     92 AcpiInitializeSubsystem (
     93     void);
     94 
     95 ACPI_STATUS
     96 AcpiEnableSubsystem (
     97     UINT32                  Flags);
     98 
     99 ACPI_STATUS
    100 AcpiInitializeObjects (
    101     UINT32                  Flags);
    102 
    103 ACPI_STATUS
    104 AcpiTerminate (
    105     void);
    106 
    107 
    108 /*
    109  * Miscellaneous global interfaces
    110  */
    111 ACPI_STATUS
    112 AcpiEnable (
    113     void);
    114 
    115 ACPI_STATUS
    116 AcpiDisable (
    117     void);
    118 
    119 ACPI_STATUS
    120 AcpiSubsystemStatus (
    121     void);
    122 
    123 ACPI_STATUS
    124 AcpiGetSystemInfo (
    125     ACPI_BUFFER             *RetBuffer);
    126 
    127 ACPI_STATUS
    128 AcpiGetStatistics (
    129     ACPI_STATISTICS         *Stats);
    130 
    131 const char *
    132 AcpiFormatException (
    133     ACPI_STATUS             Exception);
    134 
    135 ACPI_STATUS
    136 AcpiPurgeCachedObjects (
    137     void);
    138 
    139 ACPI_STATUS
    140 AcpiInstallInterface (
    141     ACPI_STRING             InterfaceName);
    142 
    143 ACPI_STATUS
    144 AcpiRemoveInterface (
    145     ACPI_STRING             InterfaceName);
    146 
    147 
    148 /*
    149  * ACPI Memory management
    150  */
    151 void *
    152 AcpiAllocate (
    153     UINT32                  Size);
    154 
    155 void *
    156 AcpiCallocate (
    157     UINT32                  Size);
    158 
    159 void
    160 AcpiFree (
    161     void                    *Address);
    162 
    163 
    164 /*
    165  * ACPI table manipulation interfaces
    166  */
    167 ACPI_STATUS
    168 AcpiReallocateRootTable (
    169     void);
    170 
    171 ACPI_STATUS
    172 AcpiFindRootPointer (
    173     ACPI_SIZE               *RsdpAddress);
    174 
    175 ACPI_STATUS
    176 AcpiLoadTables (
    177     void);
    178 
    179 ACPI_STATUS
    180 AcpiGetTableHeader (
    181     ACPI_STRING             Signature,
    182     UINT32                  Instance,
    183     ACPI_TABLE_HEADER       *OutTableHeader);
    184 
    185 ACPI_STATUS
    186 AcpiGetTable (
    187     ACPI_STRING             Signature,
    188     UINT32                  Instance,
    189     ACPI_TABLE_HEADER       **OutTable);
    190 
    191 ACPI_STATUS
    192 AcpiGetTableByIndex (
    193     UINT32                  TableIndex,
    194     ACPI_TABLE_HEADER       **OutTable);
    195 
    196 ACPI_STATUS
    197 AcpiInstallTableHandler (
    198     ACPI_TABLE_HANDLER      Handler,
    199     void                    *Context);
    200 
    201 ACPI_STATUS
    202 AcpiRemoveTableHandler (
    203     ACPI_TABLE_HANDLER      Handler);
    204 
    205 
    206 /*
    207  * Namespace and name interfaces
    208  */
    209 ACPI_STATUS
    210 AcpiWalkNamespace (
    211     ACPI_OBJECT_TYPE        Type,
    212     ACPI_HANDLE             StartObject,
    213     UINT32                  MaxDepth,
    214     ACPI_WALK_CALLBACK      PreOrderVisit,
    215     ACPI_WALK_CALLBACK      PostOrderVisit,
    216     void                    *Context,
    217     void                    **ReturnValue);
    218 
    219 ACPI_STATUS
    220 AcpiGetDevices (
    221     char                    *HID,
    222     ACPI_WALK_CALLBACK      UserFunction,
    223     void                    *Context,
    224     void                    **ReturnValue);
    225 
    226 ACPI_STATUS
    227 AcpiGetName (
    228     ACPI_HANDLE             Object,
    229     UINT32                  NameType,
    230     ACPI_BUFFER             *RetPathPtr);
    231 
    232 ACPI_STATUS
    233 AcpiGetHandle (
    234     ACPI_HANDLE             Parent,
    235     ACPI_STRING             Pathname,
    236     ACPI_HANDLE             *RetHandle);
    237 
    238 ACPI_STATUS
    239 AcpiAttachData (
    240     ACPI_HANDLE             Object,
    241     ACPI_OBJECT_HANDLER     Handler,
    242     void                    *Data);
    243 
    244 ACPI_STATUS
    245 AcpiDetachData (
    246     ACPI_HANDLE             Object,
    247     ACPI_OBJECT_HANDLER     Handler);
    248 
    249 ACPI_STATUS
    250 AcpiGetData (
    251     ACPI_HANDLE             Object,
    252     ACPI_OBJECT_HANDLER     Handler,
    253     void                    **Data);
    254 
    255 ACPI_STATUS
    256 AcpiDebugTrace (
    257     char                    *Name,
    258     UINT32                  DebugLevel,
    259     UINT32                  DebugLayer,
    260     UINT32                  Flags);
    261 
    262 
    263 /*
    264  * Object manipulation and enumeration
    265  */
    266 ACPI_STATUS
    267 AcpiEvaluateObject (
    268     ACPI_HANDLE             Object,
    269     ACPI_STRING             Pathname,
    270     ACPI_OBJECT_LIST        *ParameterObjects,
    271     ACPI_BUFFER             *ReturnObjectBuffer);
    272 
    273 ACPI_STATUS
    274 AcpiEvaluateObjectTyped (
    275     ACPI_HANDLE             Object,
    276     ACPI_STRING             Pathname,
    277     ACPI_OBJECT_LIST        *ExternalParams,
    278     ACPI_BUFFER             *ReturnBuffer,
    279     ACPI_OBJECT_TYPE        ReturnType);
    280 
    281 ACPI_STATUS
    282 AcpiGetObjectInfo (
    283     ACPI_HANDLE             Object,
    284     ACPI_DEVICE_INFO        **ReturnBuffer);
    285 
    286 ACPI_STATUS
    287 AcpiInstallMethod (
    288     UINT8                   *Buffer);
    289 
    290 ACPI_STATUS
    291 AcpiGetNextObject (
    292     ACPI_OBJECT_TYPE        Type,
    293     ACPI_HANDLE             Parent,
    294     ACPI_HANDLE             Child,
    295     ACPI_HANDLE             *OutHandle);
    296 
    297 ACPI_STATUS
    298 AcpiGetType (
    299     ACPI_HANDLE             Object,
    300     ACPI_OBJECT_TYPE        *OutType);
    301 
    302 ACPI_STATUS
    303 AcpiGetParent (
    304     ACPI_HANDLE             Object,
    305     ACPI_HANDLE             *OutHandle);
    306 
    307 
    308 /*
    309  * Handler interfaces
    310  */
    311 ACPI_STATUS
    312 AcpiInstallInitializationHandler (
    313     ACPI_INIT_HANDLER       Handler,
    314     UINT32                  Function);
    315 
    316 ACPI_STATUS
    317 AcpiInstallGlobalEventHandler (
    318     ACPI_GBL_EVENT_HANDLER  Handler,
    319     void                    *Context);
    320 
    321 ACPI_STATUS
    322 AcpiInstallFixedEventHandler (
    323     UINT32                  AcpiEvent,
    324     ACPI_EVENT_HANDLER      Handler,
    325     void                    *Context);
    326 
    327 ACPI_STATUS
    328 AcpiRemoveFixedEventHandler (
    329     UINT32                  AcpiEvent,
    330     ACPI_EVENT_HANDLER      Handler);
    331 
    332 ACPI_STATUS
    333 AcpiInstallGpeHandler (
    334     ACPI_HANDLE             GpeDevice,
    335     UINT32                  GpeNumber,
    336     UINT32                  Type,
    337     ACPI_GPE_HANDLER        Address,
    338     void                    *Context);
    339 
    340 ACPI_STATUS
    341 AcpiRemoveGpeHandler (
    342     ACPI_HANDLE             GpeDevice,
    343     UINT32                  GpeNumber,
    344     ACPI_GPE_HANDLER        Address);
    345 
    346 ACPI_STATUS
    347 AcpiInstallNotifyHandler (
    348     ACPI_HANDLE             Device,
    349     UINT32                  HandlerType,
    350     ACPI_NOTIFY_HANDLER     Handler,
    351     void                    *Context);
    352 
    353 ACPI_STATUS
    354 AcpiRemoveNotifyHandler (
    355     ACPI_HANDLE             Device,
    356     UINT32                  HandlerType,
    357     ACPI_NOTIFY_HANDLER     Handler);
    358 
    359 ACPI_STATUS
    360 AcpiInstallAddressSpaceHandler (
    361     ACPI_HANDLE             Device,
    362     ACPI_ADR_SPACE_TYPE     SpaceId,
    363     ACPI_ADR_SPACE_HANDLER  Handler,
    364     ACPI_ADR_SPACE_SETUP    Setup,
    365     void                    *Context);
    366 
    367 ACPI_STATUS
    368 AcpiRemoveAddressSpaceHandler (
    369     ACPI_HANDLE             Device,
    370     ACPI_ADR_SPACE_TYPE     SpaceId,
    371     ACPI_ADR_SPACE_HANDLER  Handler);
    372 
    373 ACPI_STATUS
    374 AcpiInstallExceptionHandler (
    375     ACPI_EXCEPTION_HANDLER  Handler);
    376 
    377 ACPI_STATUS
    378 AcpiInstallInterfaceHandler (
    379     ACPI_INTERFACE_HANDLER  Handler);
    380 
    381 
    382 /*
    383  * Global Lock interfaces
    384  */
    385 ACPI_STATUS
    386 AcpiAcquireGlobalLock (
    387     UINT16                  Timeout,
    388     UINT32                  *Handle);
    389 
    390 ACPI_STATUS
    391 AcpiReleaseGlobalLock (
    392     UINT32                  Handle);
    393 
    394 
    395 /*
    396  * Fixed Event interfaces
    397  */
    398 ACPI_STATUS
    399 AcpiEnableEvent (
    400     UINT32                  Event,
    401     UINT32                  Flags);
    402 
    403 ACPI_STATUS
    404 AcpiDisableEvent (
    405     UINT32                  Event,
    406     UINT32                  Flags);
    407 
    408 ACPI_STATUS
    409 AcpiClearEvent (
    410     UINT32                  Event);
    411 
    412 ACPI_STATUS
    413 AcpiGetEventStatus (
    414     UINT32                  Event,
    415     ACPI_EVENT_STATUS       *EventStatus);
    416 
    417 
    418 /*
    419  * General Purpose Event (GPE) Interfaces
    420  */
    421 ACPI_STATUS
    422 AcpiUpdateAllGpes (
    423     void);
    424 
    425 ACPI_STATUS
    426 AcpiEnableGpe (
    427     ACPI_HANDLE             GpeDevice,
    428     UINT32                  GpeNumber);
    429 
    430 ACPI_STATUS
    431 AcpiDisableGpe (
    432     ACPI_HANDLE             GpeDevice,
    433     UINT32                  GpeNumber);
    434 
    435 ACPI_STATUS
    436 AcpiClearGpe (
    437     ACPI_HANDLE             GpeDevice,
    438     UINT32                  GpeNumber);
    439 
    440 ACPI_STATUS
    441 AcpiSetGpe (
    442     ACPI_HANDLE             GpeDevice,
    443     UINT32                  GpeNumber,
    444     UINT8                   Action);
    445 
    446 ACPI_STATUS
    447 AcpiFinishGpe (
    448     ACPI_HANDLE             GpeDevice,
    449     UINT32                  GpeNumber);
    450 
    451 ACPI_STATUS
    452 AcpiSetupGpeForWake (
    453     ACPI_HANDLE             ParentDevice,
    454     ACPI_HANDLE             GpeDevice,
    455     UINT32                  GpeNumber);
    456 
    457 ACPI_STATUS
    458 AcpiSetGpeWakeMask (
    459     ACPI_HANDLE             GpeDevice,
    460     UINT32                  GpeNumber,
    461     UINT8                   Action);
    462 
    463 ACPI_STATUS
    464 AcpiGetGpeStatus (
    465     ACPI_HANDLE             GpeDevice,
    466     UINT32                  GpeNumber,
    467     ACPI_EVENT_STATUS       *EventStatus);
    468 
    469 ACPI_STATUS
    470 AcpiDisableAllGpes (
    471     void);
    472 
    473 ACPI_STATUS
    474 AcpiEnableAllRuntimeGpes (
    475     void);
    476 
    477 ACPI_STATUS
    478 AcpiGetGpeDevice (
    479     UINT32                  GpeIndex,
    480     ACPI_HANDLE             *GpeDevice);
    481 
    482 ACPI_STATUS
    483 AcpiInstallGpeBlock (
    484     ACPI_HANDLE             GpeDevice,
    485     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
    486     UINT32                  RegisterCount,
    487     UINT32                  InterruptNumber);
    488 
    489 ACPI_STATUS
    490 AcpiRemoveGpeBlock (
    491     ACPI_HANDLE             GpeDevice);
    492 
    493 
    494 /*
    495  * Resource interfaces
    496  */
    497 typedef
    498 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
    499     ACPI_RESOURCE           *Resource,
    500     void                    *Context);
    501 
    502 ACPI_STATUS
    503 AcpiGetVendorResource (
    504     ACPI_HANDLE             Device,
    505     char                    *Name,
    506     ACPI_VENDOR_UUID        *Uuid,
    507     ACPI_BUFFER             *RetBuffer);
    508 
    509 ACPI_STATUS
    510 AcpiGetCurrentResources (
    511     ACPI_HANDLE             Device,
    512     ACPI_BUFFER             *RetBuffer);
    513 
    514 ACPI_STATUS
    515 AcpiGetPossibleResources (
    516     ACPI_HANDLE             Device,
    517     ACPI_BUFFER             *RetBuffer);
    518 
    519 ACPI_STATUS
    520 AcpiWalkResources (
    521     ACPI_HANDLE                 Device,
    522     char                        *Name,
    523     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
    524     void                        *Context);
    525 
    526 ACPI_STATUS
    527 AcpiSetCurrentResources (
    528     ACPI_HANDLE             Device,
    529     ACPI_BUFFER             *InBuffer);
    530 
    531 ACPI_STATUS
    532 AcpiGetIrqRoutingTable (
    533     ACPI_HANDLE             Device,
    534     ACPI_BUFFER             *RetBuffer);
    535 
    536 ACPI_STATUS
    537 AcpiResourceToAddress64 (
    538     ACPI_RESOURCE           *Resource,
    539     ACPI_RESOURCE_ADDRESS64 *Out);
    540 
    541 
    542 /*
    543  * Hardware (ACPI device) interfaces
    544  */
    545 ACPI_STATUS
    546 AcpiReset (
    547     void);
    548 
    549 ACPI_STATUS
    550 AcpiRead (
    551     UINT64                  *Value,
    552     ACPI_GENERIC_ADDRESS    *Reg);
    553 
    554 ACPI_STATUS
    555 AcpiWrite (
    556     UINT64                  Value,
    557     ACPI_GENERIC_ADDRESS    *Reg);
    558 
    559 ACPI_STATUS
    560 AcpiReadBitRegister (
    561     UINT32                  RegisterId,
    562     UINT32                  *ReturnValue);
    563 
    564 ACPI_STATUS
    565 AcpiWriteBitRegister (
    566     UINT32                  RegisterId,
    567     UINT32                  Value);
    568 
    569 ACPI_STATUS
    570 AcpiGetSleepTypeData (
    571     UINT8                   SleepState,
    572     UINT8                   *Slp_TypA,
    573     UINT8                   *Slp_TypB);
    574 
    575 ACPI_STATUS
    576 AcpiEnterSleepStatePrep (
    577     UINT8                   SleepState);
    578 
    579 ACPI_STATUS
    580 AcpiEnterSleepState (
    581     UINT8                   SleepState);
    582 
    583 ACPI_STATUS
    584 AcpiEnterSleepStateS4bios (
    585     void);
    586 
    587 ACPI_STATUS
    588 AcpiLeaveSleepState (
    589     UINT8                   SleepState)
    590     ;
    591 ACPI_STATUS
    592 AcpiSetFirmwareWakingVector (
    593     UINT32                  PhysicalAddress);
    594 
    595 #if ACPI_MACHINE_WIDTH == 64
    596 ACPI_STATUS
    597 AcpiSetFirmwareWakingVector64 (
    598     UINT64                  PhysicalAddress);
    599 #endif
    600 
    601 
    602 /*
    603  * Error/Warning output
    604  */
    605 void ACPI_INTERNAL_VAR_XFACE
    606 AcpiError (
    607     const char              *ModuleName,
    608     UINT32                  LineNumber,
    609     const char              *Format,
    610     ...) ACPI_PRINTF_LIKE(3);
    611 
    612 void  ACPI_INTERNAL_VAR_XFACE
    613 AcpiException (
    614     const char              *ModuleName,
    615     UINT32                  LineNumber,
    616     ACPI_STATUS             Status,
    617     const char              *Format,
    618     ...) ACPI_PRINTF_LIKE(4);
    619 
    620 void ACPI_INTERNAL_VAR_XFACE
    621 AcpiWarning (
    622     const char              *ModuleName,
    623     UINT32                  LineNumber,
    624     const char              *Format,
    625     ...) ACPI_PRINTF_LIKE(3);
    626 
    627 void ACPI_INTERNAL_VAR_XFACE
    628 AcpiInfo (
    629     const char              *ModuleName,
    630     UINT32                  LineNumber,
    631     const char              *Format,
    632     ...) ACPI_PRINTF_LIKE(3);
    633 
    634 
    635 /*
    636  * Debug output
    637  */
    638 #ifdef ACPI_DEBUG_OUTPUT
    639 
    640 void ACPI_INTERNAL_VAR_XFACE
    641 AcpiDebugPrint (
    642     UINT32                  RequestedDebugLevel,
    643     UINT32                  LineNumber,
    644     const char              *FunctionName,
    645     const char              *ModuleName,
    646     UINT32                  ComponentId,
    647     const char              *Format,
    648     ...) ACPI_PRINTF_LIKE(6);
    649 
    650 void ACPI_INTERNAL_VAR_XFACE
    651 AcpiDebugPrintRaw (
    652     UINT32                  RequestedDebugLevel,
    653     UINT32                  LineNumber,
    654     const char              *FunctionName,
    655     const char              *ModuleName,
    656     UINT32                  ComponentId,
    657     const char              *Format,
    658     ...) ACPI_PRINTF_LIKE(6);
    659 #endif
    660 
    661 #endif /* __ACXFACE_H__ */
    662