acpiosxf.h revision 231844
1122509Sume 2122509Sume/****************************************************************************** 367957Skris * 4122509Sume * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These 5122509Sume * interfaces must be implemented by OSL to interface the 6122509Sume * ACPI components to the host operating system. 7122509Sume * 8122509Sume *****************************************************************************/ 9122509Sume 10122509Sume 11122509Sume/* 12122509Sume * Copyright (C) 2000 - 2012, Intel Corp. 13122509Sume * All rights reserved. 14122509Sume * 15122509Sume * Redistribution and use in source and binary forms, with or without 16122509Sume * modification, are permitted provided that the following conditions 17122509Sume * are met: 18122509Sume * 1. Redistributions of source code must retain the above copyright 19122509Sume * notice, this list of conditions, and the following disclaimer, 20122509Sume * without modification. 21122509Sume * 2. Redistributions in binary form must reproduce at minimum a disclaimer 22122509Sume * substantially similar to the "NO WARRANTY" disclaimer below 23122509Sume * ("Disclaimer") and any redistribution must be conditioned upon 24122509Sume * including a substantially similar Disclaimer requirement for further 25122509Sume * binary redistribution. 26122509Sume * 3. Neither the names of the above-listed copyright holders nor the names 27122509Sume * of any contributors may be used to endorse or promote products derived 28122509Sume * from this software without specific prior written permission. 29122509Sume * 30122509Sume * Alternatively, this software may be distributed under the terms of the 31122509Sume * GNU General Public License ("GPL") version 2 as published by the Free 32122509Sume * Software Foundation. 33143420Sume * 34143420Sume * NO WARRANTY 35143420Sume * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 36122509Sume * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 37122509Sume * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 38122509Sume * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 39122509Sume * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 40122509Sume * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 41122509Sume * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 42122509Sume * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 43122509Sume * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 44122509Sume * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 45122509Sume * POSSIBILITY OF SUCH DAMAGES. 46122509Sume */ 47122509Sume 48143420Sume#ifndef __ACPIOSXF_H__ 49143420Sume#define __ACPIOSXF_H__ 50143420Sume 51143420Sume#include <contrib/dev/acpica/include/platform/acenv.h> 52143420Sume#include <contrib/dev/acpica/include/actypes.h> 53143420Sume 54143420Sume 55122509Sume/* Types for AcpiOsExecute */ 56 57typedef 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 77typedef 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 */ 89ACPI_STATUS 90AcpiOsInitialize ( 91 void); 92 93ACPI_STATUS 94AcpiOsTerminate ( 95 void); 96 97 98/* 99 * ACPI Table interfaces 100 */ 101ACPI_PHYSICAL_ADDRESS 102AcpiOsGetRootPointer ( 103 void); 104 105ACPI_STATUS 106AcpiOsPredefinedOverride ( 107 const ACPI_PREDEFINED_NAMES *InitVal, 108 ACPI_STRING *NewVal); 109 110ACPI_STATUS 111AcpiOsTableOverride ( 112 ACPI_TABLE_HEADER *ExistingTable, 113 ACPI_TABLE_HEADER **NewTable); 114 115ACPI_STATUS 116AcpiOsPhysicalTableOverride ( 117 ACPI_TABLE_HEADER *ExistingTable, 118 ACPI_PHYSICAL_ADDRESS *NewAddress, 119 UINT32 *NewTableLength); 120 121 122/* 123 * Spinlock primitives 124 */ 125ACPI_STATUS 126AcpiOsCreateLock ( 127 ACPI_SPINLOCK *OutHandle); 128 129void 130AcpiOsDeleteLock ( 131 ACPI_SPINLOCK Handle); 132 133ACPI_CPU_FLAGS 134AcpiOsAcquireLock ( 135 ACPI_SPINLOCK Handle); 136 137void 138AcpiOsReleaseLock ( 139 ACPI_SPINLOCK Handle, 140 ACPI_CPU_FLAGS Flags); 141 142 143/* 144 * Semaphore primitives 145 */ 146ACPI_STATUS 147AcpiOsCreateSemaphore ( 148 UINT32 MaxUnits, 149 UINT32 InitialUnits, 150 ACPI_SEMAPHORE *OutHandle); 151 152ACPI_STATUS 153AcpiOsDeleteSemaphore ( 154 ACPI_SEMAPHORE Handle); 155 156ACPI_STATUS 157AcpiOsWaitSemaphore ( 158 ACPI_SEMAPHORE Handle, 159 UINT32 Units, 160 UINT16 Timeout); 161 162ACPI_STATUS 163AcpiOsSignalSemaphore ( 164 ACPI_SEMAPHORE Handle, 165 UINT32 Units); 166 167 168/* 169 * Mutex primitives. May be configured to use semaphores instead via 170 * ACPI_MUTEX_TYPE (see platform/acenv.h) 171 */ 172#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) 173 174ACPI_STATUS 175AcpiOsCreateMutex ( 176 ACPI_MUTEX *OutHandle); 177 178void 179AcpiOsDeleteMutex ( 180 ACPI_MUTEX Handle); 181 182ACPI_STATUS 183AcpiOsAcquireMutex ( 184 ACPI_MUTEX Handle, 185 UINT16 Timeout); 186 187void 188AcpiOsReleaseMutex ( 189 ACPI_MUTEX Handle); 190#endif 191 192 193/* 194 * Memory allocation and mapping 195 */ 196void * 197AcpiOsAllocate ( 198 ACPI_SIZE Size); 199 200void 201AcpiOsFree ( 202 void * Memory); 203 204void * 205AcpiOsMapMemory ( 206 ACPI_PHYSICAL_ADDRESS Where, 207 ACPI_SIZE Length); 208 209void 210AcpiOsUnmapMemory ( 211 void *LogicalAddress, 212 ACPI_SIZE Size); 213 214ACPI_STATUS 215AcpiOsGetPhysicalAddress ( 216 void *LogicalAddress, 217 ACPI_PHYSICAL_ADDRESS *PhysicalAddress); 218 219 220/* 221 * Memory/Object Cache 222 */ 223ACPI_STATUS 224AcpiOsCreateCache ( 225 char *CacheName, 226 UINT16 ObjectSize, 227 UINT16 MaxDepth, 228 ACPI_CACHE_T **ReturnCache); 229 230ACPI_STATUS 231AcpiOsDeleteCache ( 232 ACPI_CACHE_T *Cache); 233 234ACPI_STATUS 235AcpiOsPurgeCache ( 236 ACPI_CACHE_T *Cache); 237 238void * 239AcpiOsAcquireObject ( 240 ACPI_CACHE_T *Cache); 241 242ACPI_STATUS 243AcpiOsReleaseObject ( 244 ACPI_CACHE_T *Cache, 245 void *Object); 246 247 248/* 249 * Interrupt handlers 250 */ 251ACPI_STATUS 252AcpiOsInstallInterruptHandler ( 253 UINT32 InterruptNumber, 254 ACPI_OSD_HANDLER ServiceRoutine, 255 void *Context); 256 257ACPI_STATUS 258AcpiOsRemoveInterruptHandler ( 259 UINT32 InterruptNumber, 260 ACPI_OSD_HANDLER ServiceRoutine); 261 262 263/* 264 * Threads and Scheduling 265 */ 266ACPI_THREAD_ID 267AcpiOsGetThreadId ( 268 void); 269 270ACPI_STATUS 271AcpiOsExecute ( 272 ACPI_EXECUTE_TYPE Type, 273 ACPI_OSD_EXEC_CALLBACK Function, 274 void *Context); 275 276void 277AcpiOsWaitEventsComplete ( 278 void *Context); 279 280void 281AcpiOsSleep ( 282 UINT64 Milliseconds); 283 284void 285AcpiOsStall ( 286 UINT32 Microseconds); 287 288 289/* 290 * Platform and hardware-independent I/O interfaces 291 */ 292ACPI_STATUS 293AcpiOsReadPort ( 294 ACPI_IO_ADDRESS Address, 295 UINT32 *Value, 296 UINT32 Width); 297 298ACPI_STATUS 299AcpiOsWritePort ( 300 ACPI_IO_ADDRESS Address, 301 UINT32 Value, 302 UINT32 Width); 303 304 305/* 306 * Platform and hardware-independent physical memory interfaces 307 */ 308ACPI_STATUS 309AcpiOsReadMemory ( 310 ACPI_PHYSICAL_ADDRESS Address, 311 UINT64 *Value, 312 UINT32 Width); 313 314ACPI_STATUS 315AcpiOsWriteMemory ( 316 ACPI_PHYSICAL_ADDRESS Address, 317 UINT64 Value, 318 UINT32 Width); 319 320 321/* 322 * Platform and hardware-independent PCI configuration space access 323 * Note: Can't use "Register" as a parameter, changed to "Reg" -- 324 * certain compilers complain. 325 */ 326ACPI_STATUS 327AcpiOsReadPciConfiguration ( 328 ACPI_PCI_ID *PciId, 329 UINT32 Reg, 330 UINT64 *Value, 331 UINT32 Width); 332 333ACPI_STATUS 334AcpiOsWritePciConfiguration ( 335 ACPI_PCI_ID *PciId, 336 UINT32 Reg, 337 UINT64 Value, 338 UINT32 Width); 339 340 341/* 342 * Miscellaneous 343 */ 344BOOLEAN 345AcpiOsReadable ( 346 void *Pointer, 347 ACPI_SIZE Length); 348 349BOOLEAN 350AcpiOsWritable ( 351 void *Pointer, 352 ACPI_SIZE Length); 353 354UINT64 355AcpiOsGetTimer ( 356 void); 357 358ACPI_STATUS 359AcpiOsSignal ( 360 UINT32 Function, 361 void *Info); 362 363 364/* 365 * Debug print routines 366 */ 367void ACPI_INTERNAL_VAR_XFACE 368AcpiOsPrintf ( 369 const char *Format, 370 ...); 371 372void 373AcpiOsVprintf ( 374 const char *Format, 375 va_list Args); 376 377void 378AcpiOsRedirectOutput ( 379 void *Destination); 380 381 382/* 383 * Debug input 384 */ 385ACPI_STATUS 386AcpiOsGetLine ( 387 char *Buffer, 388 UINT32 BufferLength, 389 UINT32 *BytesRead); 390 391 392/* 393 * Directory manipulation 394 */ 395void * 396AcpiOsOpenDirectory ( 397 char *Pathname, 398 char *WildcardSpec, 399 char RequestedFileType); 400 401/* RequesteFileType values */ 402 403#define REQUEST_FILE_ONLY 0 404#define REQUEST_DIR_ONLY 1 405 406 407char * 408AcpiOsGetNextFilename ( 409 void *DirHandle); 410 411void 412AcpiOsCloseDirectory ( 413 void *DirHandle); 414 415 416#endif /* __ACPIOSXF_H__ */ 417