Home | History | Annotate | Line # | Download | only in include
acpiosxf.h revision 1.3
      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  * Copyright (C) 2000 - 2011, Intel Corp.
     13  * All rights reserved.
     14  *
     15  * Redistribution and use in source and binary forms, with or without
     16  * modification, are permitted provided that the following conditions
     17  * are met:
     18  * 1. Redistributions of source code must retain the above copyright
     19  *    notice, this list of conditions, and the following disclaimer,
     20  *    without modification.
     21  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     22  *    substantially similar to the "NO WARRANTY" disclaimer below
     23  *    ("Disclaimer") and any redistribution must be conditioned upon
     24  *    including a substantially similar Disclaimer requirement for further
     25  *    binary redistribution.
     26  * 3. Neither the names of the above-listed copyright holders nor the names
     27  *    of any contributors may be used to endorse or promote products derived
     28  *    from this software without specific prior written permission.
     29  *
     30  * Alternatively, this software may be distributed under the terms of the
     31  * GNU General Public License ("GPL") version 2 as published by the Free
     32  * Software Foundation.
     33  *
     34  * NO WARRANTY
     35  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     36  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     37  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     38  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     39  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     40  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     41  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     42  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     43  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     44  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     45  * POSSIBILITY OF SUCH DAMAGES.
     46  */
     47 
     48 #ifndef __ACPIOSXF_H__
     49 #define __ACPIOSXF_H__
     50 
     51 #include "platform/acenv.h"
     52 #include "actypes.h"
     53 
     54 
     55 /* Types for AcpiOsExecute */
     56 
     57 typedef enum
     58 {
     59     OSL_GLOBAL_LOCK_HANDLER,
     60     OSL_NOTIFY_HANDLER,
     61     OSL_GPE_HANDLER,
     62     OSL_DEBUGGER_THREAD,
     63     OSL_EC_POLL_HANDLER,
     64     OSL_EC_BURST_HANDLER
     65 
     66 } ACPI_EXECUTE_TYPE;
     67 
     68 #define ACPI_NO_UNIT_LIMIT          ((UINT32) -1)
     69 #define ACPI_MUTEX_SEM              1
     70 
     71 
     72 /* Functions for AcpiOsSignal */
     73 
     74 #define ACPI_SIGNAL_FATAL           0
     75 #define ACPI_SIGNAL_BREAKPOINT      1
     76 
     77 typedef struct acpi_signal_fatal_info
     78 {
     79     UINT32                  Type;
     80     UINT32                  Code;
     81     UINT32                  Argument;
     82 
     83 } ACPI_SIGNAL_FATAL_INFO;
     84 
     85 
     86 /*
     87  * OSL Initialization and shutdown primitives
     88  */
     89 ACPI_STATUS
     90 AcpiOsInitialize (
     91     void);
     92 
     93 ACPI_STATUS
     94 AcpiOsTerminate (
     95     void);
     96 
     97 
     98 /*
     99  * ACPI Table interfaces
    100  */
    101 ACPI_PHYSICAL_ADDRESS
    102 AcpiOsGetRootPointer (
    103     void);
    104 
    105 ACPI_STATUS
    106 AcpiOsPredefinedOverride (
    107     const ACPI_PREDEFINED_NAMES *InitVal,
    108     ACPI_STRING                 *NewVal);
    109 
    110 ACPI_STATUS
    111 AcpiOsTableOverride (
    112     ACPI_TABLE_HEADER       *ExistingTable,
    113     ACPI_TABLE_HEADER       **NewTable);
    114 
    115 
    116 /*
    117  * Spinlock primitives
    118  */
    119 ACPI_STATUS
    120 AcpiOsCreateLock (
    121     ACPI_SPINLOCK           *OutHandle);
    122 
    123 void
    124 AcpiOsDeleteLock (
    125     ACPI_SPINLOCK           Handle);
    126 
    127 ACPI_CPU_FLAGS
    128 AcpiOsAcquireLock (
    129     ACPI_SPINLOCK           Handle);
    130 
    131 void
    132 AcpiOsReleaseLock (
    133     ACPI_SPINLOCK           Handle,
    134     ACPI_CPU_FLAGS          Flags);
    135 
    136 
    137 /*
    138  * Semaphore primitives
    139  */
    140 ACPI_STATUS
    141 AcpiOsCreateSemaphore (
    142     UINT32                  MaxUnits,
    143     UINT32                  InitialUnits,
    144     ACPI_SEMAPHORE          *OutHandle);
    145 
    146 ACPI_STATUS
    147 AcpiOsDeleteSemaphore (
    148     ACPI_SEMAPHORE          Handle);
    149 
    150 ACPI_STATUS
    151 AcpiOsWaitSemaphore (
    152     ACPI_SEMAPHORE          Handle,
    153     UINT32                  Units,
    154     UINT16                  Timeout);
    155 
    156 ACPI_STATUS
    157 AcpiOsSignalSemaphore (
    158     ACPI_SEMAPHORE          Handle,
    159     UINT32                  Units);
    160 
    161 
    162 /*
    163  * Mutex primitives. May be configured to use semaphores instead via
    164  * ACPI_MUTEX_TYPE (see platform/acenv.h)
    165  */
    166 #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
    167 
    168 ACPI_STATUS
    169 AcpiOsCreateMutex (
    170     ACPI_MUTEX              *OutHandle);
    171 
    172 void
    173 AcpiOsDeleteMutex (
    174     ACPI_MUTEX              Handle);
    175 
    176 ACPI_STATUS
    177 AcpiOsAcquireMutex (
    178     ACPI_MUTEX              Handle,
    179     UINT16                  Timeout);
    180 
    181 void
    182 AcpiOsReleaseMutex (
    183     ACPI_MUTEX              Handle);
    184 #endif
    185 
    186 
    187 /*
    188  * Memory allocation and mapping
    189  */
    190 void *
    191 AcpiOsAllocate (
    192     ACPI_SIZE               Size);
    193 
    194 void
    195 AcpiOsFree (
    196     void *                  Memory);
    197 
    198 void *
    199 AcpiOsMapMemory (
    200     ACPI_PHYSICAL_ADDRESS   Where,
    201     ACPI_SIZE               Length);
    202 
    203 void
    204 AcpiOsUnmapMemory (
    205     void                    *LogicalAddress,
    206     ACPI_SIZE               Size);
    207 
    208 ACPI_STATUS
    209 AcpiOsGetPhysicalAddress (
    210     void                    *LogicalAddress,
    211     ACPI_PHYSICAL_ADDRESS   *PhysicalAddress);
    212 
    213 
    214 /*
    215  * Memory/Object Cache
    216  */
    217 ACPI_STATUS
    218 AcpiOsCreateCache (
    219     const char              *CacheName,
    220     UINT16                  ObjectSize,
    221     UINT16                  MaxDepth,
    222     ACPI_CACHE_T            **ReturnCache);
    223 
    224 ACPI_STATUS
    225 AcpiOsDeleteCache (
    226     ACPI_CACHE_T            *Cache);
    227 
    228 ACPI_STATUS
    229 AcpiOsPurgeCache (
    230     ACPI_CACHE_T            *Cache);
    231 
    232 void *
    233 AcpiOsAcquireObject (
    234     ACPI_CACHE_T            *Cache);
    235 
    236 ACPI_STATUS
    237 AcpiOsReleaseObject (
    238     ACPI_CACHE_T            *Cache,
    239     void                    *Object);
    240 
    241 
    242 /*
    243  * Interrupt handlers
    244  */
    245 ACPI_STATUS
    246 AcpiOsInstallInterruptHandler (
    247     UINT32                  InterruptNumber,
    248     ACPI_OSD_HANDLER        ServiceRoutine,
    249     void                    *Context);
    250 
    251 ACPI_STATUS
    252 AcpiOsRemoveInterruptHandler (
    253     UINT32                  InterruptNumber,
    254     ACPI_OSD_HANDLER        ServiceRoutine);
    255 
    256 
    257 /*
    258  * Threads and Scheduling
    259  */
    260 ACPI_THREAD_ID
    261 AcpiOsGetThreadId (
    262     void);
    263 
    264 ACPI_STATUS
    265 AcpiOsExecute (
    266     ACPI_EXECUTE_TYPE       Type,
    267     ACPI_OSD_EXEC_CALLBACK  Function,
    268     void                    *Context);
    269 
    270 void
    271 AcpiOsWaitEventsComplete (
    272     void                    *Context);
    273 
    274 void
    275 AcpiOsSleep (
    276     UINT64                  Milliseconds);
    277 
    278 void
    279 AcpiOsStall (
    280     UINT32                  Microseconds);
    281 
    282 
    283 /*
    284  * Platform and hardware-independent I/O interfaces
    285  */
    286 ACPI_STATUS
    287 AcpiOsReadPort (
    288     ACPI_IO_ADDRESS         Address,
    289     UINT32                  *Value,
    290     UINT32                  Width);
    291 
    292 ACPI_STATUS
    293 AcpiOsWritePort (
    294     ACPI_IO_ADDRESS         Address,
    295     UINT32                  Value,
    296     UINT32                  Width);
    297 
    298 
    299 /*
    300  * Platform and hardware-independent physical memory interfaces
    301  */
    302 ACPI_STATUS
    303 AcpiOsReadMemory (
    304     ACPI_PHYSICAL_ADDRESS   Address,
    305     UINT32                  *Value,
    306     UINT32                  Width);
    307 
    308 ACPI_STATUS
    309 AcpiOsWriteMemory (
    310     ACPI_PHYSICAL_ADDRESS   Address,
    311     UINT32                  Value,
    312     UINT32                  Width);
    313 
    314 
    315 /*
    316  * Platform and hardware-independent PCI configuration space access
    317  * Note: Can't use "Register" as a parameter, changed to "Reg" --
    318  * certain compilers complain.
    319  */
    320 ACPI_STATUS
    321 AcpiOsReadPciConfiguration (
    322     ACPI_PCI_ID             *PciId,
    323     UINT32                  Reg,
    324     UINT64                  *Value,
    325     UINT32                  Width);
    326 
    327 ACPI_STATUS
    328 AcpiOsWritePciConfiguration (
    329     ACPI_PCI_ID             *PciId,
    330     UINT32                  Reg,
    331     UINT64                  Value,
    332     UINT32                  Width);
    333 
    334 
    335 /*
    336  * Miscellaneous
    337  */
    338 BOOLEAN
    339 AcpiOsReadable (
    340     void                    *Pointer,
    341     ACPI_SIZE               Length);
    342 
    343 BOOLEAN
    344 AcpiOsWritable (
    345     void                    *Pointer,
    346     ACPI_SIZE               Length);
    347 
    348 UINT64
    349 AcpiOsGetTimer (
    350     void);
    351 
    352 ACPI_STATUS
    353 AcpiOsSignal (
    354     UINT32                  Function,
    355     void                    *Info);
    356 
    357 
    358 /*
    359  * Debug print routines
    360  */
    361 void ACPI_INTERNAL_VAR_XFACE
    362 AcpiOsPrintf (
    363     const char              *Format,
    364     ...);
    365 
    366 void
    367 AcpiOsVprintf (
    368     const char              *Format,
    369     va_list                 Args);
    370 
    371 void
    372 AcpiOsRedirectOutput (
    373     void                    *Destination);
    374 
    375 
    376 /*
    377  * Debug input
    378  */
    379 UINT32
    380 AcpiOsGetLine (
    381     char                    *Buffer);
    382 
    383 
    384 /*
    385  * Directory manipulation
    386  */
    387 void *
    388 AcpiOsOpenDirectory (
    389     char                    *Pathname,
    390     char                    *WildcardSpec,
    391     char                    RequestedFileType);
    392 
    393 /* RequesteFileType values */
    394 
    395 #define REQUEST_FILE_ONLY                   0
    396 #define REQUEST_DIR_ONLY                    1
    397 
    398 
    399 char *
    400 AcpiOsGetNextFilename (
    401     void                    *DirHandle);
    402 
    403 void
    404 AcpiOsCloseDirectory (
    405     void                    *DirHandle);
    406 
    407 
    408 #endif /* __ACPIOSXF_H__ */
    409