Home | History | Annotate | Line # | Download | only in include
acpixf.h revision 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                 0x20110211
     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 
     80 
     81 /*
     82  * Initialization
     83  */
     84 ACPI_STATUS
     85 AcpiInitializeTables (
     86     ACPI_TABLE_DESC         *InitialStorage,
     87     UINT32                  InitialTableCount,
     88     BOOLEAN                 AllowResize);
     89 
     90 ACPI_STATUS
     91 AcpiInitializeSubsystem (
     92     void);
     93 
     94 ACPI_STATUS
     95 AcpiEnableSubsystem (
     96     UINT32                  Flags);
     97 
     98 ACPI_STATUS
     99 AcpiInitializeObjects (
    100     UINT32                  Flags);
    101 
    102 ACPI_STATUS
    103 AcpiTerminate (
    104     void);
    105 
    106 
    107 /*
    108  * Miscellaneous global interfaces
    109  */
    110 ACPI_STATUS
    111 AcpiEnable (
    112     void);
    113 
    114 ACPI_STATUS
    115 AcpiDisable (
    116     void);
    117 
    118 ACPI_STATUS
    119 AcpiSubsystemStatus (
    120     void);
    121 
    122 ACPI_STATUS
    123 AcpiGetSystemInfo (
    124     ACPI_BUFFER             *RetBuffer);
    125 
    126 ACPI_STATUS
    127 AcpiGetStatistics (
    128     ACPI_STATISTICS         *Stats);
    129 
    130 const char *
    131 AcpiFormatException (
    132     ACPI_STATUS             Exception);
    133 
    134 ACPI_STATUS
    135 AcpiPurgeCachedObjects (
    136     void);
    137 
    138 ACPI_STATUS
    139 AcpiInstallInterface (
    140     ACPI_STRING             InterfaceName);
    141 
    142 ACPI_STATUS
    143 AcpiRemoveInterface (
    144     ACPI_STRING             InterfaceName);
    145 
    146 
    147 /*
    148  * ACPI Memory management
    149  */
    150 void *
    151 AcpiAllocate (
    152     UINT32                  Size);
    153 
    154 void *
    155 AcpiCallocate (
    156     UINT32                  Size);
    157 
    158 void
    159 AcpiFree (
    160     void                    *Address);
    161 
    162 
    163 /*
    164  * ACPI table manipulation interfaces
    165  */
    166 ACPI_STATUS
    167 AcpiReallocateRootTable (
    168     void);
    169 
    170 ACPI_STATUS
    171 AcpiFindRootPointer (
    172     ACPI_SIZE               *RsdpAddress);
    173 
    174 ACPI_STATUS
    175 AcpiLoadTables (
    176     void);
    177 
    178 ACPI_STATUS
    179 AcpiGetTableHeader (
    180     ACPI_CONST_STRING       Signature,
    181     UINT32                  Instance,
    182     ACPI_TABLE_HEADER       *OutTableHeader);
    183 
    184 ACPI_STATUS
    185 AcpiGetTable (
    186     ACPI_CONST_STRING       Signature,
    187     UINT32                  Instance,
    188     ACPI_TABLE_HEADER       **OutTable);
    189 
    190 ACPI_STATUS
    191 AcpiGetTableByIndex (
    192     UINT32                  TableIndex,
    193     ACPI_TABLE_HEADER       **OutTable);
    194 
    195 ACPI_STATUS
    196 AcpiInstallTableHandler (
    197     ACPI_TABLE_HANDLER      Handler,
    198     void                    *Context);
    199 
    200 ACPI_STATUS
    201 AcpiRemoveTableHandler (
    202     ACPI_TABLE_HANDLER      Handler);
    203 
    204 
    205 /*
    206  * Namespace and name interfaces
    207  */
    208 ACPI_STATUS
    209 AcpiWalkNamespace (
    210     ACPI_OBJECT_TYPE        Type,
    211     ACPI_HANDLE             StartObject,
    212     UINT32                  MaxDepth,
    213     ACPI_WALK_CALLBACK      PreOrderVisit,
    214     ACPI_WALK_CALLBACK      PostOrderVisit,
    215     void                    *Context,
    216     void                    **ReturnValue);
    217 
    218 ACPI_STATUS
    219 AcpiGetDevices (
    220     char                    *HID,
    221     ACPI_WALK_CALLBACK      UserFunction,
    222     void                    *Context,
    223     void                    **ReturnValue);
    224 
    225 ACPI_STATUS
    226 AcpiGetName (
    227     ACPI_HANDLE             Object,
    228     UINT32                  NameType,
    229     ACPI_BUFFER             *RetPathPtr);
    230 
    231 ACPI_STATUS
    232 AcpiGetHandle (
    233     ACPI_HANDLE             Parent,
    234     ACPI_CONST_STRING       Pathname,
    235     ACPI_HANDLE             *RetHandle);
    236 
    237 ACPI_STATUS
    238 AcpiAttachData (
    239     ACPI_HANDLE             Object,
    240     ACPI_OBJECT_HANDLER     Handler,
    241     void                    *Data);
    242 
    243 ACPI_STATUS
    244 AcpiDetachData (
    245     ACPI_HANDLE             Object,
    246     ACPI_OBJECT_HANDLER     Handler);
    247 
    248 ACPI_STATUS
    249 AcpiGetData (
    250     ACPI_HANDLE             Object,
    251     ACPI_OBJECT_HANDLER     Handler,
    252     void                    **Data);
    253 
    254 ACPI_STATUS
    255 AcpiDebugTrace (
    256     char                    *Name,
    257     UINT32                  DebugLevel,
    258     UINT32                  DebugLayer,
    259     UINT32                  Flags);
    260 
    261 
    262 /*
    263  * Object manipulation and enumeration
    264  */
    265 ACPI_STATUS
    266 AcpiEvaluateObject (
    267     ACPI_HANDLE             Object,
    268     ACPI_CONST_STRING       Pathname,
    269     ACPI_OBJECT_LIST        *ParameterObjects,
    270     ACPI_BUFFER             *ReturnObjectBuffer);
    271 
    272 ACPI_STATUS
    273 AcpiEvaluateObjectTyped (
    274     ACPI_HANDLE             Object,
    275     ACPI_CONST_STRING       Pathname,
    276     ACPI_OBJECT_LIST        *ExternalParams,
    277     ACPI_BUFFER             *ReturnBuffer,
    278     ACPI_OBJECT_TYPE        ReturnType);
    279 
    280 ACPI_STATUS
    281 AcpiGetObjectInfo (
    282     ACPI_HANDLE             Object,
    283     ACPI_DEVICE_INFO        **ReturnBuffer);
    284 
    285 ACPI_STATUS
    286 AcpiInstallMethod (
    287     UINT8                   *Buffer);
    288 
    289 ACPI_STATUS
    290 AcpiGetNextObject (
    291     ACPI_OBJECT_TYPE        Type,
    292     ACPI_HANDLE             Parent,
    293     ACPI_HANDLE             Child,
    294     ACPI_HANDLE             *OutHandle);
    295 
    296 ACPI_STATUS
    297 AcpiGetType (
    298     ACPI_HANDLE             Object,
    299     ACPI_OBJECT_TYPE        *OutType);
    300 
    301 ACPI_STATUS
    302 AcpiGetParent (
    303     ACPI_HANDLE             Object,
    304     ACPI_HANDLE             *OutHandle);
    305 
    306 
    307 /*
    308  * Handler interfaces
    309  */
    310 ACPI_STATUS
    311 AcpiInstallInitializationHandler (
    312     ACPI_INIT_HANDLER       Handler,
    313     UINT32                  Function);
    314 
    315 ACPI_STATUS
    316 AcpiInstallGlobalEventHandler (
    317     ACPI_GBL_EVENT_HANDLER  Handler,
    318     void                    *Context);
    319 
    320 ACPI_STATUS
    321 AcpiInstallFixedEventHandler (
    322     UINT32                  AcpiEvent,
    323     ACPI_EVENT_HANDLER      Handler,
    324     void                    *Context);
    325 
    326 ACPI_STATUS
    327 AcpiRemoveFixedEventHandler (
    328     UINT32                  AcpiEvent,
    329     ACPI_EVENT_HANDLER      Handler);
    330 
    331 ACPI_STATUS
    332 AcpiInstallGpeHandler (
    333     ACPI_HANDLE             GpeDevice,
    334     UINT32                  GpeNumber,
    335     UINT32                  Type,
    336     ACPI_GPE_HANDLER        Address,
    337     void                    *Context);
    338 
    339 ACPI_STATUS
    340 AcpiRemoveGpeHandler (
    341     ACPI_HANDLE             GpeDevice,
    342     UINT32                  GpeNumber,
    343     ACPI_GPE_HANDLER        Address);
    344 
    345 ACPI_STATUS
    346 AcpiInstallNotifyHandler (
    347     ACPI_HANDLE             Device,
    348     UINT32                  HandlerType,
    349     ACPI_NOTIFY_HANDLER     Handler,
    350     void                    *Context);
    351 
    352 ACPI_STATUS
    353 AcpiRemoveNotifyHandler (
    354     ACPI_HANDLE             Device,
    355     UINT32                  HandlerType,
    356     ACPI_NOTIFY_HANDLER     Handler);
    357 
    358 ACPI_STATUS
    359 AcpiInstallAddressSpaceHandler (
    360     ACPI_HANDLE             Device,
    361     ACPI_ADR_SPACE_TYPE     SpaceId,
    362     ACPI_ADR_SPACE_HANDLER  Handler,
    363     ACPI_ADR_SPACE_SETUP    Setup,
    364     void                    *Context);
    365 
    366 ACPI_STATUS
    367 AcpiRemoveAddressSpaceHandler (
    368     ACPI_HANDLE             Device,
    369     ACPI_ADR_SPACE_TYPE     SpaceId,
    370     ACPI_ADR_SPACE_HANDLER  Handler);
    371 
    372 ACPI_STATUS
    373 AcpiInstallExceptionHandler (
    374     ACPI_EXCEPTION_HANDLER  Handler);
    375 
    376 ACPI_STATUS
    377 AcpiInstallInterfaceHandler (
    378     ACPI_INTERFACE_HANDLER  Handler);
    379 
    380 
    381 /*
    382  * Global Lock interfaces
    383  */
    384 ACPI_STATUS
    385 AcpiAcquireGlobalLock (
    386     UINT16                  Timeout,
    387     UINT32                  *Handle);
    388 
    389 ACPI_STATUS
    390 AcpiReleaseGlobalLock (
    391     UINT32                  Handle);
    392 
    393 
    394 /*
    395  * Fixed Event interfaces
    396  */
    397 ACPI_STATUS
    398 AcpiEnableEvent (
    399     UINT32                  Event,
    400     UINT32                  Flags);
    401 
    402 ACPI_STATUS
    403 AcpiDisableEvent (
    404     UINT32                  Event,
    405     UINT32                  Flags);
    406 
    407 ACPI_STATUS
    408 AcpiClearEvent (
    409     UINT32                  Event);
    410 
    411 ACPI_STATUS
    412 AcpiGetEventStatus (
    413     UINT32                  Event,
    414     ACPI_EVENT_STATUS       *EventStatus);
    415 
    416 
    417 /*
    418  * General Purpose Event (GPE) Interfaces
    419  */
    420 ACPI_STATUS
    421 AcpiUpdateAllGpes (
    422     void);
    423 
    424 ACPI_STATUS
    425 AcpiEnableGpe (
    426     ACPI_HANDLE             GpeDevice,
    427     UINT32                  GpeNumber);
    428 
    429 ACPI_STATUS
    430 AcpiDisableGpe (
    431     ACPI_HANDLE             GpeDevice,
    432     UINT32                  GpeNumber);
    433 
    434 ACPI_STATUS
    435 AcpiClearGpe (
    436     ACPI_HANDLE             GpeDevice,
    437     UINT32                  GpeNumber);
    438 
    439 ACPI_STATUS
    440 AcpiSetGpe (
    441     ACPI_HANDLE             GpeDevice,
    442     UINT32                  GpeNumber,
    443     UINT8                   Action);
    444 
    445 ACPI_STATUS
    446 AcpiFinishGpe (
    447     ACPI_HANDLE             GpeDevice,
    448     UINT32                  GpeNumber);
    449 
    450 ACPI_STATUS
    451 AcpiSetupGpeForWake (
    452     ACPI_HANDLE             ParentDevice,
    453     ACPI_HANDLE             GpeDevice,
    454     UINT32                  GpeNumber);
    455 
    456 ACPI_STATUS
    457 AcpiSetGpeWakeMask (
    458     ACPI_HANDLE             GpeDevice,
    459     UINT32                  GpeNumber,
    460     UINT8                   Action);
    461 
    462 ACPI_STATUS
    463 AcpiGetGpeStatus (
    464     ACPI_HANDLE             GpeDevice,
    465     UINT32                  GpeNumber,
    466     ACPI_EVENT_STATUS       *EventStatus);
    467 
    468 ACPI_STATUS
    469 AcpiDisableAllGpes (
    470     void);
    471 
    472 ACPI_STATUS
    473 AcpiEnableAllRuntimeGpes (
    474     void);
    475 
    476 ACPI_STATUS
    477 AcpiGetGpeDevice (
    478     UINT32                  GpeIndex,
    479     ACPI_HANDLE             *GpeDevice);
    480 
    481 ACPI_STATUS
    482 AcpiInstallGpeBlock (
    483     ACPI_HANDLE             GpeDevice,
    484     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
    485     UINT32                  RegisterCount,
    486     UINT32                  InterruptNumber);
    487 
    488 ACPI_STATUS
    489 AcpiRemoveGpeBlock (
    490     ACPI_HANDLE             GpeDevice);
    491 
    492 
    493 /*
    494  * Resource interfaces
    495  */
    496 typedef
    497 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
    498     ACPI_RESOURCE           *Resource,
    499     void                    *Context);
    500 
    501 ACPI_STATUS
    502 AcpiGetVendorResource (
    503     ACPI_HANDLE             Device,
    504     char                    *Name,
    505     ACPI_VENDOR_UUID        *Uuid,
    506     ACPI_BUFFER             *RetBuffer);
    507 
    508 ACPI_STATUS
    509 AcpiGetCurrentResources (
    510     ACPI_HANDLE             Device,
    511     ACPI_BUFFER             *RetBuffer);
    512 
    513 ACPI_STATUS
    514 AcpiGetPossibleResources (
    515     ACPI_HANDLE             Device,
    516     ACPI_BUFFER             *RetBuffer);
    517 
    518 ACPI_STATUS
    519 AcpiWalkResources (
    520     ACPI_HANDLE                 Device,
    521     const char                  *Name,
    522     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
    523     void                        *Context);
    524 
    525 ACPI_STATUS
    526 AcpiSetCurrentResources (
    527     ACPI_HANDLE             Device,
    528     ACPI_BUFFER             *InBuffer);
    529 
    530 ACPI_STATUS
    531 AcpiGetIrqRoutingTable (
    532     ACPI_HANDLE             Device,
    533     ACPI_BUFFER             *RetBuffer);
    534 
    535 ACPI_STATUS
    536 AcpiResourceToAddress64 (
    537     ACPI_RESOURCE           *Resource,
    538     ACPI_RESOURCE_ADDRESS64 *Out);
    539 
    540 
    541 /*
    542  * Hardware (ACPI device) interfaces
    543  */
    544 ACPI_STATUS
    545 AcpiReset (
    546     void);
    547 
    548 ACPI_STATUS
    549 AcpiRead (
    550     UINT64                  *Value,
    551     ACPI_GENERIC_ADDRESS    *Reg);
    552 
    553 ACPI_STATUS
    554 AcpiWrite (
    555     UINT64                  Value,
    556     ACPI_GENERIC_ADDRESS    *Reg);
    557 
    558 ACPI_STATUS
    559 AcpiReadBitRegister (
    560     UINT32                  RegisterId,
    561     UINT32                  *ReturnValue);
    562 
    563 ACPI_STATUS
    564 AcpiWriteBitRegister (
    565     UINT32                  RegisterId,
    566     UINT32                  Value);
    567 
    568 ACPI_STATUS
    569 AcpiGetSleepTypeData (
    570     UINT8                   SleepState,
    571     UINT8                   *Slp_TypA,
    572     UINT8                   *Slp_TypB);
    573 
    574 ACPI_STATUS
    575 AcpiEnterSleepStatePrep (
    576     UINT8                   SleepState);
    577 
    578 ACPI_STATUS
    579 AcpiEnterSleepState (
    580     UINT8                   SleepState);
    581 
    582 ACPI_STATUS
    583 AcpiEnterSleepStateS4bios (
    584     void);
    585 
    586 ACPI_STATUS
    587 AcpiLeaveSleepState (
    588     UINT8                   SleepState)
    589     ;
    590 ACPI_STATUS
    591 AcpiSetFirmwareWakingVector (
    592     UINT32                  PhysicalAddress);
    593 
    594 #if ACPI_MACHINE_WIDTH == 64
    595 ACPI_STATUS
    596 AcpiSetFirmwareWakingVector64 (
    597     UINT64                  PhysicalAddress);
    598 #endif
    599 
    600 
    601 /*
    602  * Error/Warning output
    603  */
    604 void ACPI_INTERNAL_VAR_XFACE
    605 AcpiError (
    606     const char              *ModuleName,
    607     UINT32                  LineNumber,
    608     const char              *Format,
    609     ...) ACPI_PRINTF_LIKE(3);
    610 
    611 void  ACPI_INTERNAL_VAR_XFACE
    612 AcpiException (
    613     const char              *ModuleName,
    614     UINT32                  LineNumber,
    615     ACPI_STATUS             Status,
    616     const char              *Format,
    617     ...) ACPI_PRINTF_LIKE(4);
    618 
    619 void ACPI_INTERNAL_VAR_XFACE
    620 AcpiWarning (
    621     const char              *ModuleName,
    622     UINT32                  LineNumber,
    623     const char              *Format,
    624     ...) ACPI_PRINTF_LIKE(3);
    625 
    626 void ACPI_INTERNAL_VAR_XFACE
    627 AcpiInfo (
    628     const char              *ModuleName,
    629     UINT32                  LineNumber,
    630     const char              *Format,
    631     ...) ACPI_PRINTF_LIKE(3);
    632 
    633 
    634 /*
    635  * Debug output
    636  */
    637 #ifdef ACPI_DEBUG_OUTPUT
    638 
    639 void ACPI_INTERNAL_VAR_XFACE
    640 AcpiDebugPrint (
    641     UINT32                  RequestedDebugLevel,
    642     UINT32                  LineNumber,
    643     const char              *FunctionName,
    644     const char              *ModuleName,
    645     UINT32                  ComponentId,
    646     const char              *Format,
    647     ...) ACPI_PRINTF_LIKE(6);
    648 
    649 void ACPI_INTERNAL_VAR_XFACE
    650 AcpiDebugPrintRaw (
    651     UINT32                  RequestedDebugLevel,
    652     UINT32                  LineNumber,
    653     const char              *FunctionName,
    654     const char              *ModuleName,
    655     UINT32                  ComponentId,
    656     const char              *Format,
    657     ...) ACPI_PRINTF_LIKE(6);
    658 #endif
    659 
    660 #endif /* __ACXFACE_H__ */
    661