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 7*26f3cdf0SGordon Ross /* 8*26f3cdf0SGordon Ross * Copyright (C) 2000 - 2011, Intel Corp. 97c478bd9Sstevel@tonic-gate * All rights reserved. 107c478bd9Sstevel@tonic-gate * 11*26f3cdf0SGordon Ross * Redistribution and use in source and binary forms, with or without 12*26f3cdf0SGordon Ross * modification, are permitted provided that the following conditions 13*26f3cdf0SGordon Ross * are met: 14*26f3cdf0SGordon Ross * 1. Redistributions of source code must retain the above copyright 15*26f3cdf0SGordon Ross * notice, this list of conditions, and the following disclaimer, 16*26f3cdf0SGordon Ross * without modification. 17*26f3cdf0SGordon Ross * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*26f3cdf0SGordon Ross * substantially similar to the "NO WARRANTY" disclaimer below 19*26f3cdf0SGordon Ross * ("Disclaimer") and any redistribution must be conditioned upon 20*26f3cdf0SGordon Ross * including a substantially similar Disclaimer requirement for further 21*26f3cdf0SGordon Ross * binary redistribution. 22*26f3cdf0SGordon Ross * 3. Neither the names of the above-listed copyright holders nor the names 23*26f3cdf0SGordon Ross * of any contributors may be used to endorse or promote products derived 24*26f3cdf0SGordon Ross * from this software without specific prior written permission. 257c478bd9Sstevel@tonic-gate * 26*26f3cdf0SGordon Ross * Alternatively, this software may be distributed under the terms of the 27*26f3cdf0SGordon Ross * GNU General Public License ("GPL") version 2 as published by the Free 28*26f3cdf0SGordon Ross * Software Foundation. 297c478bd9Sstevel@tonic-gate * 30*26f3cdf0SGordon Ross * NO WARRANTY 31*26f3cdf0SGordon Ross * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*26f3cdf0SGordon Ross * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*26f3cdf0SGordon Ross * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*26f3cdf0SGordon Ross * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*26f3cdf0SGordon Ross * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*26f3cdf0SGordon Ross * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*26f3cdf0SGordon Ross * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*26f3cdf0SGordon Ross * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*26f3cdf0SGordon Ross * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*26f3cdf0SGordon Ross * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*26f3cdf0SGordon Ross * POSSIBILITY OF SUCH DAMAGES. 42*26f3cdf0SGordon 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 5830082d0cSmyers /*! [Begin] no source code translation */ 597c478bd9Sstevel@tonic-gate 607c478bd9Sstevel@tonic-gate /* 617c478bd9Sstevel@tonic-gate * Data type ranges 627c478bd9Sstevel@tonic-gate * Note: These macros are designed to be compiler independent as well as 637c478bd9Sstevel@tonic-gate * working around problems that some 32-bit compilers have with 64-bit 647c478bd9Sstevel@tonic-gate * constants. 657c478bd9Sstevel@tonic-gate */ 667c478bd9Sstevel@tonic-gate #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 677c478bd9Sstevel@tonic-gate #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 687c478bd9Sstevel@tonic-gate #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 697c478bd9Sstevel@tonic-gate #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 707c478bd9Sstevel@tonic-gate #define ACPI_ASCII_MAX 0x7F 717c478bd9Sstevel@tonic-gate 727c478bd9Sstevel@tonic-gate 737c478bd9Sstevel@tonic-gate /* 7430082d0cSmyers * Architecture-specific ACPICA Subsystem Data Types 7530082d0cSmyers * 7630082d0cSmyers * The goal of these types is to provide source code portability across 7730082d0cSmyers * 16-bit, 32-bit, and 64-bit targets. 7830082d0cSmyers * 7930082d0cSmyers * 1) The following types are of fixed size for all targets (16/32/64): 8030082d0cSmyers * 8130082d0cSmyers * BOOLEAN Logical boolean 8230082d0cSmyers * 8330082d0cSmyers * UINT8 8-bit (1 byte) unsigned value 8430082d0cSmyers * UINT16 16-bit (2 byte) unsigned value 8530082d0cSmyers * UINT32 32-bit (4 byte) unsigned value 8630082d0cSmyers * UINT64 64-bit (8 byte) unsigned value 8730082d0cSmyers * 8830082d0cSmyers * INT16 16-bit (2 byte) signed value 8930082d0cSmyers * INT32 32-bit (4 byte) signed value 9030082d0cSmyers * INT64 64-bit (8 byte) signed value 9130082d0cSmyers * 9230082d0cSmyers * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 9330082d0cSmyers * compiler-dependent header(s) and were introduced because there is no common 9430082d0cSmyers * 64-bit integer type across the various compilation models, as shown in 9530082d0cSmyers * the table below. 9630082d0cSmyers * 9730082d0cSmyers * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 9830082d0cSmyers * char 8 8 8 8 8 8 9930082d0cSmyers * short 16 16 16 16 16 16 10030082d0cSmyers * _int32 32 10130082d0cSmyers * int 32 64 32 32 16 16 10230082d0cSmyers * long 64 64 32 32 32 32 10330082d0cSmyers * long long 64 64 10430082d0cSmyers * pointer 64 64 64 32 32 32 10530082d0cSmyers * 10630082d0cSmyers * Note: ILP64 and LP32 are currently not supported. 10730082d0cSmyers * 10830082d0cSmyers * 10930082d0cSmyers * 2) These types represent the native word size of the target mode of the 11030082d0cSmyers * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 11130082d0cSmyers * usually used for memory allocation, efficient loop counters, and array 11230082d0cSmyers * indexes. The types are similar to the size_t type in the C library and are 11330082d0cSmyers * required because there is no C type that consistently represents the native 114db2bae30SDana Myers * data width. ACPI_SIZE is needed because there is no guarantee that a 115db2bae30SDana Myers * kernel-level C library is present. 11630082d0cSmyers * 11730082d0cSmyers * ACPI_SIZE 16/32/64-bit unsigned value 11830082d0cSmyers * ACPI_NATIVE_INT 16/32/64-bit signed value 1197c478bd9Sstevel@tonic-gate */ 1207c478bd9Sstevel@tonic-gate 12130082d0cSmyers /******************************************************************************* 12230082d0cSmyers * 12330082d0cSmyers * Common types for all compilers, all targets 12430082d0cSmyers * 12530082d0cSmyers ******************************************************************************/ 1267c478bd9Sstevel@tonic-gate 12730082d0cSmyers typedef unsigned char BOOLEAN; 12830082d0cSmyers typedef unsigned char UINT8; 12930082d0cSmyers typedef unsigned short UINT16; 13030082d0cSmyers typedef COMPILER_DEPENDENT_UINT64 UINT64; 13130082d0cSmyers typedef COMPILER_DEPENDENT_INT64 INT64; 1327c478bd9Sstevel@tonic-gate 13330082d0cSmyers /*! [End] no source code translation !*/ 1347c478bd9Sstevel@tonic-gate 135*26f3cdf0SGordon Ross /* 136*26f3cdf0SGordon Ross * Value returned by AcpiOsGetThreadId. There is no standard "thread_id" 137*26f3cdf0SGordon Ross * across operating systems or even the various UNIX systems. Since ACPICA 138*26f3cdf0SGordon Ross * only needs the thread ID as a unique thread identifier, we use a UINT64 139*26f3cdf0SGordon Ross * as the only common data type - it will accommodate any type of pointer or 140*26f3cdf0SGordon Ross * any type of integer. It is up to the host-dependent OSL to cast the 141*26f3cdf0SGordon Ross * native thread ID type to a UINT64 (in AcpiOsGetThreadId). 142*26f3cdf0SGordon Ross */ 143*26f3cdf0SGordon Ross #define ACPI_THREAD_ID UINT64 144*26f3cdf0SGordon Ross 14530082d0cSmyers 14630082d0cSmyers /******************************************************************************* 14730082d0cSmyers * 14830082d0cSmyers * Types specific to 64-bit targets 14930082d0cSmyers * 15030082d0cSmyers ******************************************************************************/ 1517c478bd9Sstevel@tonic-gate 1527c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 1537c478bd9Sstevel@tonic-gate 15430082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 1557c478bd9Sstevel@tonic-gate 1567c478bd9Sstevel@tonic-gate typedef unsigned int UINT32; 15730082d0cSmyers typedef int INT32; 1587c478bd9Sstevel@tonic-gate 1597c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/ 1607c478bd9Sstevel@tonic-gate 16130082d0cSmyers 16230082d0cSmyers typedef INT64 ACPI_NATIVE_INT; 163db2bae30SDana Myers typedef UINT64 ACPI_SIZE; 1647c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_IO_ADDRESS; 1657c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_PHYSICAL_ADDRESS; 1667c478bd9Sstevel@tonic-gate 1677c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR ACPI_UINT64_MAX 1687c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX ACPI_UINT64_MAX 16930082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 1707c478bd9Sstevel@tonic-gate 1717c478bd9Sstevel@tonic-gate /* 17230082d0cSmyers * In the case of the Itanium Processor Family (IPF), the hardware does not 17330082d0cSmyers * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 17430082d0cSmyers * to indicate that special precautions must be taken to avoid alignment faults. 17530082d0cSmyers * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 17630082d0cSmyers * 17730082d0cSmyers * Note: EM64T and other X86-64 processors support misaligned transfers, 17830082d0cSmyers * so there is no need to define this flag. 1797c478bd9Sstevel@tonic-gate */ 18030082d0cSmyers #if defined (__IA64__) || defined (__ia64__) 18130082d0cSmyers #define ACPI_MISALIGNMENT_NOT_SUPPORTED 18230082d0cSmyers #endif 1837c478bd9Sstevel@tonic-gate 1847c478bd9Sstevel@tonic-gate 18530082d0cSmyers /******************************************************************************* 18630082d0cSmyers * 18730082d0cSmyers * Types specific to 32-bit targets 18830082d0cSmyers * 18930082d0cSmyers ******************************************************************************/ 19030082d0cSmyers 19130082d0cSmyers #elif ACPI_MACHINE_WIDTH == 32 19230082d0cSmyers 19330082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 19430082d0cSmyers 19530082d0cSmyers typedef unsigned int UINT32; 19630082d0cSmyers typedef int INT32; 19730082d0cSmyers 19830082d0cSmyers /*! [End] no source code translation !*/ 19930082d0cSmyers 20030082d0cSmyers 20130082d0cSmyers typedef INT32 ACPI_NATIVE_INT; 202db2bae30SDana Myers typedef UINT32 ACPI_SIZE; 20330082d0cSmyers typedef UINT32 ACPI_IO_ADDRESS; 204db2bae30SDana Myers typedef UINT32 ACPI_PHYSICAL_ADDRESS; 20530082d0cSmyers 20630082d0cSmyers #define ACPI_MAX_PTR ACPI_UINT32_MAX 20730082d0cSmyers #define ACPI_SIZE_MAX ACPI_UINT32_MAX 20830082d0cSmyers 20930082d0cSmyers #else 2107c478bd9Sstevel@tonic-gate 211db2bae30SDana Myers /* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 2127c478bd9Sstevel@tonic-gate 21330082d0cSmyers #error unknown ACPI_MACHINE_WIDTH 21430082d0cSmyers #endif 2157c478bd9Sstevel@tonic-gate 2167c478bd9Sstevel@tonic-gate 21730082d0cSmyers /******************************************************************************* 21830082d0cSmyers * 219aa2aa9a6SDana Myers * OS-dependent types 22030082d0cSmyers * 22127f7c583Smyers * If the defaults below are not appropriate for the host system, they can 222aa2aa9a6SDana Myers * be defined in the OS-specific header, and this will take precedence. 22330082d0cSmyers * 22430082d0cSmyers ******************************************************************************/ 22530082d0cSmyers 22627f7c583Smyers /* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 22727f7c583Smyers 22830082d0cSmyers #ifndef ACPI_CPU_FLAGS 229db2bae30SDana Myers #define ACPI_CPU_FLAGS ACPI_SIZE 23030082d0cSmyers #endif 23130082d0cSmyers 23227f7c583Smyers /* Object returned from AcpiOsCreateCache */ 23327f7c583Smyers 23427f7c583Smyers #ifndef ACPI_CACHE_T 235aa2aa9a6SDana Myers #ifdef ACPI_USE_LOCAL_CACHE 23627f7c583Smyers #define ACPI_CACHE_T ACPI_MEMORY_LIST 237aa2aa9a6SDana Myers #else 238aa2aa9a6SDana Myers #define ACPI_CACHE_T void * 239aa2aa9a6SDana Myers #endif 24027f7c583Smyers #endif 24127f7c583Smyers 242aa2aa9a6SDana Myers /* 243aa2aa9a6SDana Myers * Synchronization objects - Mutexes, Semaphores, and SpinLocks 244aa2aa9a6SDana Myers */ 245aa2aa9a6SDana Myers #if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) 246aa2aa9a6SDana Myers /* 247aa2aa9a6SDana Myers * These macros are used if the host OS does not support a mutex object. 248aa2aa9a6SDana Myers * Map the OSL Mutex interfaces to binary semaphores. 249aa2aa9a6SDana Myers */ 250aa2aa9a6SDana Myers #define ACPI_MUTEX ACPI_SEMAPHORE 251aa2aa9a6SDana Myers #define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) 252aa2aa9a6SDana Myers #define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) 253aa2aa9a6SDana Myers #define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) 254aa2aa9a6SDana Myers #define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) 255aa2aa9a6SDana Myers #endif 256aa2aa9a6SDana Myers 257aa2aa9a6SDana Myers /* Configurable types for synchronization objects */ 258aa2aa9a6SDana Myers 259aa2aa9a6SDana Myers #ifndef ACPI_SPINLOCK 260aa2aa9a6SDana Myers #define ACPI_SPINLOCK void * 261aa2aa9a6SDana Myers #endif 262aa2aa9a6SDana Myers 263aa2aa9a6SDana Myers #ifndef ACPI_SEMAPHORE 264aa2aa9a6SDana Myers #define ACPI_SEMAPHORE void * 265aa2aa9a6SDana Myers #endif 266aa2aa9a6SDana Myers 267aa2aa9a6SDana Myers #ifndef ACPI_MUTEX 268aa2aa9a6SDana Myers #define ACPI_MUTEX void * 269aa2aa9a6SDana Myers #endif 270aa2aa9a6SDana Myers 271aa2aa9a6SDana Myers 272aa2aa9a6SDana Myers /******************************************************************************* 273aa2aa9a6SDana Myers * 274aa2aa9a6SDana Myers * Compiler-dependent types 275aa2aa9a6SDana Myers * 276aa2aa9a6SDana Myers * If the defaults below are not appropriate for the host compiler, they can 277aa2aa9a6SDana Myers * be defined in the compiler-specific header, and this will take precedence. 278aa2aa9a6SDana Myers * 279aa2aa9a6SDana Myers ******************************************************************************/ 280aa2aa9a6SDana Myers 28127f7c583Smyers /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 28227f7c583Smyers 28327f7c583Smyers #ifndef ACPI_UINTPTR_T 28427f7c583Smyers #define ACPI_UINTPTR_T void * 28527f7c583Smyers #endif 28627f7c583Smyers 28730082d0cSmyers /* 28830082d0cSmyers * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 28930082d0cSmyers * some compilers can catch printf format string problems 29030082d0cSmyers */ 29130082d0cSmyers #ifndef ACPI_PRINTF_LIKE 29230082d0cSmyers #define ACPI_PRINTF_LIKE(c) 29330082d0cSmyers #endif 29430082d0cSmyers 29530082d0cSmyers /* 29630082d0cSmyers * Some compilers complain about unused variables. Sometimes we don't want to 29730082d0cSmyers * use all the variables (for example, _AcpiModuleName). This allows us 29830082d0cSmyers * to to tell the compiler in a per-variable manner that a variable 29930082d0cSmyers * is unused 30030082d0cSmyers */ 30130082d0cSmyers #ifndef ACPI_UNUSED_VAR 30230082d0cSmyers #define ACPI_UNUSED_VAR 30330082d0cSmyers #endif 30430082d0cSmyers 30527f7c583Smyers /* 30627f7c583Smyers * All ACPICA functions that are available to the rest of the kernel are 30727f7c583Smyers * tagged with this macro which can be defined as appropriate for the host. 30827f7c583Smyers */ 30927f7c583Smyers #ifndef ACPI_EXPORT_SYMBOL 31027f7c583Smyers #define ACPI_EXPORT_SYMBOL(Symbol) 31127f7c583Smyers #endif 31227f7c583Smyers 31330082d0cSmyers 314aa2aa9a6SDana Myers /****************************************************************************** 315aa2aa9a6SDana Myers * 316aa2aa9a6SDana Myers * ACPI Specification constants (Do not change unless the specification changes) 317aa2aa9a6SDana Myers * 318aa2aa9a6SDana Myers *****************************************************************************/ 319aa2aa9a6SDana Myers 320aa2aa9a6SDana Myers /* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ 321aa2aa9a6SDana Myers 322aa2aa9a6SDana Myers #define ACPI_MAX_GPE_BLOCKS 2 323aa2aa9a6SDana Myers 324aa2aa9a6SDana Myers /* Default ACPI register widths */ 325aa2aa9a6SDana Myers 326aa2aa9a6SDana Myers #define ACPI_GPE_REGISTER_WIDTH 8 327aa2aa9a6SDana Myers #define ACPI_PM1_REGISTER_WIDTH 16 328aa2aa9a6SDana Myers #define ACPI_PM2_REGISTER_WIDTH 8 329aa2aa9a6SDana Myers #define ACPI_PM_TIMER_WIDTH 32 330aa2aa9a6SDana Myers 331aa2aa9a6SDana Myers /* Names within the namespace are 4 bytes long */ 332aa2aa9a6SDana Myers 333aa2aa9a6SDana Myers #define ACPI_NAME_SIZE 4 334aa2aa9a6SDana Myers #define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ 335aa2aa9a6SDana Myers #define ACPI_PATH_SEPARATOR '.' 336aa2aa9a6SDana Myers 337aa2aa9a6SDana Myers /* Sizes for ACPI table headers */ 338aa2aa9a6SDana Myers 339aa2aa9a6SDana Myers #define ACPI_OEM_ID_SIZE 6 340aa2aa9a6SDana Myers #define ACPI_OEM_TABLE_ID_SIZE 8 341aa2aa9a6SDana Myers 342aa2aa9a6SDana Myers /* ACPI/PNP hardware IDs */ 343aa2aa9a6SDana Myers 344aa2aa9a6SDana Myers #define PCI_ROOT_HID_STRING "PNP0A03" 345aa2aa9a6SDana Myers #define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" 346aa2aa9a6SDana Myers 347aa2aa9a6SDana Myers /* PM Timer ticks per second (HZ) */ 348aa2aa9a6SDana Myers 34957190917SDana Myers #define PM_TIMER_FREQUENCY 3579545 350aa2aa9a6SDana Myers 351aa2aa9a6SDana Myers 35230082d0cSmyers /******************************************************************************* 35330082d0cSmyers * 35430082d0cSmyers * Independent types 35530082d0cSmyers * 35630082d0cSmyers ******************************************************************************/ 3577c478bd9Sstevel@tonic-gate 35830082d0cSmyers /* Logical defines and NULL */ 35930082d0cSmyers 3607c478bd9Sstevel@tonic-gate #ifdef FALSE 3617c478bd9Sstevel@tonic-gate #undef FALSE 3627c478bd9Sstevel@tonic-gate #endif 3637c478bd9Sstevel@tonic-gate #define FALSE (1 == 0) 3647c478bd9Sstevel@tonic-gate 3657c478bd9Sstevel@tonic-gate #ifdef TRUE 3667c478bd9Sstevel@tonic-gate #undef TRUE 3677c478bd9Sstevel@tonic-gate #endif 3687c478bd9Sstevel@tonic-gate #define TRUE (1 == 1) 3697c478bd9Sstevel@tonic-gate 3707c478bd9Sstevel@tonic-gate #ifndef NULL 3717c478bd9Sstevel@tonic-gate #define NULL (void *) 0 3727c478bd9Sstevel@tonic-gate #endif 3737c478bd9Sstevel@tonic-gate 3747c478bd9Sstevel@tonic-gate 3757c478bd9Sstevel@tonic-gate /* 376aa2aa9a6SDana Myers * Miscellaneous types 3777c478bd9Sstevel@tonic-gate */ 3787c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 3797c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 3807c478bd9Sstevel@tonic-gate typedef char * ACPI_STRING; /* Null terminated ASCII string */ 38130082d0cSmyers typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 3827c478bd9Sstevel@tonic-gate 383aa2aa9a6SDana Myers 384aa2aa9a6SDana Myers /* Owner IDs are used to track namespace nodes for selective deletion */ 385aa2aa9a6SDana Myers 386aa2aa9a6SDana Myers typedef UINT8 ACPI_OWNER_ID; 387aa2aa9a6SDana Myers #define ACPI_OWNER_ID_MAX 0xFF 388aa2aa9a6SDana Myers 389aa2aa9a6SDana Myers 3907c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE 64 3917c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 3927c478bd9Sstevel@tonic-gate #define ACPI_MAX64_DECIMAL_DIGITS 20 3937c478bd9Sstevel@tonic-gate #define ACPI_MAX32_DECIMAL_DIGITS 10 3947c478bd9Sstevel@tonic-gate #define ACPI_MAX16_DECIMAL_DIGITS 5 3957c478bd9Sstevel@tonic-gate #define ACPI_MAX8_DECIMAL_DIGITS 3 3967c478bd9Sstevel@tonic-gate 3977c478bd9Sstevel@tonic-gate /* 3987c478bd9Sstevel@tonic-gate * Constants with special meanings 3997c478bd9Sstevel@tonic-gate */ 40030082d0cSmyers #define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 401aa2aa9a6SDana Myers #define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ 402aa2aa9a6SDana Myers #define ACPI_DO_NOT_WAIT 0 403aa2aa9a6SDana Myers 404*26f3cdf0SGordon Ross /* 405*26f3cdf0SGordon Ross * Obsolete: Acpi integer width. In ACPI version 1 (1996), integers are 32 bits. 406*26f3cdf0SGordon Ross * In ACPI version 2 (2000) and later, integers are 64 bits. Note that this 407*26f3cdf0SGordon Ross * pertains to the ACPI integer type only, not to other integers used in the 408*26f3cdf0SGordon Ross * implementation of the ACPICA subsystem. 409*26f3cdf0SGordon Ross * 410*26f3cdf0SGordon Ross * 01/2010: This type is obsolete and has been removed from the entire ACPICA 411*26f3cdf0SGordon Ross * code base. It remains here for compatibility with device drivers that use 412*26f3cdf0SGordon Ross * the type. However, it will be removed in the future. 413*26f3cdf0SGordon Ross */ 414*26f3cdf0SGordon Ross typedef UINT64 ACPI_INTEGER; 415*26f3cdf0SGordon Ross #define ACPI_INTEGER_MAX ACPI_UINT64_MAX 416*26f3cdf0SGordon Ross 417aa2aa9a6SDana Myers 418aa2aa9a6SDana Myers /******************************************************************************* 419aa2aa9a6SDana Myers * 420aa2aa9a6SDana Myers * Commonly used macros 421aa2aa9a6SDana Myers * 422aa2aa9a6SDana Myers ******************************************************************************/ 423aa2aa9a6SDana Myers 424aa2aa9a6SDana Myers /* Data manipulation */ 425aa2aa9a6SDana Myers 426aa2aa9a6SDana Myers #define ACPI_LOBYTE(Integer) ((UINT8) (UINT16)(Integer)) 427aa2aa9a6SDana Myers #define ACPI_HIBYTE(Integer) ((UINT8) (((UINT16)(Integer)) >> 8)) 428aa2aa9a6SDana Myers #define ACPI_LOWORD(Integer) ((UINT16) (UINT32)(Integer)) 429aa2aa9a6SDana Myers #define ACPI_HIWORD(Integer) ((UINT16)(((UINT32)(Integer)) >> 16)) 430aa2aa9a6SDana Myers #define ACPI_LODWORD(Integer64) ((UINT32) (UINT64)(Integer64)) 431aa2aa9a6SDana Myers #define ACPI_HIDWORD(Integer64) ((UINT32)(((UINT64)(Integer64)) >> 32)) 432aa2aa9a6SDana Myers 433aa2aa9a6SDana Myers #define ACPI_SET_BIT(target,bit) ((target) |= (bit)) 434aa2aa9a6SDana Myers #define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) 435aa2aa9a6SDana Myers #define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) 436aa2aa9a6SDana Myers #define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) 437aa2aa9a6SDana Myers 438aa2aa9a6SDana Myers /* Size calculation */ 4397c478bd9Sstevel@tonic-gate 440aa2aa9a6SDana Myers #define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) 441aa2aa9a6SDana Myers 442aa2aa9a6SDana Myers /* Pointer manipulation */ 443aa2aa9a6SDana Myers 444aa2aa9a6SDana Myers #define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) 445aa2aa9a6SDana Myers #define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) 446aa2aa9a6SDana Myers #define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) + (ACPI_SIZE)(b))) 447aa2aa9a6SDana Myers #define ACPI_PTR_DIFF(a, b) (ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b))) 448aa2aa9a6SDana Myers 449aa2aa9a6SDana Myers /* Pointer/Integer type conversions */ 450aa2aa9a6SDana Myers 451aa2aa9a6SDana Myers #define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) NULL,(ACPI_SIZE) i) 452aa2aa9a6SDana Myers #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) NULL) 453aa2aa9a6SDana Myers #define ACPI_OFFSET(d, f) (ACPI_SIZE) ACPI_PTR_DIFF (&(((d *)0)->f), (void *) NULL) 454aa2aa9a6SDana Myers #define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) 455aa2aa9a6SDana Myers #define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) 456aa2aa9a6SDana Myers 457aa2aa9a6SDana Myers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 458aa2aa9a6SDana Myers #define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) 459aa2aa9a6SDana Myers #else 460aa2aa9a6SDana Myers #define ACPI_COMPARE_NAME(a,b) (!ACPI_STRNCMP (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) 461aa2aa9a6SDana Myers #endif 462aa2aa9a6SDana Myers 463aa2aa9a6SDana Myers 464aa2aa9a6SDana Myers /******************************************************************************* 465aa2aa9a6SDana Myers * 466aa2aa9a6SDana Myers * Miscellaneous constants 467aa2aa9a6SDana Myers * 468aa2aa9a6SDana Myers ******************************************************************************/ 4697c478bd9Sstevel@tonic-gate 4707c478bd9Sstevel@tonic-gate /* 4717c478bd9Sstevel@tonic-gate * Initialization sequence 4727c478bd9Sstevel@tonic-gate */ 4737c478bd9Sstevel@tonic-gate #define ACPI_FULL_INITIALIZATION 0x00 4747c478bd9Sstevel@tonic-gate #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 4757c478bd9Sstevel@tonic-gate #define ACPI_NO_HARDWARE_INIT 0x02 4767c478bd9Sstevel@tonic-gate #define ACPI_NO_EVENT_INIT 0x04 4777c478bd9Sstevel@tonic-gate #define ACPI_NO_HANDLER_INIT 0x08 4787c478bd9Sstevel@tonic-gate #define ACPI_NO_ACPI_ENABLE 0x10 4797c478bd9Sstevel@tonic-gate #define ACPI_NO_DEVICE_INIT 0x20 4807c478bd9Sstevel@tonic-gate #define ACPI_NO_OBJECT_INIT 0x40 4817c478bd9Sstevel@tonic-gate 4827c478bd9Sstevel@tonic-gate /* 4837c478bd9Sstevel@tonic-gate * Initialization state 4847c478bd9Sstevel@tonic-gate */ 485db2bae30SDana Myers #define ACPI_SUBSYSTEM_INITIALIZE 0x01 486db2bae30SDana Myers #define ACPI_INITIALIZED_OK 0x02 4877c478bd9Sstevel@tonic-gate 4887c478bd9Sstevel@tonic-gate /* 4897c478bd9Sstevel@tonic-gate * Power state values 4907c478bd9Sstevel@tonic-gate */ 4917c478bd9Sstevel@tonic-gate #define ACPI_STATE_UNKNOWN (UINT8) 0xFF 4927c478bd9Sstevel@tonic-gate 4937c478bd9Sstevel@tonic-gate #define ACPI_STATE_S0 (UINT8) 0 4947c478bd9Sstevel@tonic-gate #define ACPI_STATE_S1 (UINT8) 1 4957c478bd9Sstevel@tonic-gate #define ACPI_STATE_S2 (UINT8) 2 4967c478bd9Sstevel@tonic-gate #define ACPI_STATE_S3 (UINT8) 3 4977c478bd9Sstevel@tonic-gate #define ACPI_STATE_S4 (UINT8) 4 4987c478bd9Sstevel@tonic-gate #define ACPI_STATE_S5 (UINT8) 5 4997c478bd9Sstevel@tonic-gate #define ACPI_S_STATES_MAX ACPI_STATE_S5 5007c478bd9Sstevel@tonic-gate #define ACPI_S_STATE_COUNT 6 5017c478bd9Sstevel@tonic-gate 5027c478bd9Sstevel@tonic-gate #define ACPI_STATE_D0 (UINT8) 0 5037c478bd9Sstevel@tonic-gate #define ACPI_STATE_D1 (UINT8) 1 5047c478bd9Sstevel@tonic-gate #define ACPI_STATE_D2 (UINT8) 2 5057c478bd9Sstevel@tonic-gate #define ACPI_STATE_D3 (UINT8) 3 5067c478bd9Sstevel@tonic-gate #define ACPI_D_STATES_MAX ACPI_STATE_D3 5077c478bd9Sstevel@tonic-gate #define ACPI_D_STATE_COUNT 4 5087c478bd9Sstevel@tonic-gate 5097c478bd9Sstevel@tonic-gate #define ACPI_STATE_C0 (UINT8) 0 5107c478bd9Sstevel@tonic-gate #define ACPI_STATE_C1 (UINT8) 1 5117c478bd9Sstevel@tonic-gate #define ACPI_STATE_C2 (UINT8) 2 5127c478bd9Sstevel@tonic-gate #define ACPI_STATE_C3 (UINT8) 3 5137c478bd9Sstevel@tonic-gate #define ACPI_C_STATES_MAX ACPI_STATE_C3 5147c478bd9Sstevel@tonic-gate #define ACPI_C_STATE_COUNT 4 5157c478bd9Sstevel@tonic-gate 5167c478bd9Sstevel@tonic-gate /* 5177c478bd9Sstevel@tonic-gate * Sleep type invalid value 5187c478bd9Sstevel@tonic-gate */ 5197c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_MAX 0x7 5207c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_INVALID 0xFF 5217c478bd9Sstevel@tonic-gate 5227c478bd9Sstevel@tonic-gate /* 5237c478bd9Sstevel@tonic-gate * Standard notify values 5247c478bd9Sstevel@tonic-gate */ 525db2bae30SDana Myers #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 526db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 527db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 528db2bae30SDana Myers #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 529db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 530db2bae30SDana Myers #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 531db2bae30SDana Myers #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 532db2bae30SDana Myers #define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 533db2bae30SDana Myers #define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 534db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 535db2bae30SDana Myers #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A 536db2bae30SDana Myers #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B 537db2bae30SDana Myers 538db2bae30SDana Myers #define ACPI_NOTIFY_MAX 0x0B 5397c478bd9Sstevel@tonic-gate 5407c478bd9Sstevel@tonic-gate /* 541aa2aa9a6SDana Myers * Types associated with ACPI names and objects. The first group of 5427c478bd9Sstevel@tonic-gate * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 543aa2aa9a6SDana Myers * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 5447c478bd9Sstevel@tonic-gate * only add to the first group if the spec changes. 5457c478bd9Sstevel@tonic-gate * 5467c478bd9Sstevel@tonic-gate * NOTE: Types must be kept in sync with the global AcpiNsProperties 5477c478bd9Sstevel@tonic-gate * and AcpiNsTypeNames arrays. 5487c478bd9Sstevel@tonic-gate */ 5497c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_OBJECT_TYPE; 5507c478bd9Sstevel@tonic-gate 5517c478bd9Sstevel@tonic-gate #define ACPI_TYPE_ANY 0x00 5527c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 5537c478bd9Sstevel@tonic-gate #define ACPI_TYPE_STRING 0x02 5547c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER 0x03 5557c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 5567c478bd9Sstevel@tonic-gate #define ACPI_TYPE_FIELD_UNIT 0x05 5577c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 5587c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EVENT 0x07 5597c478bd9Sstevel@tonic-gate #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 5607c478bd9Sstevel@tonic-gate #define ACPI_TYPE_MUTEX 0x09 5617c478bd9Sstevel@tonic-gate #define ACPI_TYPE_REGION 0x0A 5627c478bd9Sstevel@tonic-gate #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 5637c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 5647c478bd9Sstevel@tonic-gate #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 5657c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER_FIELD 0x0E 5667c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DDB_HANDLE 0x0F 5677c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEBUG_OBJECT 0x10 5687c478bd9Sstevel@tonic-gate 5697c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EXTERNAL_MAX 0x10 5707c478bd9Sstevel@tonic-gate 5717c478bd9Sstevel@tonic-gate /* 5727c478bd9Sstevel@tonic-gate * These are object types that do not map directly to the ACPI 5737c478bd9Sstevel@tonic-gate * ObjectType() operator. They are used for various internal purposes only. 5747c478bd9Sstevel@tonic-gate * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 5757c478bd9Sstevel@tonic-gate * internal types must move upwards. (There is code that depends on these 5767c478bd9Sstevel@tonic-gate * values being contiguous with the external types above.) 5777c478bd9Sstevel@tonic-gate */ 5787c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 5797c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 5807c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 5817c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 5827c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ALIAS 0x15 5837c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 5847c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_NOTIFY 0x17 5857c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 5867c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE 0x19 5877c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 5887c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 5897c478bd9Sstevel@tonic-gate 5907c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 5917c478bd9Sstevel@tonic-gate 5927c478bd9Sstevel@tonic-gate /* 5937c478bd9Sstevel@tonic-gate * These are special object types that never appear in 5947c478bd9Sstevel@tonic-gate * a Namespace node, only in an ACPI_OPERAND_OBJECT 5957c478bd9Sstevel@tonic-gate */ 5967c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_EXTRA 0x1C 5977c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_DATA 0x1D 5987c478bd9Sstevel@tonic-gate 5997c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_MAX 0x1D 6007c478bd9Sstevel@tonic-gate 6017c478bd9Sstevel@tonic-gate /* All types above here are invalid */ 6027c478bd9Sstevel@tonic-gate 6037c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INVALID 0x1E 6047c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NOT_FOUND 0xFF 6057c478bd9Sstevel@tonic-gate 606db2bae30SDana Myers #define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) 607db2bae30SDana Myers 608db2bae30SDana Myers 6097c478bd9Sstevel@tonic-gate /* 6107c478bd9Sstevel@tonic-gate * All I/O 6117c478bd9Sstevel@tonic-gate */ 6127c478bd9Sstevel@tonic-gate #define ACPI_READ 0 6137c478bd9Sstevel@tonic-gate #define ACPI_WRITE 1 6147c478bd9Sstevel@tonic-gate #define ACPI_IO_MASK 1 6157c478bd9Sstevel@tonic-gate 6167c478bd9Sstevel@tonic-gate /* 6177c478bd9Sstevel@tonic-gate * Event Types: Fixed & General Purpose 6187c478bd9Sstevel@tonic-gate */ 6197c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_TYPE; 6207c478bd9Sstevel@tonic-gate 6217c478bd9Sstevel@tonic-gate /* 6227c478bd9Sstevel@tonic-gate * Fixed events 6237c478bd9Sstevel@tonic-gate */ 6247c478bd9Sstevel@tonic-gate #define ACPI_EVENT_PMTIMER 0 6257c478bd9Sstevel@tonic-gate #define ACPI_EVENT_GLOBAL 1 6267c478bd9Sstevel@tonic-gate #define ACPI_EVENT_POWER_BUTTON 2 6277c478bd9Sstevel@tonic-gate #define ACPI_EVENT_SLEEP_BUTTON 3 6287c478bd9Sstevel@tonic-gate #define ACPI_EVENT_RTC 4 6297c478bd9Sstevel@tonic-gate #define ACPI_EVENT_MAX 4 6307c478bd9Sstevel@tonic-gate #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 6317c478bd9Sstevel@tonic-gate 6327c478bd9Sstevel@tonic-gate /* 6337c478bd9Sstevel@tonic-gate * Event Status - Per event 6347c478bd9Sstevel@tonic-gate * ------------- 6357c478bd9Sstevel@tonic-gate * The encoding of ACPI_EVENT_STATUS is illustrated below. 6367c478bd9Sstevel@tonic-gate * Note that a set bit (1) indicates the property is TRUE 6377c478bd9Sstevel@tonic-gate * (e.g. if bit 0 is set then the event is enabled). 6387c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 6397c478bd9Sstevel@tonic-gate * | Bits 31:3 |2|1|0| 6407c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 6417c478bd9Sstevel@tonic-gate * | | | | 6427c478bd9Sstevel@tonic-gate * | | | +- Enabled? 6437c478bd9Sstevel@tonic-gate * | | +--- Enabled for wake? 6447c478bd9Sstevel@tonic-gate * | +----- Set? 6457c478bd9Sstevel@tonic-gate * +----------- <Reserved> 6467c478bd9Sstevel@tonic-gate */ 6477c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_STATUS; 6487c478bd9Sstevel@tonic-gate 6497c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 6507c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 6517c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 6527c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 6537c478bd9Sstevel@tonic-gate 6547c478bd9Sstevel@tonic-gate /* 6557c478bd9Sstevel@tonic-gate * General Purpose Events (GPE) 6567c478bd9Sstevel@tonic-gate */ 6577c478bd9Sstevel@tonic-gate #define ACPI_GPE_INVALID 0xFF 6587c478bd9Sstevel@tonic-gate #define ACPI_GPE_MAX 0xFF 6597c478bd9Sstevel@tonic-gate #define ACPI_NUM_GPE 256 6607c478bd9Sstevel@tonic-gate 661*26f3cdf0SGordon Ross /* Actions for AcpiSetGpe, AcpiGpeWakeup, AcpiHwLowSetGpe */ 662*26f3cdf0SGordon Ross 6637c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE 0 6647c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISABLE 1 665*26f3cdf0SGordon Ross #define ACPI_GPE_CONDITIONAL_ENABLE 2 6667c478bd9Sstevel@tonic-gate 6677c478bd9Sstevel@tonic-gate /* 6687c478bd9Sstevel@tonic-gate * GPE info flags - Per GPE 669*26f3cdf0SGordon Ross * +-------+-+-+---+ 670*26f3cdf0SGordon Ross * | 7:4 |3|2|1:0| 671*26f3cdf0SGordon Ross * +-------+-+-+---+ 672*26f3cdf0SGordon Ross * | | | | 673*26f3cdf0SGordon Ross * | | | +-- Type of dispatch:to method, handler, notify, or none 674*26f3cdf0SGordon Ross * | | +----- Interrupt type: edge or level triggered 675*26f3cdf0SGordon Ross * | +------- Is a Wake GPE 676*26f3cdf0SGordon Ross * +------------ <Reserved> 6777c478bd9Sstevel@tonic-gate */ 678*26f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_NONE (UINT8) 0x00 679*26f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x01 680*26f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x02 681*26f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_NOTIFY (UINT8) 0x03 682*26f3cdf0SGordon Ross #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x03 6837c478bd9Sstevel@tonic-gate 684*26f3cdf0SGordon Ross #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x04 685*26f3cdf0SGordon Ross #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 686*26f3cdf0SGordon Ross #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x04 6877c478bd9Sstevel@tonic-gate 688*26f3cdf0SGordon Ross #define ACPI_GPE_CAN_WAKE (UINT8) 0x08 6897c478bd9Sstevel@tonic-gate 6907c478bd9Sstevel@tonic-gate /* 6917c478bd9Sstevel@tonic-gate * Flags for GPE and Lock interfaces 6927c478bd9Sstevel@tonic-gate */ 6937c478bd9Sstevel@tonic-gate #define ACPI_NOT_ISR 0x1 6947c478bd9Sstevel@tonic-gate #define ACPI_ISR 0x0 6957c478bd9Sstevel@tonic-gate 6967c478bd9Sstevel@tonic-gate 6977c478bd9Sstevel@tonic-gate /* Notify types */ 6987c478bd9Sstevel@tonic-gate 6997c478bd9Sstevel@tonic-gate #define ACPI_SYSTEM_NOTIFY 0x1 7007c478bd9Sstevel@tonic-gate #define ACPI_DEVICE_NOTIFY 0x2 701db2bae30SDana Myers #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) 7027c478bd9Sstevel@tonic-gate #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 7037c478bd9Sstevel@tonic-gate 7047c478bd9Sstevel@tonic-gate #define ACPI_MAX_SYS_NOTIFY 0x7f 7057c478bd9Sstevel@tonic-gate 7067c478bd9Sstevel@tonic-gate 7077c478bd9Sstevel@tonic-gate /* Address Space (Operation Region) Types */ 7087c478bd9Sstevel@tonic-gate 7097c478bd9Sstevel@tonic-gate typedef UINT8 ACPI_ADR_SPACE_TYPE; 7107c478bd9Sstevel@tonic-gate 7117c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 7127c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 7137c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 7147c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 7157c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 7167c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 7177c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 71857190917SDana Myers #define ACPI_ADR_SPACE_IPMI (ACPI_ADR_SPACE_TYPE) 7 7197c478bd9Sstevel@tonic-gate 720*26f3cdf0SGordon Ross #define ACPI_NUM_PREDEFINED_REGIONS 8 721*26f3cdf0SGordon Ross 722*26f3cdf0SGordon Ross /* 723*26f3cdf0SGordon Ross * Special Address Spaces 724*26f3cdf0SGordon Ross * 725*26f3cdf0SGordon Ross * Note: A Data Table region is a special type of operation region 726*26f3cdf0SGordon Ross * that has its own AML opcode. However, internally, the AML 727*26f3cdf0SGordon Ross * interpreter simply creates an operation region with an an address 728*26f3cdf0SGordon Ross * space type of ACPI_ADR_SPACE_DATA_TABLE. 729*26f3cdf0SGordon Ross */ 730*26f3cdf0SGordon Ross #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 0x7E /* Internal to ACPICA only */ 731*26f3cdf0SGordon Ross #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 0x7F 732*26f3cdf0SGordon Ross 733*26f3cdf0SGordon Ross /* Values for _REG connection code */ 734*26f3cdf0SGordon Ross 735*26f3cdf0SGordon Ross #define ACPI_REG_DISCONNECT 0 736*26f3cdf0SGordon Ross #define ACPI_REG_CONNECT 1 7377c478bd9Sstevel@tonic-gate 7387c478bd9Sstevel@tonic-gate /* 7397c478bd9Sstevel@tonic-gate * BitRegister IDs 740aa2aa9a6SDana Myers * 741aa2aa9a6SDana Myers * These values are intended to be used by the hardware interfaces 742aa2aa9a6SDana Myers * and are mapped to individual bitfields defined within the ACPI 743aa2aa9a6SDana Myers * registers. See the AcpiGbl_BitRegisterInfo global table in utglobal.c 744aa2aa9a6SDana Myers * for this mapping. 7457c478bd9Sstevel@tonic-gate */ 746aa2aa9a6SDana Myers 747aa2aa9a6SDana Myers /* PM1 Status register */ 748aa2aa9a6SDana Myers 7497c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_STATUS 0x00 7507c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 7517c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 7527c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 7537c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 7547c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 7557c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_STATUS 0x06 7567c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 7577c478bd9Sstevel@tonic-gate 758aa2aa9a6SDana Myers /* PM1 Enable register */ 759aa2aa9a6SDana Myers 7607c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_ENABLE 0x08 7617c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 7627c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 7637c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 7647c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 765aa2aa9a6SDana Myers #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D 766aa2aa9a6SDana Myers 767aa2aa9a6SDana Myers /* PM1 Control register */ 7687c478bd9Sstevel@tonic-gate 769aa2aa9a6SDana Myers #define ACPI_BITREG_SCI_ENABLE 0x0E 770aa2aa9a6SDana Myers #define ACPI_BITREG_BUS_MASTER_RLD 0x0F 771aa2aa9a6SDana Myers #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 772aa2aa9a6SDana Myers #define ACPI_BITREG_SLEEP_TYPE 0x11 773aa2aa9a6SDana Myers #define ACPI_BITREG_SLEEP_ENABLE 0x12 7747c478bd9Sstevel@tonic-gate 775aa2aa9a6SDana Myers /* PM2 Control register */ 7767c478bd9Sstevel@tonic-gate 777aa2aa9a6SDana Myers #define ACPI_BITREG_ARB_DISABLE 0x13 778aa2aa9a6SDana Myers 779aa2aa9a6SDana Myers #define ACPI_BITREG_MAX 0x13 7807c478bd9Sstevel@tonic-gate #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 7817c478bd9Sstevel@tonic-gate 7827c478bd9Sstevel@tonic-gate 783aa2aa9a6SDana Myers /* Status register values. A 1 clears a status bit. 0 = no effect */ 784aa2aa9a6SDana Myers 785aa2aa9a6SDana Myers #define ACPI_CLEAR_STATUS 1 786aa2aa9a6SDana Myers 787aa2aa9a6SDana Myers /* Enable and Control register values */ 788aa2aa9a6SDana Myers 789aa2aa9a6SDana Myers #define ACPI_ENABLE_EVENT 1 790aa2aa9a6SDana Myers #define ACPI_DISABLE_EVENT 0 791aa2aa9a6SDana Myers 792aa2aa9a6SDana Myers 7937c478bd9Sstevel@tonic-gate /* 7947c478bd9Sstevel@tonic-gate * External ACPI object definition 7957c478bd9Sstevel@tonic-gate */ 796db2bae30SDana Myers 797db2bae30SDana Myers /* 798db2bae30SDana Myers * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element 799db2bae30SDana Myers * or an unresolved named reference. 800db2bae30SDana Myers */ 8017c478bd9Sstevel@tonic-gate typedef union acpi_object 8027c478bd9Sstevel@tonic-gate { 80327f7c583Smyers ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 8047c478bd9Sstevel@tonic-gate struct 8057c478bd9Sstevel@tonic-gate { 806db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ 807*26f3cdf0SGordon Ross UINT64 Value; /* The actual number */ 8087c478bd9Sstevel@tonic-gate } Integer; 8097c478bd9Sstevel@tonic-gate 8107c478bd9Sstevel@tonic-gate struct 8117c478bd9Sstevel@tonic-gate { 812db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ 81327f7c583Smyers UINT32 Length; /* # of bytes in string, excluding trailing null */ 81427f7c583Smyers char *Pointer; /* points to the string value */ 8157c478bd9Sstevel@tonic-gate } String; 8167c478bd9Sstevel@tonic-gate 8177c478bd9Sstevel@tonic-gate struct 8187c478bd9Sstevel@tonic-gate { 819db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ 82027f7c583Smyers UINT32 Length; /* # of bytes in buffer */ 82127f7c583Smyers UINT8 *Pointer; /* points to the buffer */ 8227c478bd9Sstevel@tonic-gate } Buffer; 8237c478bd9Sstevel@tonic-gate 8247c478bd9Sstevel@tonic-gate struct 8257c478bd9Sstevel@tonic-gate { 826db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ 82727f7c583Smyers UINT32 Count; /* # of elements in package */ 82827f7c583Smyers union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 8297c478bd9Sstevel@tonic-gate } Package; 8307c478bd9Sstevel@tonic-gate 8317c478bd9Sstevel@tonic-gate struct 8327c478bd9Sstevel@tonic-gate { 833db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ 834db2bae30SDana Myers ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ 835db2bae30SDana Myers ACPI_HANDLE Handle; /* object reference */ 836db2bae30SDana Myers } Reference; 837db2bae30SDana Myers 838db2bae30SDana Myers struct 839db2bae30SDana Myers { 840db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ 84127f7c583Smyers UINT32 ProcId; 84227f7c583Smyers ACPI_IO_ADDRESS PblkAddress; 84327f7c583Smyers UINT32 PblkLength; 8447c478bd9Sstevel@tonic-gate } Processor; 8457c478bd9Sstevel@tonic-gate 8467c478bd9Sstevel@tonic-gate struct 8477c478bd9Sstevel@tonic-gate { 848db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ 84927f7c583Smyers UINT32 SystemLevel; 85027f7c583Smyers UINT32 ResourceOrder; 8517c478bd9Sstevel@tonic-gate } PowerResource; 8527c478bd9Sstevel@tonic-gate 8537c478bd9Sstevel@tonic-gate } ACPI_OBJECT; 8547c478bd9Sstevel@tonic-gate 8557c478bd9Sstevel@tonic-gate 8567c478bd9Sstevel@tonic-gate /* 8577c478bd9Sstevel@tonic-gate * List of objects, used as a parameter list for control method evaluation 8587c478bd9Sstevel@tonic-gate */ 8597c478bd9Sstevel@tonic-gate typedef struct acpi_object_list 8607c478bd9Sstevel@tonic-gate { 86127f7c583Smyers UINT32 Count; 86227f7c583Smyers ACPI_OBJECT *Pointer; 8637c478bd9Sstevel@tonic-gate 8647c478bd9Sstevel@tonic-gate } ACPI_OBJECT_LIST; 8657c478bd9Sstevel@tonic-gate 8667c478bd9Sstevel@tonic-gate 8677c478bd9Sstevel@tonic-gate /* 8687c478bd9Sstevel@tonic-gate * Miscellaneous common Data Structures used by the interfaces 8697c478bd9Sstevel@tonic-gate */ 8707c478bd9Sstevel@tonic-gate #define ACPI_NO_BUFFER 0 8717c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) 8727c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) 8737c478bd9Sstevel@tonic-gate 8747c478bd9Sstevel@tonic-gate typedef struct acpi_buffer 8757c478bd9Sstevel@tonic-gate { 87627f7c583Smyers ACPI_SIZE Length; /* Length in bytes of the buffer */ 87727f7c583Smyers void *Pointer; /* pointer to buffer */ 8787c478bd9Sstevel@tonic-gate 8797c478bd9Sstevel@tonic-gate } ACPI_BUFFER; 8807c478bd9Sstevel@tonic-gate 8817c478bd9Sstevel@tonic-gate 8827c478bd9Sstevel@tonic-gate /* 8837c478bd9Sstevel@tonic-gate * NameType for AcpiGetName 8847c478bd9Sstevel@tonic-gate */ 8857c478bd9Sstevel@tonic-gate #define ACPI_FULL_PATHNAME 0 8867c478bd9Sstevel@tonic-gate #define ACPI_SINGLE_NAME 1 8877c478bd9Sstevel@tonic-gate #define ACPI_NAME_TYPE_MAX 1 8887c478bd9Sstevel@tonic-gate 8897c478bd9Sstevel@tonic-gate 890aa2aa9a6SDana Myers /* 891aa2aa9a6SDana Myers * Predefined Namespace items 892aa2aa9a6SDana Myers */ 893aa2aa9a6SDana Myers typedef struct acpi_predefined_names 894aa2aa9a6SDana Myers { 895aa2aa9a6SDana Myers char *Name; 896aa2aa9a6SDana Myers UINT8 Type; 897aa2aa9a6SDana Myers char *Val; 898aa2aa9a6SDana Myers 899aa2aa9a6SDana Myers } ACPI_PREDEFINED_NAMES; 900aa2aa9a6SDana Myers 901aa2aa9a6SDana Myers 9027c478bd9Sstevel@tonic-gate /* 9037c478bd9Sstevel@tonic-gate * Structure and flags for AcpiGetSystemInfo 9047c478bd9Sstevel@tonic-gate */ 9057c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_UNKNOWN 0x0000 9067c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_ACPI 0x0001 9077c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_LEGACY 0x0002 9087c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODES_MASK 0x0003 9097c478bd9Sstevel@tonic-gate 9107c478bd9Sstevel@tonic-gate 9117c478bd9Sstevel@tonic-gate /* 9127c478bd9Sstevel@tonic-gate * System info returned by AcpiGetSystemInfo() 9137c478bd9Sstevel@tonic-gate */ 9147c478bd9Sstevel@tonic-gate typedef struct acpi_system_info 9157c478bd9Sstevel@tonic-gate { 91627f7c583Smyers UINT32 AcpiCaVersion; 91727f7c583Smyers UINT32 Flags; 91827f7c583Smyers UINT32 TimerResolution; 91927f7c583Smyers UINT32 Reserved1; 92027f7c583Smyers UINT32 Reserved2; 92127f7c583Smyers UINT32 DebugLevel; 92227f7c583Smyers UINT32 DebugLayer; 9237c478bd9Sstevel@tonic-gate 9247c478bd9Sstevel@tonic-gate } ACPI_SYSTEM_INFO; 9257c478bd9Sstevel@tonic-gate 9267c478bd9Sstevel@tonic-gate 927db2bae30SDana Myers /* 928aa2aa9a6SDana Myers * System statistics returned by AcpiGetStatistics() 929db2bae30SDana Myers */ 930db2bae30SDana Myers typedef struct acpi_statistics 931db2bae30SDana Myers { 932db2bae30SDana Myers UINT32 SciCount; 933db2bae30SDana Myers UINT32 GpeCount; 934db2bae30SDana Myers UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; 935db2bae30SDana Myers UINT32 MethodCount; 936db2bae30SDana Myers 937db2bae30SDana Myers } ACPI_STATISTICS; 938db2bae30SDana Myers 939db2bae30SDana Myers 940db2bae30SDana Myers /* Table Event Types */ 941db2bae30SDana Myers 942db2bae30SDana Myers #define ACPI_TABLE_EVENT_LOAD 0x0 943db2bae30SDana Myers #define ACPI_TABLE_EVENT_UNLOAD 0x1 944db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 945db2bae30SDana Myers 946db2bae30SDana Myers 9477c478bd9Sstevel@tonic-gate /* 9487c478bd9Sstevel@tonic-gate * Types specific to the OS service interfaces 9497c478bd9Sstevel@tonic-gate */ 9507c478bd9Sstevel@tonic-gate typedef UINT32 9517c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 95227f7c583Smyers void *Context); 9537c478bd9Sstevel@tonic-gate 9547c478bd9Sstevel@tonic-gate typedef void 9557c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 95627f7c583Smyers void *Context); 9577c478bd9Sstevel@tonic-gate 9587c478bd9Sstevel@tonic-gate /* 9597c478bd9Sstevel@tonic-gate * Various handlers and callback procedures 9607c478bd9Sstevel@tonic-gate */ 961*26f3cdf0SGordon Ross typedef 962*26f3cdf0SGordon Ross void (*ACPI_GBL_EVENT_HANDLER) ( 963*26f3cdf0SGordon Ross UINT32 EventType, 964*26f3cdf0SGordon Ross ACPI_HANDLE Device, 965*26f3cdf0SGordon Ross UINT32 EventNumber, 966*26f3cdf0SGordon Ross void *Context); 967*26f3cdf0SGordon Ross 968*26f3cdf0SGordon Ross #define ACPI_EVENT_TYPE_GPE 0 969*26f3cdf0SGordon Ross #define ACPI_EVENT_TYPE_FIXED 1 970*26f3cdf0SGordon Ross 9717c478bd9Sstevel@tonic-gate typedef 9727c478bd9Sstevel@tonic-gate UINT32 (*ACPI_EVENT_HANDLER) ( 97327f7c583Smyers void *Context); 9747c478bd9Sstevel@tonic-gate 975*26f3cdf0SGordon Ross typedef 976*26f3cdf0SGordon Ross UINT32 (*ACPI_GPE_HANDLER) ( 977*26f3cdf0SGordon Ross ACPI_HANDLE GpeDevice, 978*26f3cdf0SGordon Ross UINT32 GpeNumber, 979*26f3cdf0SGordon Ross void *Context); 980*26f3cdf0SGordon Ross 9817c478bd9Sstevel@tonic-gate typedef 9827c478bd9Sstevel@tonic-gate void (*ACPI_NOTIFY_HANDLER) ( 98327f7c583Smyers ACPI_HANDLE Device, 98427f7c583Smyers UINT32 Value, 98527f7c583Smyers void *Context); 9867c478bd9Sstevel@tonic-gate 9877c478bd9Sstevel@tonic-gate typedef 9887c478bd9Sstevel@tonic-gate void (*ACPI_OBJECT_HANDLER) ( 98927f7c583Smyers ACPI_HANDLE Object, 99027f7c583Smyers void *Data); 9917c478bd9Sstevel@tonic-gate 9927c478bd9Sstevel@tonic-gate typedef 9937c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_INIT_HANDLER) ( 99427f7c583Smyers ACPI_HANDLE Object, 99527f7c583Smyers UINT32 Function); 9967c478bd9Sstevel@tonic-gate 9977c478bd9Sstevel@tonic-gate #define ACPI_INIT_DEVICE_INI 1 9987c478bd9Sstevel@tonic-gate 9997c478bd9Sstevel@tonic-gate typedef 10007c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 100127f7c583Smyers ACPI_STATUS AmlStatus, 100227f7c583Smyers ACPI_NAME Name, 100327f7c583Smyers UINT16 Opcode, 100427f7c583Smyers UINT32 AmlOffset, 100527f7c583Smyers void *Context); 10067c478bd9Sstevel@tonic-gate 1007aa2aa9a6SDana Myers /* Table Event handler (Load, LoadTable, etc.) and types */ 1008db2bae30SDana Myers 1009db2bae30SDana Myers typedef 1010db2bae30SDana Myers ACPI_STATUS (*ACPI_TABLE_HANDLER) ( 1011db2bae30SDana Myers UINT32 Event, 1012db2bae30SDana Myers void *Table, 1013db2bae30SDana Myers void *Context); 1014db2bae30SDana Myers 1015db2bae30SDana Myers #define ACPI_TABLE_LOAD 0x0 1016db2bae30SDana Myers #define ACPI_TABLE_UNLOAD 0x1 1017db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 1018db2bae30SDana Myers 10197c478bd9Sstevel@tonic-gate 10207c478bd9Sstevel@tonic-gate /* Address Spaces (For Operation Regions) */ 10217c478bd9Sstevel@tonic-gate 10227c478bd9Sstevel@tonic-gate typedef 10237c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 102427f7c583Smyers UINT32 Function, 102527f7c583Smyers ACPI_PHYSICAL_ADDRESS Address, 102627f7c583Smyers UINT32 BitWidth, 1027*26f3cdf0SGordon Ross UINT64 *Value, 102827f7c583Smyers void *HandlerContext, 102927f7c583Smyers void *RegionContext); 10307c478bd9Sstevel@tonic-gate 103127f7c583Smyers #define ACPI_DEFAULT_HANDLER NULL 10327c478bd9Sstevel@tonic-gate 10337c478bd9Sstevel@tonic-gate typedef 10347c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 103527f7c583Smyers ACPI_HANDLE RegionHandle, 103627f7c583Smyers UINT32 Function, 103727f7c583Smyers void *HandlerContext, 103827f7c583Smyers void **RegionContext); 10397c478bd9Sstevel@tonic-gate 10407c478bd9Sstevel@tonic-gate #define ACPI_REGION_ACTIVATE 0 10417c478bd9Sstevel@tonic-gate #define ACPI_REGION_DEACTIVATE 1 10427c478bd9Sstevel@tonic-gate 10437c478bd9Sstevel@tonic-gate typedef 10447c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_WALK_CALLBACK) ( 1045*26f3cdf0SGordon Ross ACPI_HANDLE Object, 104627f7c583Smyers UINT32 NestingLevel, 104727f7c583Smyers void *Context, 104827f7c583Smyers void **ReturnValue); 10497c478bd9Sstevel@tonic-gate 1050*26f3cdf0SGordon Ross typedef 1051*26f3cdf0SGordon Ross UINT32 (*ACPI_INTERFACE_HANDLER) ( 1052*26f3cdf0SGordon Ross ACPI_STRING InterfaceName, 1053*26f3cdf0SGordon Ross UINT32 Supported); 1054*26f3cdf0SGordon Ross 10557c478bd9Sstevel@tonic-gate 10567c478bd9Sstevel@tonic-gate /* Interrupt handler return values */ 10577c478bd9Sstevel@tonic-gate 10587c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_NOT_HANDLED 0x00 10597c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_HANDLED 0x01 10607c478bd9Sstevel@tonic-gate 1061*26f3cdf0SGordon Ross /* GPE handler return values */ 1062*26f3cdf0SGordon Ross 1063*26f3cdf0SGordon Ross #define ACPI_REENABLE_GPE 0x80 1064*26f3cdf0SGordon Ross 1065*26f3cdf0SGordon Ross 106657190917SDana Myers /* Length of 32-bit EISAID values when converted back to a string */ 106757190917SDana Myers 106857190917SDana Myers #define ACPI_EISAID_STRING_SIZE 8 /* Includes null terminator */ 10697c478bd9Sstevel@tonic-gate 107057190917SDana Myers /* Length of UUID (string) values */ 1071aa2aa9a6SDana Myers 1072aa2aa9a6SDana Myers #define ACPI_UUID_LENGTH 16 1073aa2aa9a6SDana Myers 107457190917SDana Myers 107557190917SDana Myers /* Structures used for device/processor HID, UID, CID */ 10767c478bd9Sstevel@tonic-gate 10777c478bd9Sstevel@tonic-gate typedef struct acpi_device_id 10787c478bd9Sstevel@tonic-gate { 107957190917SDana Myers UINT32 Length; /* Length of string + null */ 108057190917SDana Myers char *String; 10817c478bd9Sstevel@tonic-gate 10827c478bd9Sstevel@tonic-gate } ACPI_DEVICE_ID; 10837c478bd9Sstevel@tonic-gate 108457190917SDana Myers typedef struct acpi_device_id_list 10857c478bd9Sstevel@tonic-gate { 108657190917SDana Myers UINT32 Count; /* Number of IDs in Ids array */ 108757190917SDana Myers UINT32 ListSize; /* Size of list, including ID strings */ 108857190917SDana Myers ACPI_DEVICE_ID Ids[1]; /* ID array */ 10897c478bd9Sstevel@tonic-gate 109057190917SDana Myers } ACPI_DEVICE_ID_LIST; 10917c478bd9Sstevel@tonic-gate 109257190917SDana Myers /* 109357190917SDana Myers * Structure returned from AcpiGetObjectInfo. 109457190917SDana Myers * Optimized for both 32- and 64-bit builds 109557190917SDana Myers */ 109657190917SDana Myers typedef struct acpi_device_info 10977c478bd9Sstevel@tonic-gate { 109857190917SDana Myers UINT32 InfoSize; /* Size of info, including ID strings */ 109957190917SDana Myers UINT32 Name; /* ACPI object Name */ 110057190917SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI object Type */ 110157190917SDana Myers UINT8 ParamCount; /* If a method, required parameter count */ 110257190917SDana Myers UINT8 Valid; /* Indicates which optional fields are valid */ 110357190917SDana Myers UINT8 Flags; /* Miscellaneous info */ 110457190917SDana Myers UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 110557190917SDana Myers UINT8 LowestDstates[5]; /* _SxW values: 0xFF indicates not valid */ 110657190917SDana Myers UINT32 CurrentStatus; /* _STA value */ 1107*26f3cdf0SGordon Ross UINT64 Address; /* _ADR value */ 110857190917SDana Myers ACPI_DEVICE_ID HardwareId; /* _HID value */ 110957190917SDana Myers ACPI_DEVICE_ID UniqueId; /* _UID value */ 111057190917SDana Myers ACPI_DEVICE_ID_LIST CompatibleIdList; /* _CID list <must be last> */ 111157190917SDana Myers 111257190917SDana Myers } ACPI_DEVICE_INFO; 11137c478bd9Sstevel@tonic-gate 111457190917SDana Myers /* Values for Flags field above (AcpiGetObjectInfo) */ 11157c478bd9Sstevel@tonic-gate 111657190917SDana Myers #define ACPI_PCI_ROOT_BRIDGE 0x01 11177c478bd9Sstevel@tonic-gate 111857190917SDana Myers /* Flags for Valid field above (AcpiGetObjectInfo) */ 11197c478bd9Sstevel@tonic-gate 112057190917SDana Myers #define ACPI_VALID_STA 0x01 112157190917SDana Myers #define ACPI_VALID_ADR 0x02 112257190917SDana Myers #define ACPI_VALID_HID 0x04 112357190917SDana Myers #define ACPI_VALID_UID 0x08 112457190917SDana Myers #define ACPI_VALID_CID 0x10 112557190917SDana Myers #define ACPI_VALID_SXDS 0x20 112657190917SDana Myers #define ACPI_VALID_SXWS 0x40 11277c478bd9Sstevel@tonic-gate 112830082d0cSmyers /* Flags for _STA method */ 112930082d0cSmyers 113030082d0cSmyers #define ACPI_STA_DEVICE_PRESENT 0x01 113130082d0cSmyers #define ACPI_STA_DEVICE_ENABLED 0x02 113230082d0cSmyers #define ACPI_STA_DEVICE_UI 0x04 113327f7c583Smyers #define ACPI_STA_DEVICE_FUNCTIONING 0x08 113427f7c583Smyers #define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 113530082d0cSmyers #define ACPI_STA_BATTERY_PRESENT 0x10 113630082d0cSmyers 11377c478bd9Sstevel@tonic-gate 11387c478bd9Sstevel@tonic-gate /* Context structs for address space handlers */ 11397c478bd9Sstevel@tonic-gate 11407c478bd9Sstevel@tonic-gate typedef struct acpi_pci_id 11417c478bd9Sstevel@tonic-gate { 114227f7c583Smyers UINT16 Segment; 114327f7c583Smyers UINT16 Bus; 114427f7c583Smyers UINT16 Device; 114527f7c583Smyers UINT16 Function; 11467c478bd9Sstevel@tonic-gate 11477c478bd9Sstevel@tonic-gate } ACPI_PCI_ID; 11487c478bd9Sstevel@tonic-gate 11497c478bd9Sstevel@tonic-gate typedef struct acpi_mem_space_context 11507c478bd9Sstevel@tonic-gate { 115127f7c583Smyers UINT32 Length; 115227f7c583Smyers ACPI_PHYSICAL_ADDRESS Address; 115327f7c583Smyers ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 115427f7c583Smyers UINT8 *MappedLogicalAddress; 115527f7c583Smyers ACPI_SIZE MappedLength; 11567c478bd9Sstevel@tonic-gate 11577c478bd9Sstevel@tonic-gate } ACPI_MEM_SPACE_CONTEXT; 11587c478bd9Sstevel@tonic-gate 11597c478bd9Sstevel@tonic-gate 11607c478bd9Sstevel@tonic-gate /* 1161aa2aa9a6SDana Myers * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled 11627c478bd9Sstevel@tonic-gate */ 1163aa2aa9a6SDana Myers typedef struct acpi_memory_list 116430082d0cSmyers { 1165aa2aa9a6SDana Myers char *ListName; 1166aa2aa9a6SDana Myers void *ListHead; 1167aa2aa9a6SDana Myers UINT16 ObjectSize; 1168aa2aa9a6SDana Myers UINT16 MaxDepth; 1169aa2aa9a6SDana Myers UINT16 CurrentDepth; 1170aa2aa9a6SDana Myers UINT16 LinkOffset; 1171aa2aa9a6SDana Myers 1172aa2aa9a6SDana Myers #ifdef ACPI_DBG_TRACK_ALLOCATIONS 1173aa2aa9a6SDana Myers 1174aa2aa9a6SDana Myers /* Statistics for debug memory tracking only */ 1175aa2aa9a6SDana Myers 1176aa2aa9a6SDana Myers UINT32 TotalAllocated; 1177aa2aa9a6SDana Myers UINT32 TotalFreed; 1178aa2aa9a6SDana Myers UINT32 MaxOccupied; 1179aa2aa9a6SDana Myers UINT32 TotalSize; 1180aa2aa9a6SDana Myers UINT32 CurrentTotalSize; 1181aa2aa9a6SDana Myers UINT32 Requests; 1182aa2aa9a6SDana Myers UINT32 Hits; 1183aa2aa9a6SDana Myers #endif 11847c478bd9Sstevel@tonic-gate 1185aa2aa9a6SDana Myers } ACPI_MEMORY_LIST; 11867c478bd9Sstevel@tonic-gate 11877c478bd9Sstevel@tonic-gate 11887c478bd9Sstevel@tonic-gate #endif /* __ACTYPES_H__ */ 1189