17c478bd9Sstevel@tonic-gate /****************************************************************************** 27c478bd9Sstevel@tonic-gate * 37c478bd9Sstevel@tonic-gate * Name: actypes.h - Common data types for the entire ACPI subsystem 47c478bd9Sstevel@tonic-gate * 57c478bd9Sstevel@tonic-gate *****************************************************************************/ 67c478bd9Sstevel@tonic-gate 726f3cdf0SGordon Ross /* 8*7b1019a6SJerry Jelinek * Copyright (C) 2000 - 2016, Intel Corp. 97c478bd9Sstevel@tonic-gate * All rights reserved. 107c478bd9Sstevel@tonic-gate * 1126f3cdf0SGordon Ross * Redistribution and use in source and binary forms, with or without 1226f3cdf0SGordon Ross * modification, are permitted provided that the following conditions 1326f3cdf0SGordon Ross * are met: 1426f3cdf0SGordon Ross * 1. Redistributions of source code must retain the above copyright 1526f3cdf0SGordon Ross * notice, this list of conditions, and the following disclaimer, 1626f3cdf0SGordon Ross * without modification. 1726f3cdf0SGordon Ross * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1826f3cdf0SGordon Ross * substantially similar to the "NO WARRANTY" disclaimer below 1926f3cdf0SGordon Ross * ("Disclaimer") and any redistribution must be conditioned upon 2026f3cdf0SGordon Ross * including a substantially similar Disclaimer requirement for further 2126f3cdf0SGordon Ross * binary redistribution. 2226f3cdf0SGordon Ross * 3. Neither the names of the above-listed copyright holders nor the names 2326f3cdf0SGordon Ross * of any contributors may be used to endorse or promote products derived 2426f3cdf0SGordon Ross * from this software without specific prior written permission. 257c478bd9Sstevel@tonic-gate * 2626f3cdf0SGordon Ross * Alternatively, this software may be distributed under the terms of the 2726f3cdf0SGordon Ross * GNU General Public License ("GPL") version 2 as published by the Free 2826f3cdf0SGordon Ross * Software Foundation. 297c478bd9Sstevel@tonic-gate * 3026f3cdf0SGordon Ross * NO WARRANTY 3126f3cdf0SGordon Ross * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 3226f3cdf0SGordon Ross * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3326f3cdf0SGordon Ross * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 3426f3cdf0SGordon Ross * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3526f3cdf0SGordon Ross * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3626f3cdf0SGordon Ross * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3726f3cdf0SGordon Ross * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3826f3cdf0SGordon Ross * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 3926f3cdf0SGordon Ross * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 4026f3cdf0SGordon Ross * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 4126f3cdf0SGordon Ross * POSSIBILITY OF SUCH DAMAGES. 4226f3cdf0SGordon Ross */ 437c478bd9Sstevel@tonic-gate 447c478bd9Sstevel@tonic-gate #ifndef __ACTYPES_H__ 457c478bd9Sstevel@tonic-gate #define __ACTYPES_H__ 467c478bd9Sstevel@tonic-gate 4727f7c583Smyers /* acpisrc:StructDefs -- for acpisrc conversion */ 4827f7c583Smyers 4930082d0cSmyers /* 5030082d0cSmyers * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header 51db2bae30SDana Myers * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of 52db2bae30SDana Myers * 12/2006. 5330082d0cSmyers */ 5430082d0cSmyers #ifndef ACPI_MACHINE_WIDTH 5530082d0cSmyers #error ACPI_MACHINE_WIDTH not defined 5630082d0cSmyers #endif 577c478bd9Sstevel@tonic-gate 587c478bd9Sstevel@tonic-gate /* 597c478bd9Sstevel@tonic-gate * Data type ranges 607c478bd9Sstevel@tonic-gate * Note: These macros are designed to be compiler independent as well as 617c478bd9Sstevel@tonic-gate * working around problems that some 32-bit compilers have with 64-bit 627c478bd9Sstevel@tonic-gate * constants. 637c478bd9Sstevel@tonic-gate */ 647c478bd9Sstevel@tonic-gate #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 657c478bd9Sstevel@tonic-gate #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 667c478bd9Sstevel@tonic-gate #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 677c478bd9Sstevel@tonic-gate #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 687c478bd9Sstevel@tonic-gate #define ACPI_ASCII_MAX 0x7F 697c478bd9Sstevel@tonic-gate 707c478bd9Sstevel@tonic-gate 717c478bd9Sstevel@tonic-gate /* 7230082d0cSmyers * Architecture-specific ACPICA Subsystem Data Types 7330082d0cSmyers * 7430082d0cSmyers * The goal of these types is to provide source code portability across 7530082d0cSmyers * 16-bit, 32-bit, and 64-bit targets. 7630082d0cSmyers * 7730082d0cSmyers * 1) The following types are of fixed size for all targets (16/32/64): 7830082d0cSmyers * 7930082d0cSmyers * BOOLEAN Logical boolean 8030082d0cSmyers * 8130082d0cSmyers * UINT8 8-bit (1 byte) unsigned value 8230082d0cSmyers * UINT16 16-bit (2 byte) unsigned value 8330082d0cSmyers * UINT32 32-bit (4 byte) unsigned value 8430082d0cSmyers * UINT64 64-bit (8 byte) unsigned value 8530082d0cSmyers * 8630082d0cSmyers * INT16 16-bit (2 byte) signed value 8730082d0cSmyers * INT32 32-bit (4 byte) signed value 8830082d0cSmyers * INT64 64-bit (8 byte) signed value 8930082d0cSmyers * 9030082d0cSmyers * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 9130082d0cSmyers * compiler-dependent header(s) and were introduced because there is no common 9230082d0cSmyers * 64-bit integer type across the various compilation models, as shown in 9330082d0cSmyers * the table below. 9430082d0cSmyers * 9530082d0cSmyers * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 9630082d0cSmyers * char 8 8 8 8 8 8 9730082d0cSmyers * short 16 16 16 16 16 16 9830082d0cSmyers * _int32 32 9930082d0cSmyers * int 32 64 32 32 16 16 10030082d0cSmyers * long 64 64 32 32 32 32 10130082d0cSmyers * long long 64 64 10230082d0cSmyers * pointer 64 64 64 32 32 32 10330082d0cSmyers * 10430082d0cSmyers * Note: ILP64 and LP32 are currently not supported. 10530082d0cSmyers * 10630082d0cSmyers * 10730082d0cSmyers * 2) These types represent the native word size of the target mode of the 10830082d0cSmyers * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 10930082d0cSmyers * usually used for memory allocation, efficient loop counters, and array 11030082d0cSmyers * indexes. The types are similar to the size_t type in the C library and are 11130082d0cSmyers * required because there is no C type that consistently represents the native 112db2bae30SDana Myers * data width. ACPI_SIZE is needed because there is no guarantee that a 113db2bae30SDana Myers * kernel-level C library is present. 11430082d0cSmyers * 11530082d0cSmyers * ACPI_SIZE 16/32/64-bit unsigned value 11630082d0cSmyers * ACPI_NATIVE_INT 16/32/64-bit signed value 1177c478bd9Sstevel@tonic-gate */ 1187c478bd9Sstevel@tonic-gate 11930082d0cSmyers /******************************************************************************* 12030082d0cSmyers * 12130082d0cSmyers * Common types for all compilers, all targets 12230082d0cSmyers * 12330082d0cSmyers ******************************************************************************/ 1247c478bd9Sstevel@tonic-gate 125*7b1019a6SJerry Jelinek #ifndef ACPI_USE_SYSTEM_INTTYPES 126*7b1019a6SJerry Jelinek 12730082d0cSmyers typedef unsigned char BOOLEAN; 12830082d0cSmyers typedef unsigned char UINT8; 12930082d0cSmyers typedef unsigned short UINT16; 130*7b1019a6SJerry Jelinek typedef short INT16; 13130082d0cSmyers typedef COMPILER_DEPENDENT_UINT64 UINT64; 13230082d0cSmyers typedef COMPILER_DEPENDENT_INT64 INT64; 1337c478bd9Sstevel@tonic-gate 134*7b1019a6SJerry Jelinek #endif /* ACPI_USE_SYSTEM_INTTYPES */ 1357c478bd9Sstevel@tonic-gate 13626f3cdf0SGordon Ross /* 13726f3cdf0SGordon Ross * Value returned by AcpiOsGetThreadId. There is no standard "thread_id" 13826f3cdf0SGordon Ross * across operating systems or even the various UNIX systems. Since ACPICA 13926f3cdf0SGordon Ross * only needs the thread ID as a unique thread identifier, we use a UINT64 14026f3cdf0SGordon Ross * as the only common data type - it will accommodate any type of pointer or 14126f3cdf0SGordon Ross * any type of integer. It is up to the host-dependent OSL to cast the 14226f3cdf0SGordon Ross * native thread ID type to a UINT64 (in AcpiOsGetThreadId). 14326f3cdf0SGordon Ross */ 14426f3cdf0SGordon Ross #define ACPI_THREAD_ID UINT64 14526f3cdf0SGordon Ross 14630082d0cSmyers 14730082d0cSmyers /******************************************************************************* 14830082d0cSmyers * 14930082d0cSmyers * Types specific to 64-bit targets 15030082d0cSmyers * 15130082d0cSmyers ******************************************************************************/ 1527c478bd9Sstevel@tonic-gate 1537c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 1547c478bd9Sstevel@tonic-gate 155*7b1019a6SJerry Jelinek #ifndef ACPI_USE_SYSTEM_INTTYPES 1567c478bd9Sstevel@tonic-gate 1577c478bd9Sstevel@tonic-gate typedef unsigned int UINT32; 15830082d0cSmyers typedef int INT32; 1597c478bd9Sstevel@tonic-gate 160*7b1019a6SJerry Jelinek #endif /* ACPI_USE_SYSTEM_INTTYPES */ 1617c478bd9Sstevel@tonic-gate 16230082d0cSmyers 16330082d0cSmyers typedef INT64 ACPI_NATIVE_INT; 164db2bae30SDana Myers typedef UINT64 ACPI_SIZE; 1657c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_IO_ADDRESS; 1667c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_PHYSICAL_ADDRESS; 1677c478bd9Sstevel@tonic-gate 1687c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR ACPI_UINT64_MAX 1697c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX ACPI_UINT64_MAX 17030082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 1717c478bd9Sstevel@tonic-gate 1727c478bd9Sstevel@tonic-gate /* 17330082d0cSmyers * In the case of the Itanium Processor Family (IPF), the hardware does not 17430082d0cSmyers * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 17530082d0cSmyers * to indicate that special precautions must be taken to avoid alignment faults. 17630082d0cSmyers * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 17730082d0cSmyers * 17830082d0cSmyers * Note: EM64T and other X86-64 processors support misaligned transfers, 17930082d0cSmyers * so there is no need to define this flag. 1807c478bd9Sstevel@tonic-gate */ 18130082d0cSmyers #if defined (__IA64__) || defined (__ia64__) 18230082d0cSmyers #define ACPI_MISALIGNMENT_NOT_SUPPORTED 18330082d0cSmyers #endif 1847c478bd9Sstevel@tonic-gate 1857c478bd9Sstevel@tonic-gate 18630082d0cSmyers /******************************************************************************* 18730082d0cSmyers * 18830082d0cSmyers * Types specific to 32-bit targets 18930082d0cSmyers * 19030082d0cSmyers ******************************************************************************/ 19130082d0cSmyers 19230082d0cSmyers #elif ACPI_MACHINE_WIDTH == 32 19330082d0cSmyers 194*7b1019a6SJerry Jelinek #ifndef ACPI_USE_SYSTEM_INTTYPES 19530082d0cSmyers 19630082d0cSmyers typedef unsigned int UINT32; 19730082d0cSmyers typedef int INT32; 19830082d0cSmyers 199*7b1019a6SJerry Jelinek #endif /* ACPI_USE_SYSTEM_INTTYPES */ 20030082d0cSmyers 20130082d0cSmyers 20230082d0cSmyers typedef INT32 ACPI_NATIVE_INT; 203db2bae30SDana Myers typedef UINT32 ACPI_SIZE; 204*7b1019a6SJerry Jelinek 205*7b1019a6SJerry Jelinek #ifdef ACPI_32BIT_PHYSICAL_ADDRESS 206*7b1019a6SJerry Jelinek 207*7b1019a6SJerry Jelinek /* 208*7b1019a6SJerry Jelinek * OSPMs can define this to shrink the size of the structures for 32-bit 209*7b1019a6SJerry Jelinek * none PAE environment. ASL compiler may always define this to generate 210*7b1019a6SJerry Jelinek * 32-bit OSPM compliant tables. 211*7b1019a6SJerry Jelinek */ 21230082d0cSmyers typedef UINT32 ACPI_IO_ADDRESS; 213db2bae30SDana Myers typedef UINT32 ACPI_PHYSICAL_ADDRESS; 21430082d0cSmyers 215*7b1019a6SJerry Jelinek #else /* ACPI_32BIT_PHYSICAL_ADDRESS */ 216*7b1019a6SJerry Jelinek 217*7b1019a6SJerry Jelinek /* 218*7b1019a6SJerry Jelinek * It is reported that, after some calculations, the physical addresses can 219*7b1019a6SJerry Jelinek * wrap over the 32-bit boundary on 32-bit PAE environment. 220*7b1019a6SJerry Jelinek * https://bugzilla.kernel.org/show_bug.cgi?id=87971 221*7b1019a6SJerry Jelinek */ 222*7b1019a6SJerry Jelinek typedef UINT64 ACPI_IO_ADDRESS; 223*7b1019a6SJerry Jelinek typedef UINT64 ACPI_PHYSICAL_ADDRESS; 224*7b1019a6SJerry Jelinek 225*7b1019a6SJerry Jelinek #endif /* ACPI_32BIT_PHYSICAL_ADDRESS */ 226*7b1019a6SJerry Jelinek 22730082d0cSmyers #define ACPI_MAX_PTR ACPI_UINT32_MAX 22830082d0cSmyers #define ACPI_SIZE_MAX ACPI_UINT32_MAX 22930082d0cSmyers 23030082d0cSmyers #else 2317c478bd9Sstevel@tonic-gate 232db2bae30SDana Myers /* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 2337c478bd9Sstevel@tonic-gate 23430082d0cSmyers #error unknown ACPI_MACHINE_WIDTH 23530082d0cSmyers #endif 2367c478bd9Sstevel@tonic-gate 2377c478bd9Sstevel@tonic-gate 23830082d0cSmyers /******************************************************************************* 23930082d0cSmyers * 240aa2aa9a6SDana Myers * OS-dependent types 24130082d0cSmyers * 24227f7c583Smyers * If the defaults below are not appropriate for the host system, they can 243aa2aa9a6SDana Myers * be defined in the OS-specific header, and this will take precedence. 24430082d0cSmyers * 24530082d0cSmyers ******************************************************************************/ 24630082d0cSmyers 24727f7c583Smyers /* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 24827f7c583Smyers 24930082d0cSmyers #ifndef ACPI_CPU_FLAGS 250db2bae30SDana Myers #define ACPI_CPU_FLAGS ACPI_SIZE 25130082d0cSmyers #endif 25230082d0cSmyers 25327f7c583Smyers /* Object returned from AcpiOsCreateCache */ 25427f7c583Smyers 25527f7c583Smyers #ifndef ACPI_CACHE_T 256aa2aa9a6SDana Myers #ifdef ACPI_USE_LOCAL_CACHE 25727f7c583Smyers #define ACPI_CACHE_T ACPI_MEMORY_LIST 258aa2aa9a6SDana Myers #else 259aa2aa9a6SDana Myers #define ACPI_CACHE_T void * 260aa2aa9a6SDana Myers #endif 26127f7c583Smyers #endif 26227f7c583Smyers 263aa2aa9a6SDana Myers /* 264aa2aa9a6SDana Myers * Synchronization objects - Mutexes, Semaphores, and SpinLocks 265aa2aa9a6SDana Myers */ 266aa2aa9a6SDana Myers #if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) 267aa2aa9a6SDana Myers /* 268aa2aa9a6SDana Myers * These macros are used if the host OS does not support a mutex object. 269aa2aa9a6SDana Myers * Map the OSL Mutex interfaces to binary semaphores. 270aa2aa9a6SDana Myers */ 271aa2aa9a6SDana Myers #define ACPI_MUTEX ACPI_SEMAPHORE 272aa2aa9a6SDana Myers #define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) 273aa2aa9a6SDana Myers #define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) 274aa2aa9a6SDana Myers #define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) 275aa2aa9a6SDana Myers #define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) 276aa2aa9a6SDana Myers #endif 277aa2aa9a6SDana Myers 278aa2aa9a6SDana Myers /* Configurable types for synchronization objects */ 279aa2aa9a6SDana Myers 280aa2aa9a6SDana Myers #ifndef ACPI_SPINLOCK 281aa2aa9a6SDana Myers #define ACPI_SPINLOCK void * 282aa2aa9a6SDana Myers #endif 283aa2aa9a6SDana Myers 284aa2aa9a6SDana Myers #ifndef ACPI_SEMAPHORE 285aa2aa9a6SDana Myers #define ACPI_SEMAPHORE void * 286aa2aa9a6SDana Myers #endif 287aa2aa9a6SDana Myers 288aa2aa9a6SDana Myers #ifndef ACPI_MUTEX 289aa2aa9a6SDana Myers #define ACPI_MUTEX void * 290aa2aa9a6SDana Myers #endif 291aa2aa9a6SDana Myers 292aa2aa9a6SDana Myers 293aa2aa9a6SDana Myers /******************************************************************************* 294aa2aa9a6SDana Myers * 295aa2aa9a6SDana Myers * Compiler-dependent types 296aa2aa9a6SDana Myers * 297aa2aa9a6SDana Myers * If the defaults below are not appropriate for the host compiler, they can 298aa2aa9a6SDana Myers * be defined in the compiler-specific header, and this will take precedence. 299aa2aa9a6SDana Myers * 300aa2aa9a6SDana Myers ******************************************************************************/ 301aa2aa9a6SDana Myers 30227f7c583Smyers /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 30327f7c583Smyers 30427f7c583Smyers #ifndef ACPI_UINTPTR_T 30527f7c583Smyers #define ACPI_UINTPTR_T void * 30627f7c583Smyers #endif 30727f7c583Smyers 30830082d0cSmyers /* 30930082d0cSmyers * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 31030082d0cSmyers * some compilers can catch printf format string problems 31130082d0cSmyers */ 31230082d0cSmyers #ifndef ACPI_PRINTF_LIKE 31330082d0cSmyers #define ACPI_PRINTF_LIKE(c) 31430082d0cSmyers #endif 31530082d0cSmyers 31630082d0cSmyers /* 31730082d0cSmyers * Some compilers complain about unused variables. Sometimes we don't want to 31830082d0cSmyers * use all the variables (for example, _AcpiModuleName). This allows us 319*7b1019a6SJerry Jelinek * to tell the compiler in a per-variable manner that a variable 32030082d0cSmyers * is unused 32130082d0cSmyers */ 32230082d0cSmyers #ifndef ACPI_UNUSED_VAR 32330082d0cSmyers #define ACPI_UNUSED_VAR 32430082d0cSmyers #endif 32530082d0cSmyers 32627f7c583Smyers /* 327*7b1019a6SJerry Jelinek * All ACPICA external functions that are available to the rest of the kernel 328*7b1019a6SJerry Jelinek * are tagged with thes macros which can be defined as appropriate for the host. 329*7b1019a6SJerry Jelinek * 330*7b1019a6SJerry Jelinek * Notes: 331*7b1019a6SJerry Jelinek * ACPI_EXPORT_SYMBOL_INIT is used for initialization and termination 332*7b1019a6SJerry Jelinek * interfaces that may need special processing. 333*7b1019a6SJerry Jelinek * ACPI_EXPORT_SYMBOL is used for all other public external functions. 33427f7c583Smyers */ 335*7b1019a6SJerry Jelinek #ifndef ACPI_EXPORT_SYMBOL_INIT 336*7b1019a6SJerry Jelinek #define ACPI_EXPORT_SYMBOL_INIT(Symbol) 337*7b1019a6SJerry Jelinek #endif 338*7b1019a6SJerry Jelinek 33927f7c583Smyers #ifndef ACPI_EXPORT_SYMBOL 34027f7c583Smyers #define ACPI_EXPORT_SYMBOL(Symbol) 34127f7c583Smyers #endif 34227f7c583Smyers 343*7b1019a6SJerry Jelinek /* 344*7b1019a6SJerry Jelinek * Compiler/Clibrary-dependent debug initialization. Used for ACPICA 345*7b1019a6SJerry Jelinek * utilities only. 346*7b1019a6SJerry Jelinek */ 347*7b1019a6SJerry Jelinek #ifndef ACPI_DEBUG_INITIALIZE 348*7b1019a6SJerry Jelinek #define ACPI_DEBUG_INITIALIZE() 349*7b1019a6SJerry Jelinek #endif 350*7b1019a6SJerry Jelinek 351*7b1019a6SJerry Jelinek 352*7b1019a6SJerry Jelinek /******************************************************************************* 353*7b1019a6SJerry Jelinek * 354*7b1019a6SJerry Jelinek * Configuration 355*7b1019a6SJerry Jelinek * 356*7b1019a6SJerry Jelinek ******************************************************************************/ 357*7b1019a6SJerry Jelinek 358*7b1019a6SJerry Jelinek #ifdef ACPI_NO_MEM_ALLOCATIONS 359*7b1019a6SJerry Jelinek 360*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE(a) NULL 361*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_ZEROED(a) NULL 362*7b1019a6SJerry Jelinek #define ACPI_FREE(a) 363*7b1019a6SJerry Jelinek #define ACPI_MEM_TRACKING(a) 364*7b1019a6SJerry Jelinek 365*7b1019a6SJerry Jelinek #else /* ACPI_NO_MEM_ALLOCATIONS */ 366*7b1019a6SJerry Jelinek 367*7b1019a6SJerry Jelinek #ifdef ACPI_DBG_TRACK_ALLOCATIONS 368*7b1019a6SJerry Jelinek /* 369*7b1019a6SJerry Jelinek * Memory allocation tracking (used by AcpiExec to detect memory leaks) 370*7b1019a6SJerry Jelinek */ 371*7b1019a6SJerry Jelinek #define ACPI_MEM_PARAMETERS _COMPONENT, _AcpiModuleName, __LINE__ 372*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE(a) AcpiUtAllocateAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) 373*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_ZEROED(a) AcpiUtAllocateZeroedAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) 374*7b1019a6SJerry Jelinek #define ACPI_FREE(a) AcpiUtFreeAndTrack (a, ACPI_MEM_PARAMETERS) 375*7b1019a6SJerry Jelinek #define ACPI_MEM_TRACKING(a) a 376*7b1019a6SJerry Jelinek 377*7b1019a6SJerry Jelinek #else 378*7b1019a6SJerry Jelinek /* 379*7b1019a6SJerry Jelinek * Normal memory allocation directly via the OS services layer 380*7b1019a6SJerry Jelinek */ 381*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE(a) AcpiOsAllocate ((ACPI_SIZE) (a)) 382*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_ZEROED(a) AcpiOsAllocateZeroed ((ACPI_SIZE) (a)) 383*7b1019a6SJerry Jelinek #define ACPI_FREE(a) AcpiOsFree (a) 384*7b1019a6SJerry Jelinek #define ACPI_MEM_TRACKING(a) 385*7b1019a6SJerry Jelinek 386*7b1019a6SJerry Jelinek #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 387*7b1019a6SJerry Jelinek 388*7b1019a6SJerry Jelinek #endif /* ACPI_NO_MEM_ALLOCATIONS */ 389*7b1019a6SJerry Jelinek 39030082d0cSmyers 391aa2aa9a6SDana Myers /****************************************************************************** 392aa2aa9a6SDana Myers * 393aa2aa9a6SDana Myers * ACPI Specification constants (Do not change unless the specification changes) 394aa2aa9a6SDana Myers * 395aa2aa9a6SDana Myers *****************************************************************************/ 396aa2aa9a6SDana Myers 397aa2aa9a6SDana Myers /* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ 398aa2aa9a6SDana Myers 399aa2aa9a6SDana Myers #define ACPI_MAX_GPE_BLOCKS 2 400aa2aa9a6SDana Myers 401aa2aa9a6SDana Myers /* Default ACPI register widths */ 402aa2aa9a6SDana Myers 403aa2aa9a6SDana Myers #define ACPI_GPE_REGISTER_WIDTH 8 404aa2aa9a6SDana Myers #define ACPI_PM1_REGISTER_WIDTH 16 405aa2aa9a6SDana Myers #define ACPI_PM2_REGISTER_WIDTH 8 406aa2aa9a6SDana Myers #define ACPI_PM_TIMER_WIDTH 32 407*7b1019a6SJerry Jelinek #define ACPI_RESET_REGISTER_WIDTH 8 408aa2aa9a6SDana Myers 409aa2aa9a6SDana Myers /* Names within the namespace are 4 bytes long */ 410aa2aa9a6SDana Myers 411aa2aa9a6SDana Myers #define ACPI_NAME_SIZE 4 412aa2aa9a6SDana Myers #define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ 413aa2aa9a6SDana Myers #define ACPI_PATH_SEPARATOR '.' 414aa2aa9a6SDana Myers 415aa2aa9a6SDana Myers /* Sizes for ACPI table headers */ 416aa2aa9a6SDana Myers 417aa2aa9a6SDana Myers #define ACPI_OEM_ID_SIZE 6 418aa2aa9a6SDana Myers #define ACPI_OEM_TABLE_ID_SIZE 8 419aa2aa9a6SDana Myers 420aa2aa9a6SDana Myers /* ACPI/PNP hardware IDs */ 421aa2aa9a6SDana Myers 422aa2aa9a6SDana Myers #define PCI_ROOT_HID_STRING "PNP0A03" 423aa2aa9a6SDana Myers #define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" 424aa2aa9a6SDana Myers 425aa2aa9a6SDana Myers /* PM Timer ticks per second (HZ) */ 426aa2aa9a6SDana Myers 427*7b1019a6SJerry Jelinek #define ACPI_PM_TIMER_FREQUENCY 3579545 428aa2aa9a6SDana Myers 429aa2aa9a6SDana Myers 43030082d0cSmyers /******************************************************************************* 43130082d0cSmyers * 43230082d0cSmyers * Independent types 43330082d0cSmyers * 43430082d0cSmyers ******************************************************************************/ 4357c478bd9Sstevel@tonic-gate 43630082d0cSmyers /* Logical defines and NULL */ 43730082d0cSmyers 4387c478bd9Sstevel@tonic-gate #ifdef FALSE 4397c478bd9Sstevel@tonic-gate #undef FALSE 4407c478bd9Sstevel@tonic-gate #endif 4417c478bd9Sstevel@tonic-gate #define FALSE (1 == 0) 4427c478bd9Sstevel@tonic-gate 4437c478bd9Sstevel@tonic-gate #ifdef TRUE 4447c478bd9Sstevel@tonic-gate #undef TRUE 4457c478bd9Sstevel@tonic-gate #endif 4467c478bd9Sstevel@tonic-gate #define TRUE (1 == 1) 4477c478bd9Sstevel@tonic-gate 4487c478bd9Sstevel@tonic-gate #ifndef NULL 4497c478bd9Sstevel@tonic-gate #define NULL (void *) 0 4507c478bd9Sstevel@tonic-gate #endif 4517c478bd9Sstevel@tonic-gate 4527c478bd9Sstevel@tonic-gate 4537c478bd9Sstevel@tonic-gate /* 454aa2aa9a6SDana Myers * Miscellaneous types 4557c478bd9Sstevel@tonic-gate */ 4567c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 4577c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 4587c478bd9Sstevel@tonic-gate typedef char * ACPI_STRING; /* Null terminated ASCII string */ 45930082d0cSmyers typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 4607c478bd9Sstevel@tonic-gate 461aa2aa9a6SDana Myers 462*7b1019a6SJerry Jelinek /* Time constants for timer calculations */ 463*7b1019a6SJerry Jelinek 464*7b1019a6SJerry Jelinek #define ACPI_MSEC_PER_SEC 1000L 465*7b1019a6SJerry Jelinek 466*7b1019a6SJerry Jelinek #define ACPI_USEC_PER_MSEC 1000L 467*7b1019a6SJerry Jelinek #define ACPI_USEC_PER_SEC 1000000L 468*7b1019a6SJerry Jelinek 469*7b1019a6SJerry Jelinek #define ACPI_100NSEC_PER_USEC 10L 470*7b1019a6SJerry Jelinek #define ACPI_100NSEC_PER_MSEC 10000L 471*7b1019a6SJerry Jelinek #define ACPI_100NSEC_PER_SEC 10000000L 472*7b1019a6SJerry Jelinek 473*7b1019a6SJerry Jelinek #define ACPI_NSEC_PER_USEC 1000L 474*7b1019a6SJerry Jelinek #define ACPI_NSEC_PER_MSEC 1000000L 475*7b1019a6SJerry Jelinek #define ACPI_NSEC_PER_SEC 1000000000L 476*7b1019a6SJerry Jelinek 477*7b1019a6SJerry Jelinek 478aa2aa9a6SDana Myers /* Owner IDs are used to track namespace nodes for selective deletion */ 479aa2aa9a6SDana Myers 480aa2aa9a6SDana Myers typedef UINT8 ACPI_OWNER_ID; 481aa2aa9a6SDana Myers #define ACPI_OWNER_ID_MAX 0xFF 482aa2aa9a6SDana Myers 483aa2aa9a6SDana Myers 4847c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE 64 4857c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 4867c478bd9Sstevel@tonic-gate #define ACPI_MAX64_DECIMAL_DIGITS 20 4877c478bd9Sstevel@tonic-gate #define ACPI_MAX32_DECIMAL_DIGITS 10 4887c478bd9Sstevel@tonic-gate #define ACPI_MAX16_DECIMAL_DIGITS 5 4897c478bd9Sstevel@tonic-gate #define ACPI_MAX8_DECIMAL_DIGITS 3 4907c478bd9Sstevel@tonic-gate 4917c478bd9Sstevel@tonic-gate /* 4927c478bd9Sstevel@tonic-gate * Constants with special meanings 4937c478bd9Sstevel@tonic-gate */ 49430082d0cSmyers #define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 495aa2aa9a6SDana Myers #define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ 496aa2aa9a6SDana Myers #define ACPI_DO_NOT_WAIT 0 497aa2aa9a6SDana Myers 49826f3cdf0SGordon Ross /* 49926f3cdf0SGordon Ross * Obsolete: Acpi integer width. In ACPI version 1 (1996), integers are 32 bits. 50026f3cdf0SGordon Ross * In ACPI version 2 (2000) and later, integers are 64 bits. Note that this 50126f3cdf0SGordon Ross * pertains to the ACPI integer type only, not to other integers used in the 50226f3cdf0SGordon Ross * implementation of the ACPICA subsystem. 50326f3cdf0SGordon Ross * 50426f3cdf0SGordon Ross * 01/2010: This type is obsolete and has been removed from the entire ACPICA 50526f3cdf0SGordon Ross * code base. It remains here for compatibility with device drivers that use 50626f3cdf0SGordon Ross * the type. However, it will be removed in the future. 50726f3cdf0SGordon Ross */ 50826f3cdf0SGordon Ross typedef UINT64 ACPI_INTEGER; 50926f3cdf0SGordon Ross #define ACPI_INTEGER_MAX ACPI_UINT64_MAX 51026f3cdf0SGordon Ross 511aa2aa9a6SDana Myers 512aa2aa9a6SDana Myers /******************************************************************************* 513aa2aa9a6SDana Myers * 514aa2aa9a6SDana Myers * Commonly used macros 515aa2aa9a6SDana Myers * 516aa2aa9a6SDana Myers ******************************************************************************/ 517aa2aa9a6SDana Myers 518aa2aa9a6SDana Myers /* Data manipulation */ 519aa2aa9a6SDana Myers 520aa2aa9a6SDana Myers #define ACPI_LOBYTE(Integer) ((UINT8) (UINT16)(Integer)) 521aa2aa9a6SDana Myers #define ACPI_HIBYTE(Integer) ((UINT8) (((UINT16)(Integer)) >> 8)) 522aa2aa9a6SDana Myers #define ACPI_LOWORD(Integer) ((UINT16) (UINT32)(Integer)) 523aa2aa9a6SDana Myers #define ACPI_HIWORD(Integer) ((UINT16)(((UINT32)(Integer)) >> 16)) 524aa2aa9a6SDana Myers #define ACPI_LODWORD(Integer64) ((UINT32) (UINT64)(Integer64)) 525aa2aa9a6SDana Myers #define ACPI_HIDWORD(Integer64) ((UINT32)(((UINT64)(Integer64)) >> 32)) 526aa2aa9a6SDana Myers 527aa2aa9a6SDana Myers #define ACPI_SET_BIT(target,bit) ((target) |= (bit)) 528aa2aa9a6SDana Myers #define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) 529aa2aa9a6SDana Myers #define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) 530aa2aa9a6SDana Myers #define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) 531aa2aa9a6SDana Myers 532aa2aa9a6SDana Myers /* Size calculation */ 5337c478bd9Sstevel@tonic-gate 534aa2aa9a6SDana Myers #define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) 535aa2aa9a6SDana Myers 536aa2aa9a6SDana Myers /* Pointer manipulation */ 537aa2aa9a6SDana Myers 538aa2aa9a6SDana Myers #define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) 539aa2aa9a6SDana Myers #define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) 540aa2aa9a6SDana Myers #define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) + (ACPI_SIZE)(b))) 541*7b1019a6SJerry Jelinek #define ACPI_SUB_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) - (ACPI_SIZE)(b))) 542aa2aa9a6SDana Myers #define ACPI_PTR_DIFF(a, b) (ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b))) 543aa2aa9a6SDana Myers 544aa2aa9a6SDana Myers /* Pointer/Integer type conversions */ 545aa2aa9a6SDana Myers 546aa2aa9a6SDana Myers #define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) NULL,(ACPI_SIZE) i) 547aa2aa9a6SDana Myers #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) NULL) 548*7b1019a6SJerry Jelinek #define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) NULL) 549aa2aa9a6SDana Myers #define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) 550aa2aa9a6SDana Myers #define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) 551aa2aa9a6SDana Myers 552*7b1019a6SJerry Jelinek /* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */ 553*7b1019a6SJerry Jelinek 554aa2aa9a6SDana Myers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 555aa2aa9a6SDana Myers #define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) 556*7b1019a6SJerry Jelinek #define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) 557aa2aa9a6SDana Myers #else 558*7b1019a6SJerry Jelinek #define ACPI_COMPARE_NAME(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) 559*7b1019a6SJerry Jelinek #define ACPI_MOVE_NAME(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE)) 560aa2aa9a6SDana Myers #endif 561aa2aa9a6SDana Myers 562*7b1019a6SJerry Jelinek /* Support for the special RSDP signature (8 characters) */ 563*7b1019a6SJerry Jelinek 564*7b1019a6SJerry Jelinek #define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) 565*7b1019a6SJerry Jelinek #define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) 566*7b1019a6SJerry Jelinek 567aa2aa9a6SDana Myers 568aa2aa9a6SDana Myers /******************************************************************************* 569aa2aa9a6SDana Myers * 570aa2aa9a6SDana Myers * Miscellaneous constants 571aa2aa9a6SDana Myers * 572aa2aa9a6SDana Myers ******************************************************************************/ 5737c478bd9Sstevel@tonic-gate 5747c478bd9Sstevel@tonic-gate /* 5757c478bd9Sstevel@tonic-gate * Initialization sequence 5767c478bd9Sstevel@tonic-gate */ 5777c478bd9Sstevel@tonic-gate #define ACPI_FULL_INITIALIZATION 0x00 5787c478bd9Sstevel@tonic-gate #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 5797c478bd9Sstevel@tonic-gate #define ACPI_NO_HARDWARE_INIT 0x02 5807c478bd9Sstevel@tonic-gate #define ACPI_NO_EVENT_INIT 0x04 5817c478bd9Sstevel@tonic-gate #define ACPI_NO_HANDLER_INIT 0x08 5827c478bd9Sstevel@tonic-gate #define ACPI_NO_ACPI_ENABLE 0x10 5837c478bd9Sstevel@tonic-gate #define ACPI_NO_DEVICE_INIT 0x20 5847c478bd9Sstevel@tonic-gate #define ACPI_NO_OBJECT_INIT 0x40 585*7b1019a6SJerry Jelinek #define ACPI_NO_FACS_INIT 0x80 5867c478bd9Sstevel@tonic-gate 5877c478bd9Sstevel@tonic-gate /* 5887c478bd9Sstevel@tonic-gate * Initialization state 5897c478bd9Sstevel@tonic-gate */ 590db2bae30SDana Myers #define ACPI_SUBSYSTEM_INITIALIZE 0x01 591db2bae30SDana Myers #define ACPI_INITIALIZED_OK 0x02 5927c478bd9Sstevel@tonic-gate 5937c478bd9Sstevel@tonic-gate /* 5947c478bd9Sstevel@tonic-gate * Power state values 5957c478bd9Sstevel@tonic-gate */ 5967c478bd9Sstevel@tonic-gate #define ACPI_STATE_UNKNOWN (UINT8) 0xFF 5977c478bd9Sstevel@tonic-gate 5987c478bd9Sstevel@tonic-gate #define ACPI_STATE_S0 (UINT8) 0 5997c478bd9Sstevel@tonic-gate #define ACPI_STATE_S1 (UINT8) 1 6007c478bd9Sstevel@tonic-gate #define ACPI_STATE_S2 (UINT8) 2 6017c478bd9Sstevel@tonic-gate #define ACPI_STATE_S3 (UINT8) 3 6027c478bd9Sstevel@tonic-gate #define ACPI_STATE_S4 (UINT8) 4 6037c478bd9Sstevel@tonic-gate #define ACPI_STATE_S5 (UINT8) 5 6047c478bd9Sstevel@tonic-gate #define ACPI_S_STATES_MAX ACPI_STATE_S5 6057c478bd9Sstevel@tonic-gate #define ACPI_S_STATE_COUNT 6 6067c478bd9Sstevel@tonic-gate 6077c478bd9Sstevel@tonic-gate #define ACPI_STATE_D0 (UINT8) 0 6087c478bd9Sstevel@tonic-gate #define ACPI_STATE_D1 (UINT8) 1 6097c478bd9Sstevel@tonic-gate #define ACPI_STATE_D2 (UINT8) 2 6107c478bd9Sstevel@tonic-gate #define ACPI_STATE_D3 (UINT8) 3 6117c478bd9Sstevel@tonic-gate #define ACPI_D_STATES_MAX ACPI_STATE_D3 6127c478bd9Sstevel@tonic-gate #define ACPI_D_STATE_COUNT 4 6137c478bd9Sstevel@tonic-gate 6147c478bd9Sstevel@tonic-gate #define ACPI_STATE_C0 (UINT8) 0 6157c478bd9Sstevel@tonic-gate #define ACPI_STATE_C1 (UINT8) 1 6167c478bd9Sstevel@tonic-gate #define ACPI_STATE_C2 (UINT8) 2 6177c478bd9Sstevel@tonic-gate #define ACPI_STATE_C3 (UINT8) 3 6187c478bd9Sstevel@tonic-gate #define ACPI_C_STATES_MAX ACPI_STATE_C3 6197c478bd9Sstevel@tonic-gate #define ACPI_C_STATE_COUNT 4 6207c478bd9Sstevel@tonic-gate 6217c478bd9Sstevel@tonic-gate /* 6227c478bd9Sstevel@tonic-gate * Sleep type invalid value 6237c478bd9Sstevel@tonic-gate */ 6247c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_MAX 0x7 6257c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_INVALID 0xFF 6267c478bd9Sstevel@tonic-gate 6277c478bd9Sstevel@tonic-gate /* 6287c478bd9Sstevel@tonic-gate * Standard notify values 6297c478bd9Sstevel@tonic-gate */ 630db2bae30SDana Myers #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 631db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 632db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 633db2bae30SDana Myers #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 634db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 635db2bae30SDana Myers #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 636db2bae30SDana Myers #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 637db2bae30SDana Myers #define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 638db2bae30SDana Myers #define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 639db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 640db2bae30SDana Myers #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A 641db2bae30SDana Myers #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B 642*7b1019a6SJerry Jelinek #define ACPI_NOTIFY_SHUTDOWN_REQUEST (UINT8) 0x0C 643*7b1019a6SJerry Jelinek #define ACPI_NOTIFY_AFFINITY_UPDATE (UINT8) 0x0D 644db2bae30SDana Myers 645*7b1019a6SJerry Jelinek #define ACPI_GENERIC_NOTIFY_MAX 0x0D 646*7b1019a6SJerry Jelinek #define ACPI_SPECIFIC_NOTIFY_MAX 0x84 6477c478bd9Sstevel@tonic-gate 6487c478bd9Sstevel@tonic-gate /* 649aa2aa9a6SDana Myers * Types associated with ACPI names and objects. The first group of 6507c478bd9Sstevel@tonic-gate * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 651aa2aa9a6SDana Myers * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 6527c478bd9Sstevel@tonic-gate * only add to the first group if the spec changes. 6537c478bd9Sstevel@tonic-gate * 6547c478bd9Sstevel@tonic-gate * NOTE: Types must be kept in sync with the global AcpiNsProperties 6557c478bd9Sstevel@tonic-gate * and AcpiNsTypeNames arrays. 6567c478bd9Sstevel@tonic-gate */ 6577c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_OBJECT_TYPE; 6587c478bd9Sstevel@tonic-gate 6597c478bd9Sstevel@tonic-gate #define ACPI_TYPE_ANY 0x00 6607c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 6617c478bd9Sstevel@tonic-gate #define ACPI_TYPE_STRING 0x02 6627c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER 0x03 6637c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 6647c478bd9Sstevel@tonic-gate #define ACPI_TYPE_FIELD_UNIT 0x05 6657c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 6667c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EVENT 0x07 6677c478bd9Sstevel@tonic-gate #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 6687c478bd9Sstevel@tonic-gate #define ACPI_TYPE_MUTEX 0x09 6697c478bd9Sstevel@tonic-gate #define ACPI_TYPE_REGION 0x0A 6707c478bd9Sstevel@tonic-gate #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 6717c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 6727c478bd9Sstevel@tonic-gate #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 6737c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER_FIELD 0x0E 6747c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DDB_HANDLE 0x0F 6757c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEBUG_OBJECT 0x10 6767c478bd9Sstevel@tonic-gate 6777c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EXTERNAL_MAX 0x10 678*7b1019a6SJerry Jelinek #define ACPI_NUM_TYPES (ACPI_TYPE_EXTERNAL_MAX + 1) 6797c478bd9Sstevel@tonic-gate 6807c478bd9Sstevel@tonic-gate /* 6817c478bd9Sstevel@tonic-gate * These are object types that do not map directly to the ACPI 6827c478bd9Sstevel@tonic-gate * ObjectType() operator. They are used for various internal purposes only. 6837c478bd9Sstevel@tonic-gate * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 6847c478bd9Sstevel@tonic-gate * internal types must move upwards. (There is code that depends on these 6857c478bd9Sstevel@tonic-gate * values being contiguous with the external types above.) 6867c478bd9Sstevel@tonic-gate */ 6877c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 6887c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 6897c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 6907c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 6917c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ALIAS 0x15 6927c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 6937c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_NOTIFY 0x17 6947c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 6957c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE 0x19 6967c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 6977c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 6987c478bd9Sstevel@tonic-gate 6997c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 700*7b1019a6SJerry Jelinek #define ACPI_TOTAL_TYPES (ACPI_TYPE_NS_NODE_MAX + 1) 7017c478bd9Sstevel@tonic-gate 7027c478bd9Sstevel@tonic-gate /* 7037c478bd9Sstevel@tonic-gate * These are special object types that never appear in 704*7b1019a6SJerry Jelinek * a Namespace node, only in an object of ACPI_OPERAND_OBJECT 7057c478bd9Sstevel@tonic-gate */ 7067c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_EXTRA 0x1C 7077c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_DATA 0x1D 7087c478bd9Sstevel@tonic-gate 7097c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_MAX 0x1D 7107c478bd9Sstevel@tonic-gate 7117c478bd9Sstevel@tonic-gate /* All types above here are invalid */ 7127c478bd9Sstevel@tonic-gate 7137c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INVALID 0x1E 7147c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NOT_FOUND 0xFF 7157c478bd9Sstevel@tonic-gate 716db2bae30SDana Myers #define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) 717db2bae30SDana Myers 718db2bae30SDana Myers 7197c478bd9Sstevel@tonic-gate /* 7207c478bd9Sstevel@tonic-gate * All I/O 7217c478bd9Sstevel@tonic-gate */ 7227c478bd9Sstevel@tonic-gate #define ACPI_READ 0 7237c478bd9Sstevel@tonic-gate #define ACPI_WRITE 1 7247c478bd9Sstevel@tonic-gate #define ACPI_IO_MASK 1 7257c478bd9Sstevel@tonic-gate 7267c478bd9Sstevel@tonic-gate /* 7277c478bd9Sstevel@tonic-gate * Event Types: Fixed & General Purpose 7287c478bd9Sstevel@tonic-gate */ 7297c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_TYPE; 7307c478bd9Sstevel@tonic-gate 7317c478bd9Sstevel@tonic-gate /* 7327c478bd9Sstevel@tonic-gate * Fixed events 7337c478bd9Sstevel@tonic-gate */ 7347c478bd9Sstevel@tonic-gate #define ACPI_EVENT_PMTIMER 0 7357c478bd9Sstevel@tonic-gate #define ACPI_EVENT_GLOBAL 1 7367c478bd9Sstevel@tonic-gate #define ACPI_EVENT_POWER_BUTTON 2 7377c478bd9Sstevel@tonic-gate #define ACPI_EVENT_SLEEP_BUTTON 3 7387c478bd9Sstevel@tonic-gate #define ACPI_EVENT_RTC 4 7397c478bd9Sstevel@tonic-gate #define ACPI_EVENT_MAX 4 7407c478bd9Sstevel@tonic-gate #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 7417c478bd9Sstevel@tonic-gate 7427c478bd9Sstevel@tonic-gate /* 7437c478bd9Sstevel@tonic-gate * Event Status - Per event 7447c478bd9Sstevel@tonic-gate * ------------- 7457c478bd9Sstevel@tonic-gate * The encoding of ACPI_EVENT_STATUS is illustrated below. 7467c478bd9Sstevel@tonic-gate * Note that a set bit (1) indicates the property is TRUE 7477c478bd9Sstevel@tonic-gate * (e.g. if bit 0 is set then the event is enabled). 748*7b1019a6SJerry Jelinek * +-------------+-+-+-+-+-+ 749*7b1019a6SJerry Jelinek * | Bits 31:5 |4|3|2|1|0| 750*7b1019a6SJerry Jelinek * +-------------+-+-+-+-+-+ 751*7b1019a6SJerry Jelinek * | | | | | | 752*7b1019a6SJerry Jelinek * | | | | | +- Enabled? 753*7b1019a6SJerry Jelinek * | | | | +--- Enabled for wake? 754*7b1019a6SJerry Jelinek * | | | +----- Status bit set? 755*7b1019a6SJerry Jelinek * | | +------- Enable bit set? 756*7b1019a6SJerry Jelinek * | +--------- Has a handler? 757*7b1019a6SJerry Jelinek * +--------------- <Reserved> 7587c478bd9Sstevel@tonic-gate */ 7597c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_STATUS; 7607c478bd9Sstevel@tonic-gate 7617c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 7627c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 7637c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 764*7b1019a6SJerry Jelinek #define ACPI_EVENT_FLAG_STATUS_SET (ACPI_EVENT_STATUS) 0x04 765*7b1019a6SJerry Jelinek #define ACPI_EVENT_FLAG_ENABLE_SET (ACPI_EVENT_STATUS) 0x08 766*7b1019a6SJerry Jelinek #define ACPI_EVENT_FLAG_HAS_HANDLER (ACPI_EVENT_STATUS) 0x10 767*7b1019a6SJerry Jelinek #define ACPI_EVENT_FLAG_SET ACPI_EVENT_FLAG_STATUS_SET 7687c478bd9Sstevel@tonic-gate 76926f3cdf0SGordon Ross /* Actions for AcpiSetGpe, AcpiGpeWakeup, AcpiHwLowSetGpe */ 77026f3cdf0SGordon Ross 7717c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE 0 7727c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISABLE 1 77326f3cdf0SGordon Ross #define ACPI_GPE_CONDITIONAL_ENABLE 2 7747c478bd9Sstevel@tonic-gate 7757c478bd9Sstevel@tonic-gate /* 7767c478bd9Sstevel@tonic-gate * GPE info flags - Per GPE 77726f3cdf0SGordon Ross * +-------+-+-+---+ 778*7b1019a6SJerry Jelinek * | 7:5 |4|3|2:0| 77926f3cdf0SGordon Ross * +-------+-+-+---+ 78026f3cdf0SGordon Ross * | | | | 78126f3cdf0SGordon Ross * | | | +-- Type of dispatch:to method, handler, notify, or none 78226f3cdf0SGordon Ross * | | +----- Interrupt type: edge or level triggered 78326f3cdf0SGordon Ross * | +------- Is a Wake GPE 78426f3cdf0SGordon Ross * +------------ <Reserved> 7857c478bd9Sstevel@tonic-gate */ 78626f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_NONE (UINT8) 0x00 78726f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x01 78826f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x02 78926f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_NOTIFY (UINT8) 0x03 790*7b1019a6SJerry Jelinek #define ACPI_GPE_DISPATCH_RAW_HANDLER (UINT8) 0x04 791*7b1019a6SJerry Jelinek #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x07 792*7b1019a6SJerry Jelinek #define ACPI_GPE_DISPATCH_TYPE(flags) ((UINT8) ((flags) & ACPI_GPE_DISPATCH_MASK)) 7937c478bd9Sstevel@tonic-gate 794*7b1019a6SJerry Jelinek #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x08 79526f3cdf0SGordon Ross #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 796*7b1019a6SJerry Jelinek #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x08 7977c478bd9Sstevel@tonic-gate 798*7b1019a6SJerry Jelinek #define ACPI_GPE_CAN_WAKE (UINT8) 0x10 7997c478bd9Sstevel@tonic-gate 8007c478bd9Sstevel@tonic-gate /* 8017c478bd9Sstevel@tonic-gate * Flags for GPE and Lock interfaces 8027c478bd9Sstevel@tonic-gate */ 8037c478bd9Sstevel@tonic-gate #define ACPI_NOT_ISR 0x1 8047c478bd9Sstevel@tonic-gate #define ACPI_ISR 0x0 8057c478bd9Sstevel@tonic-gate 8067c478bd9Sstevel@tonic-gate 8077c478bd9Sstevel@tonic-gate /* Notify types */ 8087c478bd9Sstevel@tonic-gate 8097c478bd9Sstevel@tonic-gate #define ACPI_SYSTEM_NOTIFY 0x1 8107c478bd9Sstevel@tonic-gate #define ACPI_DEVICE_NOTIFY 0x2 811db2bae30SDana Myers #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) 8127c478bd9Sstevel@tonic-gate #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 813*7b1019a6SJerry Jelinek #define ACPI_NUM_NOTIFY_TYPES 2 8147c478bd9Sstevel@tonic-gate 815*7b1019a6SJerry Jelinek #define ACPI_MAX_SYS_NOTIFY 0x7F 816*7b1019a6SJerry Jelinek #define ACPI_MAX_DEVICE_SPECIFIC_NOTIFY 0xBF 817*7b1019a6SJerry Jelinek 818*7b1019a6SJerry Jelinek #define ACPI_SYSTEM_HANDLER_LIST 0 /* Used as index, must be SYSTEM_NOTIFY -1 */ 819*7b1019a6SJerry Jelinek #define ACPI_DEVICE_HANDLER_LIST 1 /* Used as index, must be DEVICE_NOTIFY -1 */ 8207c478bd9Sstevel@tonic-gate 8217c478bd9Sstevel@tonic-gate 8227c478bd9Sstevel@tonic-gate /* Address Space (Operation Region) Types */ 8237c478bd9Sstevel@tonic-gate 8247c478bd9Sstevel@tonic-gate typedef UINT8 ACPI_ADR_SPACE_TYPE; 8257c478bd9Sstevel@tonic-gate 8267c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 8277c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 8287c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 8297c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 8307c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 8317c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 8327c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 83357190917SDana Myers #define ACPI_ADR_SPACE_IPMI (ACPI_ADR_SPACE_TYPE) 7 834*7b1019a6SJerry Jelinek #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 835*7b1019a6SJerry Jelinek #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 836*7b1019a6SJerry Jelinek #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 8377c478bd9Sstevel@tonic-gate 838*7b1019a6SJerry Jelinek #define ACPI_NUM_PREDEFINED_REGIONS 11 83926f3cdf0SGordon Ross 84026f3cdf0SGordon Ross /* 84126f3cdf0SGordon Ross * Special Address Spaces 84226f3cdf0SGordon Ross * 84326f3cdf0SGordon Ross * Note: A Data Table region is a special type of operation region 84426f3cdf0SGordon Ross * that has its own AML opcode. However, internally, the AML 84526f3cdf0SGordon Ross * interpreter simply creates an operation region with an an address 84626f3cdf0SGordon Ross * space type of ACPI_ADR_SPACE_DATA_TABLE. 84726f3cdf0SGordon Ross */ 84826f3cdf0SGordon Ross #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 0x7E /* Internal to ACPICA only */ 84926f3cdf0SGordon Ross #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 0x7F 85026f3cdf0SGordon Ross 85126f3cdf0SGordon Ross /* Values for _REG connection code */ 85226f3cdf0SGordon Ross 85326f3cdf0SGordon Ross #define ACPI_REG_DISCONNECT 0 85426f3cdf0SGordon Ross #define ACPI_REG_CONNECT 1 8557c478bd9Sstevel@tonic-gate 8567c478bd9Sstevel@tonic-gate /* 8577c478bd9Sstevel@tonic-gate * BitRegister IDs 858aa2aa9a6SDana Myers * 859aa2aa9a6SDana Myers * These values are intended to be used by the hardware interfaces 860aa2aa9a6SDana Myers * and are mapped to individual bitfields defined within the ACPI 861aa2aa9a6SDana Myers * registers. See the AcpiGbl_BitRegisterInfo global table in utglobal.c 862aa2aa9a6SDana Myers * for this mapping. 8637c478bd9Sstevel@tonic-gate */ 864aa2aa9a6SDana Myers 865aa2aa9a6SDana Myers /* PM1 Status register */ 866aa2aa9a6SDana Myers 8677c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_STATUS 0x00 8687c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 8697c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 8707c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 8717c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 8727c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 8737c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_STATUS 0x06 8747c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 8757c478bd9Sstevel@tonic-gate 876aa2aa9a6SDana Myers /* PM1 Enable register */ 877aa2aa9a6SDana Myers 8787c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_ENABLE 0x08 8797c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 8807c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 8817c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 8827c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 883aa2aa9a6SDana Myers #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D 884aa2aa9a6SDana Myers 885aa2aa9a6SDana Myers /* PM1 Control register */ 8867c478bd9Sstevel@tonic-gate 887aa2aa9a6SDana Myers #define ACPI_BITREG_SCI_ENABLE 0x0E 888aa2aa9a6SDana Myers #define ACPI_BITREG_BUS_MASTER_RLD 0x0F 889aa2aa9a6SDana Myers #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 890aa2aa9a6SDana Myers #define ACPI_BITREG_SLEEP_TYPE 0x11 891aa2aa9a6SDana Myers #define ACPI_BITREG_SLEEP_ENABLE 0x12 8927c478bd9Sstevel@tonic-gate 893aa2aa9a6SDana Myers /* PM2 Control register */ 8947c478bd9Sstevel@tonic-gate 895aa2aa9a6SDana Myers #define ACPI_BITREG_ARB_DISABLE 0x13 896aa2aa9a6SDana Myers 897aa2aa9a6SDana Myers #define ACPI_BITREG_MAX 0x13 8987c478bd9Sstevel@tonic-gate #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 8997c478bd9Sstevel@tonic-gate 9007c478bd9Sstevel@tonic-gate 901aa2aa9a6SDana Myers /* Status register values. A 1 clears a status bit. 0 = no effect */ 902aa2aa9a6SDana Myers 903aa2aa9a6SDana Myers #define ACPI_CLEAR_STATUS 1 904aa2aa9a6SDana Myers 905aa2aa9a6SDana Myers /* Enable and Control register values */ 906aa2aa9a6SDana Myers 907aa2aa9a6SDana Myers #define ACPI_ENABLE_EVENT 1 908aa2aa9a6SDana Myers #define ACPI_DISABLE_EVENT 0 909aa2aa9a6SDana Myers 910aa2aa9a6SDana Myers 911*7b1019a6SJerry Jelinek /* Sleep function dispatch */ 912*7b1019a6SJerry Jelinek 913*7b1019a6SJerry Jelinek typedef ACPI_STATUS (*ACPI_SLEEP_FUNCTION) ( 914*7b1019a6SJerry Jelinek UINT8 SleepState); 915*7b1019a6SJerry Jelinek 916*7b1019a6SJerry Jelinek typedef struct acpi_sleep_functions 917*7b1019a6SJerry Jelinek { 918*7b1019a6SJerry Jelinek ACPI_SLEEP_FUNCTION LegacyFunction; 919*7b1019a6SJerry Jelinek ACPI_SLEEP_FUNCTION ExtendedFunction; 920*7b1019a6SJerry Jelinek 921*7b1019a6SJerry Jelinek } ACPI_SLEEP_FUNCTIONS; 922*7b1019a6SJerry Jelinek 923*7b1019a6SJerry Jelinek 9247c478bd9Sstevel@tonic-gate /* 9257c478bd9Sstevel@tonic-gate * External ACPI object definition 9267c478bd9Sstevel@tonic-gate */ 927db2bae30SDana Myers 928db2bae30SDana Myers /* 929db2bae30SDana Myers * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element 930db2bae30SDana Myers * or an unresolved named reference. 931db2bae30SDana Myers */ 9327c478bd9Sstevel@tonic-gate typedef union acpi_object 9337c478bd9Sstevel@tonic-gate { 93427f7c583Smyers ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 9357c478bd9Sstevel@tonic-gate struct 9367c478bd9Sstevel@tonic-gate { 937db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ 93826f3cdf0SGordon Ross UINT64 Value; /* The actual number */ 9397c478bd9Sstevel@tonic-gate } Integer; 9407c478bd9Sstevel@tonic-gate 9417c478bd9Sstevel@tonic-gate struct 9427c478bd9Sstevel@tonic-gate { 943db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ 94427f7c583Smyers UINT32 Length; /* # of bytes in string, excluding trailing null */ 94527f7c583Smyers char *Pointer; /* points to the string value */ 9467c478bd9Sstevel@tonic-gate } String; 9477c478bd9Sstevel@tonic-gate 9487c478bd9Sstevel@tonic-gate struct 9497c478bd9Sstevel@tonic-gate { 950db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ 95127f7c583Smyers UINT32 Length; /* # of bytes in buffer */ 95227f7c583Smyers UINT8 *Pointer; /* points to the buffer */ 9537c478bd9Sstevel@tonic-gate } Buffer; 9547c478bd9Sstevel@tonic-gate 9557c478bd9Sstevel@tonic-gate struct 9567c478bd9Sstevel@tonic-gate { 957db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ 95827f7c583Smyers UINT32 Count; /* # of elements in package */ 95927f7c583Smyers union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 9607c478bd9Sstevel@tonic-gate } Package; 9617c478bd9Sstevel@tonic-gate 9627c478bd9Sstevel@tonic-gate struct 9637c478bd9Sstevel@tonic-gate { 964db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ 965db2bae30SDana Myers ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ 966db2bae30SDana Myers ACPI_HANDLE Handle; /* object reference */ 967db2bae30SDana Myers } Reference; 968db2bae30SDana Myers 969db2bae30SDana Myers struct 970db2bae30SDana Myers { 971db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ 97227f7c583Smyers UINT32 ProcId; 97327f7c583Smyers ACPI_IO_ADDRESS PblkAddress; 97427f7c583Smyers UINT32 PblkLength; 9757c478bd9Sstevel@tonic-gate } Processor; 9767c478bd9Sstevel@tonic-gate 9777c478bd9Sstevel@tonic-gate struct 9787c478bd9Sstevel@tonic-gate { 979db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ 98027f7c583Smyers UINT32 SystemLevel; 98127f7c583Smyers UINT32 ResourceOrder; 9827c478bd9Sstevel@tonic-gate } PowerResource; 9837c478bd9Sstevel@tonic-gate 9847c478bd9Sstevel@tonic-gate } ACPI_OBJECT; 9857c478bd9Sstevel@tonic-gate 9867c478bd9Sstevel@tonic-gate 9877c478bd9Sstevel@tonic-gate /* 9887c478bd9Sstevel@tonic-gate * List of objects, used as a parameter list for control method evaluation 9897c478bd9Sstevel@tonic-gate */ 9907c478bd9Sstevel@tonic-gate typedef struct acpi_object_list 9917c478bd9Sstevel@tonic-gate { 99227f7c583Smyers UINT32 Count; 99327f7c583Smyers ACPI_OBJECT *Pointer; 9947c478bd9Sstevel@tonic-gate 9957c478bd9Sstevel@tonic-gate } ACPI_OBJECT_LIST; 9967c478bd9Sstevel@tonic-gate 9977c478bd9Sstevel@tonic-gate 9987c478bd9Sstevel@tonic-gate /* 9997c478bd9Sstevel@tonic-gate * Miscellaneous common Data Structures used by the interfaces 10007c478bd9Sstevel@tonic-gate */ 10017c478bd9Sstevel@tonic-gate #define ACPI_NO_BUFFER 0 1002*7b1019a6SJerry Jelinek 1003*7b1019a6SJerry Jelinek #ifdef ACPI_NO_MEM_ALLOCATIONS 1004*7b1019a6SJerry Jelinek 1005*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (0) 1006*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (0) 1007*7b1019a6SJerry Jelinek 1008*7b1019a6SJerry Jelinek #else /* ACPI_NO_MEM_ALLOCATIONS */ 1009*7b1019a6SJerry Jelinek 1010*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) /* Let ACPICA allocate buffer */ 1011*7b1019a6SJerry Jelinek #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) /* For internal use only (enables tracking) */ 1012*7b1019a6SJerry Jelinek 1013*7b1019a6SJerry Jelinek #endif /* ACPI_NO_MEM_ALLOCATIONS */ 10147c478bd9Sstevel@tonic-gate 10157c478bd9Sstevel@tonic-gate typedef struct acpi_buffer 10167c478bd9Sstevel@tonic-gate { 101727f7c583Smyers ACPI_SIZE Length; /* Length in bytes of the buffer */ 101827f7c583Smyers void *Pointer; /* pointer to buffer */ 10197c478bd9Sstevel@tonic-gate 10207c478bd9Sstevel@tonic-gate } ACPI_BUFFER; 10217c478bd9Sstevel@tonic-gate 10227c478bd9Sstevel@tonic-gate 10237c478bd9Sstevel@tonic-gate /* 10247c478bd9Sstevel@tonic-gate * NameType for AcpiGetName 10257c478bd9Sstevel@tonic-gate */ 10267c478bd9Sstevel@tonic-gate #define ACPI_FULL_PATHNAME 0 10277c478bd9Sstevel@tonic-gate #define ACPI_SINGLE_NAME 1 1028*7b1019a6SJerry Jelinek #define ACPI_FULL_PATHNAME_NO_TRAILING 2 1029*7b1019a6SJerry Jelinek #define ACPI_NAME_TYPE_MAX 2 10307c478bd9Sstevel@tonic-gate 10317c478bd9Sstevel@tonic-gate 1032aa2aa9a6SDana Myers /* 1033aa2aa9a6SDana Myers * Predefined Namespace items 1034aa2aa9a6SDana Myers */ 1035aa2aa9a6SDana Myers typedef struct acpi_predefined_names 1036aa2aa9a6SDana Myers { 1037*7b1019a6SJerry Jelinek const char *Name; 1038aa2aa9a6SDana Myers UINT8 Type; 1039aa2aa9a6SDana Myers char *Val; 1040aa2aa9a6SDana Myers 1041aa2aa9a6SDana Myers } ACPI_PREDEFINED_NAMES; 1042aa2aa9a6SDana Myers 1043aa2aa9a6SDana Myers 10447c478bd9Sstevel@tonic-gate /* 10457c478bd9Sstevel@tonic-gate * Structure and flags for AcpiGetSystemInfo 10467c478bd9Sstevel@tonic-gate */ 10477c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_UNKNOWN 0x0000 10487c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_ACPI 0x0001 10497c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_LEGACY 0x0002 10507c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODES_MASK 0x0003 10517c478bd9Sstevel@tonic-gate 10527c478bd9Sstevel@tonic-gate 10537c478bd9Sstevel@tonic-gate /* 10547c478bd9Sstevel@tonic-gate * System info returned by AcpiGetSystemInfo() 10557c478bd9Sstevel@tonic-gate */ 10567c478bd9Sstevel@tonic-gate typedef struct acpi_system_info 10577c478bd9Sstevel@tonic-gate { 105827f7c583Smyers UINT32 AcpiCaVersion; 105927f7c583Smyers UINT32 Flags; 106027f7c583Smyers UINT32 TimerResolution; 106127f7c583Smyers UINT32 Reserved1; 106227f7c583Smyers UINT32 Reserved2; 106327f7c583Smyers UINT32 DebugLevel; 106427f7c583Smyers UINT32 DebugLayer; 10657c478bd9Sstevel@tonic-gate 10667c478bd9Sstevel@tonic-gate } ACPI_SYSTEM_INFO; 10677c478bd9Sstevel@tonic-gate 10687c478bd9Sstevel@tonic-gate 1069db2bae30SDana Myers /* 1070aa2aa9a6SDana Myers * System statistics returned by AcpiGetStatistics() 1071db2bae30SDana Myers */ 1072db2bae30SDana Myers typedef struct acpi_statistics 1073db2bae30SDana Myers { 1074db2bae30SDana Myers UINT32 SciCount; 1075db2bae30SDana Myers UINT32 GpeCount; 1076db2bae30SDana Myers UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; 1077db2bae30SDana Myers UINT32 MethodCount; 1078db2bae30SDana Myers 1079db2bae30SDana Myers } ACPI_STATISTICS; 1080db2bae30SDana Myers 1081db2bae30SDana Myers 1082db2bae30SDana Myers /* Table Event Types */ 1083db2bae30SDana Myers 1084db2bae30SDana Myers #define ACPI_TABLE_EVENT_LOAD 0x0 1085db2bae30SDana Myers #define ACPI_TABLE_EVENT_UNLOAD 0x1 1086db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 1087db2bae30SDana Myers 1088db2bae30SDana Myers 10897c478bd9Sstevel@tonic-gate /* 10907c478bd9Sstevel@tonic-gate * Types specific to the OS service interfaces 10917c478bd9Sstevel@tonic-gate */ 10927c478bd9Sstevel@tonic-gate typedef UINT32 10937c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 109427f7c583Smyers void *Context); 10957c478bd9Sstevel@tonic-gate 10967c478bd9Sstevel@tonic-gate typedef void 10977c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 109827f7c583Smyers void *Context); 10997c478bd9Sstevel@tonic-gate 11007c478bd9Sstevel@tonic-gate /* 11017c478bd9Sstevel@tonic-gate * Various handlers and callback procedures 11027c478bd9Sstevel@tonic-gate */ 110326f3cdf0SGordon Ross typedef 1104*7b1019a6SJerry Jelinek UINT32 (*ACPI_SCI_HANDLER) ( 1105*7b1019a6SJerry Jelinek void *Context); 1106*7b1019a6SJerry Jelinek 1107*7b1019a6SJerry Jelinek typedef 110826f3cdf0SGordon Ross void (*ACPI_GBL_EVENT_HANDLER) ( 110926f3cdf0SGordon Ross UINT32 EventType, 111026f3cdf0SGordon Ross ACPI_HANDLE Device, 111126f3cdf0SGordon Ross UINT32 EventNumber, 111226f3cdf0SGordon Ross void *Context); 111326f3cdf0SGordon Ross 111426f3cdf0SGordon Ross #define ACPI_EVENT_TYPE_GPE 0 111526f3cdf0SGordon Ross #define ACPI_EVENT_TYPE_FIXED 1 111626f3cdf0SGordon Ross 11177c478bd9Sstevel@tonic-gate typedef 11187c478bd9Sstevel@tonic-gate UINT32 (*ACPI_EVENT_HANDLER) ( 111927f7c583Smyers void *Context); 11207c478bd9Sstevel@tonic-gate 112126f3cdf0SGordon Ross typedef 112226f3cdf0SGordon Ross UINT32 (*ACPI_GPE_HANDLER) ( 112326f3cdf0SGordon Ross ACPI_HANDLE GpeDevice, 112426f3cdf0SGordon Ross UINT32 GpeNumber, 112526f3cdf0SGordon Ross void *Context); 112626f3cdf0SGordon Ross 11277c478bd9Sstevel@tonic-gate typedef 11287c478bd9Sstevel@tonic-gate void (*ACPI_NOTIFY_HANDLER) ( 112927f7c583Smyers ACPI_HANDLE Device, 113027f7c583Smyers UINT32 Value, 113127f7c583Smyers void *Context); 11327c478bd9Sstevel@tonic-gate 11337c478bd9Sstevel@tonic-gate typedef 11347c478bd9Sstevel@tonic-gate void (*ACPI_OBJECT_HANDLER) ( 113527f7c583Smyers ACPI_HANDLE Object, 113627f7c583Smyers void *Data); 11377c478bd9Sstevel@tonic-gate 11387c478bd9Sstevel@tonic-gate typedef 11397c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_INIT_HANDLER) ( 114027f7c583Smyers ACPI_HANDLE Object, 114127f7c583Smyers UINT32 Function); 11427c478bd9Sstevel@tonic-gate 11437c478bd9Sstevel@tonic-gate #define ACPI_INIT_DEVICE_INI 1 11447c478bd9Sstevel@tonic-gate 11457c478bd9Sstevel@tonic-gate typedef 11467c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 114727f7c583Smyers ACPI_STATUS AmlStatus, 114827f7c583Smyers ACPI_NAME Name, 114927f7c583Smyers UINT16 Opcode, 115027f7c583Smyers UINT32 AmlOffset, 115127f7c583Smyers void *Context); 11527c478bd9Sstevel@tonic-gate 1153aa2aa9a6SDana Myers /* Table Event handler (Load, LoadTable, etc.) and types */ 1154db2bae30SDana Myers 1155db2bae30SDana Myers typedef 1156db2bae30SDana Myers ACPI_STATUS (*ACPI_TABLE_HANDLER) ( 1157db2bae30SDana Myers UINT32 Event, 1158db2bae30SDana Myers void *Table, 1159db2bae30SDana Myers void *Context); 1160db2bae30SDana Myers 1161db2bae30SDana Myers #define ACPI_TABLE_LOAD 0x0 1162db2bae30SDana Myers #define ACPI_TABLE_UNLOAD 0x1 1163db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 1164db2bae30SDana Myers 11657c478bd9Sstevel@tonic-gate 11667c478bd9Sstevel@tonic-gate /* Address Spaces (For Operation Regions) */ 11677c478bd9Sstevel@tonic-gate 11687c478bd9Sstevel@tonic-gate typedef 11697c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 117027f7c583Smyers UINT32 Function, 117127f7c583Smyers ACPI_PHYSICAL_ADDRESS Address, 117227f7c583Smyers UINT32 BitWidth, 117326f3cdf0SGordon Ross UINT64 *Value, 117427f7c583Smyers void *HandlerContext, 117527f7c583Smyers void *RegionContext); 11767c478bd9Sstevel@tonic-gate 117727f7c583Smyers #define ACPI_DEFAULT_HANDLER NULL 11787c478bd9Sstevel@tonic-gate 1179*7b1019a6SJerry Jelinek /* Special Context data for GenericSerialBus/GeneralPurposeIo (ACPI 5.0) */ 1180*7b1019a6SJerry Jelinek 1181*7b1019a6SJerry Jelinek typedef struct acpi_connection_info 1182*7b1019a6SJerry Jelinek { 1183*7b1019a6SJerry Jelinek UINT8 *Connection; 1184*7b1019a6SJerry Jelinek UINT16 Length; 1185*7b1019a6SJerry Jelinek UINT8 AccessLength; 1186*7b1019a6SJerry Jelinek 1187*7b1019a6SJerry Jelinek } ACPI_CONNECTION_INFO; 1188*7b1019a6SJerry Jelinek 1189*7b1019a6SJerry Jelinek 11907c478bd9Sstevel@tonic-gate typedef 11917c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 119227f7c583Smyers ACPI_HANDLE RegionHandle, 119327f7c583Smyers UINT32 Function, 119427f7c583Smyers void *HandlerContext, 119527f7c583Smyers void **RegionContext); 11967c478bd9Sstevel@tonic-gate 11977c478bd9Sstevel@tonic-gate #define ACPI_REGION_ACTIVATE 0 11987c478bd9Sstevel@tonic-gate #define ACPI_REGION_DEACTIVATE 1 11997c478bd9Sstevel@tonic-gate 12007c478bd9Sstevel@tonic-gate typedef 12017c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_WALK_CALLBACK) ( 120226f3cdf0SGordon Ross ACPI_HANDLE Object, 120327f7c583Smyers UINT32 NestingLevel, 120427f7c583Smyers void *Context, 120527f7c583Smyers void **ReturnValue); 12067c478bd9Sstevel@tonic-gate 120726f3cdf0SGordon Ross typedef 120826f3cdf0SGordon Ross UINT32 (*ACPI_INTERFACE_HANDLER) ( 120926f3cdf0SGordon Ross ACPI_STRING InterfaceName, 121026f3cdf0SGordon Ross UINT32 Supported); 121126f3cdf0SGordon Ross 12127c478bd9Sstevel@tonic-gate 12137c478bd9Sstevel@tonic-gate /* Interrupt handler return values */ 12147c478bd9Sstevel@tonic-gate 12157c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_NOT_HANDLED 0x00 12167c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_HANDLED 0x01 12177c478bd9Sstevel@tonic-gate 121826f3cdf0SGordon Ross /* GPE handler return values */ 121926f3cdf0SGordon Ross 122026f3cdf0SGordon Ross #define ACPI_REENABLE_GPE 0x80 122126f3cdf0SGordon Ross 122226f3cdf0SGordon Ross 122357190917SDana Myers /* Length of 32-bit EISAID values when converted back to a string */ 122457190917SDana Myers 122557190917SDana Myers #define ACPI_EISAID_STRING_SIZE 8 /* Includes null terminator */ 12267c478bd9Sstevel@tonic-gate 122757190917SDana Myers /* Length of UUID (string) values */ 1228aa2aa9a6SDana Myers 1229aa2aa9a6SDana Myers #define ACPI_UUID_LENGTH 16 1230aa2aa9a6SDana Myers 1231*7b1019a6SJerry Jelinek /* Length of 3-byte PCI class code values when converted back to a string */ 1232*7b1019a6SJerry Jelinek 1233*7b1019a6SJerry Jelinek #define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ 1234*7b1019a6SJerry Jelinek 123557190917SDana Myers 123657190917SDana Myers /* Structures used for device/processor HID, UID, CID */ 12377c478bd9Sstevel@tonic-gate 1238*7b1019a6SJerry Jelinek typedef struct acpi_pnp_device_id 12397c478bd9Sstevel@tonic-gate { 124057190917SDana Myers UINT32 Length; /* Length of string + null */ 124157190917SDana Myers char *String; 12427c478bd9Sstevel@tonic-gate 1243*7b1019a6SJerry Jelinek } ACPI_PNP_DEVICE_ID; 12447c478bd9Sstevel@tonic-gate 1245*7b1019a6SJerry Jelinek typedef struct acpi_pnp_device_id_list 12467c478bd9Sstevel@tonic-gate { 124757190917SDana Myers UINT32 Count; /* Number of IDs in Ids array */ 124857190917SDana Myers UINT32 ListSize; /* Size of list, including ID strings */ 1249*7b1019a6SJerry Jelinek ACPI_PNP_DEVICE_ID Ids[1]; /* ID array */ 12507c478bd9Sstevel@tonic-gate 1251*7b1019a6SJerry Jelinek } ACPI_PNP_DEVICE_ID_LIST; 12527c478bd9Sstevel@tonic-gate 125357190917SDana Myers /* 125457190917SDana Myers * Structure returned from AcpiGetObjectInfo. 125557190917SDana Myers * Optimized for both 32- and 64-bit builds 125657190917SDana Myers */ 125757190917SDana Myers typedef struct acpi_device_info 12587c478bd9Sstevel@tonic-gate { 125957190917SDana Myers UINT32 InfoSize; /* Size of info, including ID strings */ 126057190917SDana Myers UINT32 Name; /* ACPI object Name */ 126157190917SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI object Type */ 126257190917SDana Myers UINT8 ParamCount; /* If a method, required parameter count */ 1263*7b1019a6SJerry Jelinek UINT16 Valid; /* Indicates which optional fields are valid */ 126457190917SDana Myers UINT8 Flags; /* Miscellaneous info */ 126557190917SDana Myers UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 126657190917SDana Myers UINT8 LowestDstates[5]; /* _SxW values: 0xFF indicates not valid */ 126757190917SDana Myers UINT32 CurrentStatus; /* _STA value */ 126826f3cdf0SGordon Ross UINT64 Address; /* _ADR value */ 1269*7b1019a6SJerry Jelinek ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ 1270*7b1019a6SJerry Jelinek ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ 1271*7b1019a6SJerry Jelinek ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */ 1272*7b1019a6SJerry Jelinek ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list <must be last> */ 127357190917SDana Myers 127457190917SDana Myers } ACPI_DEVICE_INFO; 12757c478bd9Sstevel@tonic-gate 127657190917SDana Myers /* Values for Flags field above (AcpiGetObjectInfo) */ 12777c478bd9Sstevel@tonic-gate 127857190917SDana Myers #define ACPI_PCI_ROOT_BRIDGE 0x01 12797c478bd9Sstevel@tonic-gate 128057190917SDana Myers /* Flags for Valid field above (AcpiGetObjectInfo) */ 12817c478bd9Sstevel@tonic-gate 1282*7b1019a6SJerry Jelinek #define ACPI_VALID_STA 0x0001 1283*7b1019a6SJerry Jelinek #define ACPI_VALID_ADR 0x0002 1284*7b1019a6SJerry Jelinek #define ACPI_VALID_HID 0x0004 1285*7b1019a6SJerry Jelinek #define ACPI_VALID_UID 0x0008 1286*7b1019a6SJerry Jelinek #define ACPI_VALID_CID 0x0020 1287*7b1019a6SJerry Jelinek #define ACPI_VALID_CLS 0x0040 1288*7b1019a6SJerry Jelinek #define ACPI_VALID_SXDS 0x0100 1289*7b1019a6SJerry Jelinek #define ACPI_VALID_SXWS 0x0200 12907c478bd9Sstevel@tonic-gate 129130082d0cSmyers /* Flags for _STA method */ 129230082d0cSmyers 129330082d0cSmyers #define ACPI_STA_DEVICE_PRESENT 0x01 129430082d0cSmyers #define ACPI_STA_DEVICE_ENABLED 0x02 129530082d0cSmyers #define ACPI_STA_DEVICE_UI 0x04 129627f7c583Smyers #define ACPI_STA_DEVICE_FUNCTIONING 0x08 129727f7c583Smyers #define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 129830082d0cSmyers #define ACPI_STA_BATTERY_PRESENT 0x10 129930082d0cSmyers 13007c478bd9Sstevel@tonic-gate 13017c478bd9Sstevel@tonic-gate /* Context structs for address space handlers */ 13027c478bd9Sstevel@tonic-gate 13037c478bd9Sstevel@tonic-gate typedef struct acpi_pci_id 13047c478bd9Sstevel@tonic-gate { 130527f7c583Smyers UINT16 Segment; 130627f7c583Smyers UINT16 Bus; 130727f7c583Smyers UINT16 Device; 130827f7c583Smyers UINT16 Function; 13097c478bd9Sstevel@tonic-gate 13107c478bd9Sstevel@tonic-gate } ACPI_PCI_ID; 13117c478bd9Sstevel@tonic-gate 13127c478bd9Sstevel@tonic-gate typedef struct acpi_mem_space_context 13137c478bd9Sstevel@tonic-gate { 131427f7c583Smyers UINT32 Length; 131527f7c583Smyers ACPI_PHYSICAL_ADDRESS Address; 131627f7c583Smyers ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 131727f7c583Smyers UINT8 *MappedLogicalAddress; 131827f7c583Smyers ACPI_SIZE MappedLength; 13197c478bd9Sstevel@tonic-gate 13207c478bd9Sstevel@tonic-gate } ACPI_MEM_SPACE_CONTEXT; 13217c478bd9Sstevel@tonic-gate 13227c478bd9Sstevel@tonic-gate 13237c478bd9Sstevel@tonic-gate /* 1324aa2aa9a6SDana Myers * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled 13257c478bd9Sstevel@tonic-gate */ 1326aa2aa9a6SDana Myers typedef struct acpi_memory_list 132730082d0cSmyers { 1328*7b1019a6SJerry Jelinek const char *ListName; 1329aa2aa9a6SDana Myers void *ListHead; 1330aa2aa9a6SDana Myers UINT16 ObjectSize; 1331aa2aa9a6SDana Myers UINT16 MaxDepth; 1332aa2aa9a6SDana Myers UINT16 CurrentDepth; 1333aa2aa9a6SDana Myers 1334aa2aa9a6SDana Myers #ifdef ACPI_DBG_TRACK_ALLOCATIONS 1335aa2aa9a6SDana Myers 1336aa2aa9a6SDana Myers /* Statistics for debug memory tracking only */ 1337aa2aa9a6SDana Myers 1338aa2aa9a6SDana Myers UINT32 TotalAllocated; 1339aa2aa9a6SDana Myers UINT32 TotalFreed; 1340aa2aa9a6SDana Myers UINT32 MaxOccupied; 1341aa2aa9a6SDana Myers UINT32 TotalSize; 1342aa2aa9a6SDana Myers UINT32 CurrentTotalSize; 1343aa2aa9a6SDana Myers UINT32 Requests; 1344aa2aa9a6SDana Myers UINT32 Hits; 1345aa2aa9a6SDana Myers #endif 13467c478bd9Sstevel@tonic-gate 1347aa2aa9a6SDana Myers } ACPI_MEMORY_LIST; 13487c478bd9Sstevel@tonic-gate 13497c478bd9Sstevel@tonic-gate 1350*7b1019a6SJerry Jelinek /* Definitions of trace event types */ 1351*7b1019a6SJerry Jelinek 1352*7b1019a6SJerry Jelinek typedef enum 1353*7b1019a6SJerry Jelinek { 1354*7b1019a6SJerry Jelinek ACPI_TRACE_AML_METHOD, 1355*7b1019a6SJerry Jelinek ACPI_TRACE_AML_OPCODE, 1356*7b1019a6SJerry Jelinek ACPI_TRACE_AML_REGION 1357*7b1019a6SJerry Jelinek 1358*7b1019a6SJerry Jelinek } ACPI_TRACE_EVENT_TYPE; 1359*7b1019a6SJerry Jelinek 1360*7b1019a6SJerry Jelinek 1361*7b1019a6SJerry Jelinek /* Definitions of _OSI support */ 1362*7b1019a6SJerry Jelinek 1363*7b1019a6SJerry Jelinek #define ACPI_VENDOR_STRINGS 0x01 1364*7b1019a6SJerry Jelinek #define ACPI_FEATURE_STRINGS 0x02 1365*7b1019a6SJerry Jelinek #define ACPI_ENABLE_INTERFACES 0x00 1366*7b1019a6SJerry Jelinek #define ACPI_DISABLE_INTERFACES 0x04 1367*7b1019a6SJerry Jelinek 1368*7b1019a6SJerry Jelinek #define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS) 1369*7b1019a6SJerry Jelinek #define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS) 1370*7b1019a6SJerry Jelinek #define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) 1371*7b1019a6SJerry Jelinek #define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS) 1372*7b1019a6SJerry Jelinek #define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS) 1373*7b1019a6SJerry Jelinek #define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) 1374*7b1019a6SJerry Jelinek 1375*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_2000 0x01 1376*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_XP 0x02 1377*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_XP_SP1 0x03 1378*7b1019a6SJerry Jelinek #define ACPI_OSI_WINSRV_2003 0x04 1379*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_XP_SP2 0x05 1380*7b1019a6SJerry Jelinek #define ACPI_OSI_WINSRV_2003_SP1 0x06 1381*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_VISTA 0x07 1382*7b1019a6SJerry Jelinek #define ACPI_OSI_WINSRV_2008 0x08 1383*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_VISTA_SP1 0x09 1384*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_VISTA_SP2 0x0A 1385*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_7 0x0B 1386*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_8 0x0C 1387*7b1019a6SJerry Jelinek #define ACPI_OSI_WIN_10 0x0D 1388*7b1019a6SJerry Jelinek 1389*7b1019a6SJerry Jelinek 1390*7b1019a6SJerry Jelinek /* Definitions of file IO */ 1391*7b1019a6SJerry Jelinek 1392*7b1019a6SJerry Jelinek #define ACPI_FILE_READING 0x01 1393*7b1019a6SJerry Jelinek #define ACPI_FILE_WRITING 0x02 1394*7b1019a6SJerry Jelinek #define ACPI_FILE_BINARY 0x04 1395*7b1019a6SJerry Jelinek 1396*7b1019a6SJerry Jelinek #define ACPI_FILE_BEGIN 0x01 1397*7b1019a6SJerry Jelinek #define ACPI_FILE_END 0x02 1398*7b1019a6SJerry Jelinek 1399*7b1019a6SJerry Jelinek 1400*7b1019a6SJerry Jelinek /* Definitions of getopt */ 1401*7b1019a6SJerry Jelinek 1402*7b1019a6SJerry Jelinek #define ACPI_OPT_END -1 1403*7b1019a6SJerry Jelinek 1404*7b1019a6SJerry Jelinek 14057c478bd9Sstevel@tonic-gate #endif /* __ACTYPES_H__ */ 1406