Home | History | Annotate | Line # | Download | only in include
acpiosxf.h revision 1.2
      1 
      2 /******************************************************************************
      3  *
      4  * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL).  These
      5  *                    interfaces must be implemented by OSL to interface the
      6  *                    ACPI components to the host operating system.
      7  *
      8  *****************************************************************************/
      9 
     10 
     11 /******************************************************************************
     12  *
     13  * 1. Copyright Notice
     14  *
     15  * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
     16  * All rights reserved.
     17  *
     18  * 2. License
     19  *
     20  * 2.1. This is your license from Intel Corp. under its intellectual property
     21  * rights.  You may have additional license terms from the party that provided
     22  * you this software, covering your right to use that party's intellectual
     23  * property rights.
     24  *
     25  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
     26  * copy of the source code appearing in this file ("Covered Code") an
     27  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
     28  * base code distributed originally by Intel ("Original Intel Code") to copy,
     29  * make derivatives, distribute, use and display any portion of the Covered
     30  * Code in any form, with the right to sublicense such rights; and
     31  *
     32  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
     33  * license (with the right to sublicense), under only those claims of Intel
     34  * patents that are infringed by the Original Intel Code, to make, use, sell,
     35  * offer to sell, and import the Covered Code and derivative works thereof
     36  * solely to the minimum extent necessary to exer
     37  se the above copyright
     38  * license, and in no event shall the patent license extend to any additions
     39  * to or modifications of the Original Intel Code.  No other license or right
     40  * is granted directly or by implication, estoppel or otherwise;
     41  *
     42  * The above copyright and patent license is granted only if the following
     43  * conditions are met:
     44  *
     45  * 3. Conditions
     46  *
     47  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
     48  * Redistribution of source code of any substantial portion of the Covered
     49  * Code or modification with rights to further distribute source must include
     50  * the above Copyright Notice, the above License, this list of Conditions,
     51  * and the following Disclaimer and Export Compliance provision.  In addition,
     52  * Licensee must cause all Covered Code to which Licensee contributes to
     53  * contain a file documenting the changes Licensee made to create that Covered
     54  * Code and the date of any change.  Licensee must include in that file the
     55  * documentation of any changes made by any predecessor Licensee.  Licensee
     56  * must include a prominent statement that the modification is derived,
     57  * directly or indirectly, from Original Intel Code.
     58  *
     59  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
     60  * Redistribution of source code of any substantial portion of the Covered
     61  * Code or modification without rights to further distribute source must
     62  * include the following Disclaimer and Export Compliance provision in the
     63  * documentation and/or other materials provided with distribution.  In
     64  * addition, Licensee may not authorize further sublicense of source of any
     65  * portion of the Covered Code, and must include terms to the effect that the
     66  * license from Licensee to its licensee is limited to the intellectual
     67  * property embodied in the software Licensee provides to its licensee, and
     68  * not to intellectual property embodied in modifications its licensee may
     69  * make.
     70  *
     71  * 3.3. Redistribution of Executable. Redistribution in executable form of any
     72  * substantial portion of the Covered Code or modification must reproduce the
     73  * above Copyright Notice, and the following Disclaimer and Export Compliance
     74  * provision in the documentation and/or other materials provided with the
     75  * distribution.
     76  *
     77  * 3.4. Intel retains all right, title, and interest in and to the Original
     78  * Intel Code.
     79  *
     80  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
     81  * Intel shall be used in advertising or otherwise to promote the sale, use or
     82  * other dealings in products derived from or relating to the Covered Code
     83  * without prior written authorization from Intel.
     84  *
     85  * 4. Disclaimer and Export Compliance
     86  *
     87  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
     88  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
     89  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
     90  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
     91  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
     92  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
     93  * PARTICULAR PURPOSE.
     94  *
     95  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
     96  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
     97  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
     98  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
     99  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
    100  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
    101  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
    102  * LIMITED REMEDY.
    103  *
    104  * 4.3. Licensee shall not export, either directly or indirectly, any of this
    105  * software or system incorporating such software without first obtaining any
    106  * required license or other approval from the U. S. Department of Commerce or
    107  * any other agency or department of the United States Government.  In the
    108  * event Licensee exports any such software from the United States or
    109  * re-exports any such software from a foreign destination, Licensee shall
    110  * ensure that the distribution and export/re-export of the software is in
    111  * compliance with all laws, regulations, orders, or other restrictions of the
    112  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
    113  * any of its subsidiaries will export/re-export any technical data, process,
    114  * software, or service, directly or indirectly, to any country for which the
    115  * United States government or any agency thereof requires an export license,
    116  * other governmental approval, or letter of assurance, without first obtaining
    117  * such license, approval or letter.
    118  *
    119  *****************************************************************************/
    120 
    121 #ifndef __ACPIOSXF_H__
    122 #define __ACPIOSXF_H__
    123 
    124 #include "platform/acenv.h"
    125 #include "actypes.h"
    126 
    127 
    128 /* Types for AcpiOsExecute */
    129 
    130 typedef enum
    131 {
    132     OSL_GLOBAL_LOCK_HANDLER,
    133     OSL_NOTIFY_HANDLER,
    134     OSL_GPE_HANDLER,
    135     OSL_DEBUGGER_THREAD,
    136     OSL_EC_POLL_HANDLER,
    137     OSL_EC_BURST_HANDLER
    138 
    139 } ACPI_EXECUTE_TYPE;
    140 
    141 #define ACPI_NO_UNIT_LIMIT          ((UINT32) -1)
    142 #define ACPI_MUTEX_SEM              1
    143 
    144 
    145 /* Functions for AcpiOsSignal */
    146 
    147 #define ACPI_SIGNAL_FATAL           0
    148 #define ACPI_SIGNAL_BREAKPOINT      1
    149 
    150 typedef struct acpi_signal_fatal_info
    151 {
    152     UINT32                  Type;
    153     UINT32                  Code;
    154     UINT32                  Argument;
    155 
    156 } ACPI_SIGNAL_FATAL_INFO;
    157 
    158 
    159 /*
    160  * OSL Initialization and shutdown primitives
    161  */
    162 ACPI_STATUS
    163 AcpiOsInitialize (
    164     void);
    165 
    166 ACPI_STATUS
    167 AcpiOsTerminate (
    168     void);
    169 
    170 
    171 /*
    172  * ACPI Table interfaces
    173  */
    174 ACPI_PHYSICAL_ADDRESS
    175 AcpiOsGetRootPointer (
    176     void);
    177 
    178 ACPI_STATUS
    179 AcpiOsPredefinedOverride (
    180     const ACPI_PREDEFINED_NAMES *InitVal,
    181     ACPI_STRING                 *NewVal);
    182 
    183 ACPI_STATUS
    184 AcpiOsTableOverride (
    185     ACPI_TABLE_HEADER       *ExistingTable,
    186     ACPI_TABLE_HEADER       **NewTable);
    187 
    188 
    189 /*
    190  * Spinlock primitives
    191  */
    192 ACPI_STATUS
    193 AcpiOsCreateLock (
    194     ACPI_SPINLOCK           *OutHandle);
    195 
    196 void
    197 AcpiOsDeleteLock (
    198     ACPI_SPINLOCK           Handle);
    199 
    200 ACPI_CPU_FLAGS
    201 AcpiOsAcquireLock (
    202     ACPI_SPINLOCK           Handle);
    203 
    204 void
    205 AcpiOsReleaseLock (
    206     ACPI_SPINLOCK           Handle,
    207     ACPI_CPU_FLAGS          Flags);
    208 
    209 
    210 /*
    211  * Semaphore primitives
    212  */
    213 ACPI_STATUS
    214 AcpiOsCreateSemaphore (
    215     UINT32                  MaxUnits,
    216     UINT32                  InitialUnits,
    217     ACPI_SEMAPHORE          *OutHandle);
    218 
    219 ACPI_STATUS
    220 AcpiOsDeleteSemaphore (
    221     ACPI_SEMAPHORE          Handle);
    222 
    223 ACPI_STATUS
    224 AcpiOsWaitSemaphore (
    225     ACPI_SEMAPHORE          Handle,
    226     UINT32                  Units,
    227     UINT16                  Timeout);
    228 
    229 ACPI_STATUS
    230 AcpiOsSignalSemaphore (
    231     ACPI_SEMAPHORE          Handle,
    232     UINT32                  Units);
    233 
    234 
    235 /*
    236  * Mutex primitives. May be configured to use semaphores instead via
    237  * ACPI_MUTEX_TYPE (see platform/acenv.h)
    238  */
    239 #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
    240 
    241 ACPI_STATUS
    242 AcpiOsCreateMutex (
    243     ACPI_MUTEX              *OutHandle);
    244 
    245 void
    246 AcpiOsDeleteMutex (
    247     ACPI_MUTEX              Handle);
    248 
    249 ACPI_STATUS
    250 AcpiOsAcquireMutex (
    251     ACPI_MUTEX              Handle,
    252     UINT16                  Timeout);
    253 
    254 void
    255 AcpiOsReleaseMutex (
    256     ACPI_MUTEX              Handle);
    257 #endif
    258 
    259 
    260 /*
    261  * Memory allocation and mapping
    262  */
    263 void *
    264 AcpiOsAllocate (
    265     ACPI_SIZE               Size);
    266 
    267 void
    268 AcpiOsFree (
    269     void *                  Memory);
    270 
    271 void *
    272 AcpiOsMapMemory (
    273     ACPI_PHYSICAL_ADDRESS   Where,
    274     ACPI_SIZE               Length);
    275 
    276 void
    277 AcpiOsUnmapMemory (
    278     void                    *LogicalAddress,
    279     ACPI_SIZE               Size);
    280 
    281 ACPI_STATUS
    282 AcpiOsGetPhysicalAddress (
    283     void                    *LogicalAddress,
    284     ACPI_PHYSICAL_ADDRESS   *PhysicalAddress);
    285 
    286 
    287 /*
    288  * Memory/Object Cache
    289  */
    290 ACPI_STATUS
    291 AcpiOsCreateCache (
    292     const char              *CacheName,
    293     UINT16                  ObjectSize,
    294     UINT16                  MaxDepth,
    295     ACPI_CACHE_T            **ReturnCache);
    296 
    297 ACPI_STATUS
    298 AcpiOsDeleteCache (
    299     ACPI_CACHE_T            *Cache);
    300 
    301 ACPI_STATUS
    302 AcpiOsPurgeCache (
    303     ACPI_CACHE_T            *Cache);
    304 
    305 void *
    306 AcpiOsAcquireObject (
    307     ACPI_CACHE_T            *Cache);
    308 
    309 ACPI_STATUS
    310 AcpiOsReleaseObject (
    311     ACPI_CACHE_T            *Cache,
    312     void                    *Object);
    313 
    314 
    315 /*
    316  * Interrupt handlers
    317  */
    318 ACPI_STATUS
    319 AcpiOsInstallInterruptHandler (
    320     UINT32                  InterruptNumber,
    321     ACPI_OSD_HANDLER        ServiceRoutine,
    322     void                    *Context);
    323 
    324 ACPI_STATUS
    325 AcpiOsRemoveInterruptHandler (
    326     UINT32                  InterruptNumber,
    327     ACPI_OSD_HANDLER        ServiceRoutine);
    328 
    329 
    330 /*
    331  * Threads and Scheduling
    332  */
    333 ACPI_THREAD_ID
    334 AcpiOsGetThreadId (
    335     void);
    336 
    337 ACPI_STATUS
    338 AcpiOsExecute (
    339     ACPI_EXECUTE_TYPE       Type,
    340     ACPI_OSD_EXEC_CALLBACK  Function,
    341     void                    *Context);
    342 
    343 void
    344 AcpiOsWaitEventsComplete (
    345     void                    *Context);
    346 
    347 void
    348 AcpiOsSleep (
    349     UINT64                  Milliseconds);
    350 
    351 void
    352 AcpiOsStall (
    353     UINT32                  Microseconds);
    354 
    355 
    356 /*
    357  * Platform and hardware-independent I/O interfaces
    358  */
    359 ACPI_STATUS
    360 AcpiOsReadPort (
    361     ACPI_IO_ADDRESS         Address,
    362     UINT32                  *Value,
    363     UINT32                  Width);
    364 
    365 ACPI_STATUS
    366 AcpiOsWritePort (
    367     ACPI_IO_ADDRESS         Address,
    368     UINT32                  Value,
    369     UINT32                  Width);
    370 
    371 
    372 /*
    373  * Platform and hardware-independent physical memory interfaces
    374  */
    375 ACPI_STATUS
    376 AcpiOsReadMemory (
    377     ACPI_PHYSICAL_ADDRESS   Address,
    378     UINT32                  *Value,
    379     UINT32                  Width);
    380 
    381 ACPI_STATUS
    382 AcpiOsWriteMemory (
    383     ACPI_PHYSICAL_ADDRESS   Address,
    384     UINT32                  Value,
    385     UINT32                  Width);
    386 
    387 
    388 /*
    389  * Platform and hardware-independent PCI configuration space access
    390  * Note: Can't use "Register" as a parameter, changed to "Reg" --
    391  * certain compilers complain.
    392  */
    393 ACPI_STATUS
    394 AcpiOsReadPciConfiguration (
    395     ACPI_PCI_ID             *PciId,
    396     UINT32                  Reg,
    397     void                    *Value,
    398     UINT32                  Width);
    399 
    400 ACPI_STATUS
    401 AcpiOsWritePciConfiguration (
    402     ACPI_PCI_ID             *PciId,
    403     UINT32                  Reg,
    404     UINT64                  Value,
    405     UINT32                  Width);
    406 
    407 
    408 /*
    409  * Interim function needed for PCI IRQ routing
    410  */
    411 void
    412 AcpiOsDerivePciId(
    413     ACPI_HANDLE             Device,
    414     ACPI_HANDLE             Region,
    415     ACPI_PCI_ID             **PciId);
    416 
    417 
    418 /*
    419  * Miscellaneous
    420  */
    421 ACPI_STATUS
    422 AcpiOsValidateInterface (
    423     char                    *Interface);
    424 
    425 BOOLEAN
    426 AcpiOsReadable (
    427     void                    *Pointer,
    428     ACPI_SIZE               Length);
    429 
    430 BOOLEAN
    431 AcpiOsWritable (
    432     void                    *Pointer,
    433     ACPI_SIZE               Length);
    434 
    435 UINT64
    436 AcpiOsGetTimer (
    437     void);
    438 
    439 ACPI_STATUS
    440 AcpiOsSignal (
    441     UINT32                  Function,
    442     void                    *Info);
    443 
    444 
    445 /*
    446  * Debug print routines
    447  */
    448 void ACPI_INTERNAL_VAR_XFACE
    449 AcpiOsPrintf (
    450     const char              *Format,
    451     ...);
    452 
    453 void
    454 AcpiOsVprintf (
    455     const char              *Format,
    456     va_list                 Args);
    457 
    458 void
    459 AcpiOsRedirectOutput (
    460     void                    *Destination);
    461 
    462 
    463 /*
    464  * Debug input
    465  */
    466 UINT32
    467 AcpiOsGetLine (
    468     char                    *Buffer);
    469 
    470 
    471 /*
    472  * Directory manipulation
    473  */
    474 void *
    475 AcpiOsOpenDirectory (
    476     char                    *Pathname,
    477     char                    *WildcardSpec,
    478     char                    RequestedFileType);
    479 
    480 /* RequesteFileType values */
    481 
    482 #define REQUEST_FILE_ONLY                   0
    483 #define REQUEST_DIR_ONLY                    1
    484 
    485 
    486 char *
    487 AcpiOsGetNextFilename (
    488     void                    *DirHandle);
    489 
    490 void
    491 AcpiOsCloseDirectory (
    492     void                    *DirHandle);
    493 
    494 
    495 #endif /* __ACPIOSXF_H__ */
    496