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 77c478bd9Sstevel@tonic-gate /****************************************************************************** 87c478bd9Sstevel@tonic-gate * 97c478bd9Sstevel@tonic-gate * 1. Copyright Notice 107c478bd9Sstevel@tonic-gate * 11*aa2aa9a6SDana Myers * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp. 127c478bd9Sstevel@tonic-gate * All rights reserved. 137c478bd9Sstevel@tonic-gate * 147c478bd9Sstevel@tonic-gate * 2. License 157c478bd9Sstevel@tonic-gate * 167c478bd9Sstevel@tonic-gate * 2.1. This is your license from Intel Corp. under its intellectual property 177c478bd9Sstevel@tonic-gate * rights. You may have additional license terms from the party that provided 187c478bd9Sstevel@tonic-gate * you this software, covering your right to use that party's intellectual 197c478bd9Sstevel@tonic-gate * property rights. 207c478bd9Sstevel@tonic-gate * 217c478bd9Sstevel@tonic-gate * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 227c478bd9Sstevel@tonic-gate * copy of the source code appearing in this file ("Covered Code") an 237c478bd9Sstevel@tonic-gate * irrevocable, perpetual, worldwide license under Intel's copyrights in the 247c478bd9Sstevel@tonic-gate * base code distributed originally by Intel ("Original Intel Code") to copy, 257c478bd9Sstevel@tonic-gate * make derivatives, distribute, use and display any portion of the Covered 267c478bd9Sstevel@tonic-gate * Code in any form, with the right to sublicense such rights; and 277c478bd9Sstevel@tonic-gate * 287c478bd9Sstevel@tonic-gate * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 297c478bd9Sstevel@tonic-gate * license (with the right to sublicense), under only those claims of Intel 307c478bd9Sstevel@tonic-gate * patents that are infringed by the Original Intel Code, to make, use, sell, 317c478bd9Sstevel@tonic-gate * offer to sell, and import the Covered Code and derivative works thereof 327c478bd9Sstevel@tonic-gate * solely to the minimum extent necessary to exercise the above copyright 337c478bd9Sstevel@tonic-gate * license, and in no event shall the patent license extend to any additions 347c478bd9Sstevel@tonic-gate * to or modifications of the Original Intel Code. No other license or right 357c478bd9Sstevel@tonic-gate * is granted directly or by implication, estoppel or otherwise; 367c478bd9Sstevel@tonic-gate * 377c478bd9Sstevel@tonic-gate * The above copyright and patent license is granted only if the following 387c478bd9Sstevel@tonic-gate * conditions are met: 397c478bd9Sstevel@tonic-gate * 407c478bd9Sstevel@tonic-gate * 3. Conditions 417c478bd9Sstevel@tonic-gate * 427c478bd9Sstevel@tonic-gate * 3.1. Redistribution of Source with Rights to Further Distribute Source. 437c478bd9Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 447c478bd9Sstevel@tonic-gate * Code or modification with rights to further distribute source must include 457c478bd9Sstevel@tonic-gate * the above Copyright Notice, the above License, this list of Conditions, 467c478bd9Sstevel@tonic-gate * and the following Disclaimer and Export Compliance provision. In addition, 477c478bd9Sstevel@tonic-gate * Licensee must cause all Covered Code to which Licensee contributes to 487c478bd9Sstevel@tonic-gate * contain a file documenting the changes Licensee made to create that Covered 497c478bd9Sstevel@tonic-gate * Code and the date of any change. Licensee must include in that file the 507c478bd9Sstevel@tonic-gate * documentation of any changes made by any predecessor Licensee. Licensee 517c478bd9Sstevel@tonic-gate * must include a prominent statement that the modification is derived, 527c478bd9Sstevel@tonic-gate * directly or indirectly, from Original Intel Code. 537c478bd9Sstevel@tonic-gate * 547c478bd9Sstevel@tonic-gate * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 557c478bd9Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 567c478bd9Sstevel@tonic-gate * Code or modification without rights to further distribute source must 577c478bd9Sstevel@tonic-gate * include the following Disclaimer and Export Compliance provision in the 587c478bd9Sstevel@tonic-gate * documentation and/or other materials provided with distribution. In 597c478bd9Sstevel@tonic-gate * addition, Licensee may not authorize further sublicense of source of any 607c478bd9Sstevel@tonic-gate * portion of the Covered Code, and must include terms to the effect that the 617c478bd9Sstevel@tonic-gate * license from Licensee to its licensee is limited to the intellectual 627c478bd9Sstevel@tonic-gate * property embodied in the software Licensee provides to its licensee, and 637c478bd9Sstevel@tonic-gate * not to intellectual property embodied in modifications its licensee may 647c478bd9Sstevel@tonic-gate * make. 657c478bd9Sstevel@tonic-gate * 667c478bd9Sstevel@tonic-gate * 3.3. Redistribution of Executable. Redistribution in executable form of any 677c478bd9Sstevel@tonic-gate * substantial portion of the Covered Code or modification must reproduce the 687c478bd9Sstevel@tonic-gate * above Copyright Notice, and the following Disclaimer and Export Compliance 697c478bd9Sstevel@tonic-gate * provision in the documentation and/or other materials provided with the 707c478bd9Sstevel@tonic-gate * distribution. 717c478bd9Sstevel@tonic-gate * 727c478bd9Sstevel@tonic-gate * 3.4. Intel retains all right, title, and interest in and to the Original 737c478bd9Sstevel@tonic-gate * Intel Code. 747c478bd9Sstevel@tonic-gate * 757c478bd9Sstevel@tonic-gate * 3.5. Neither the name Intel nor any other trademark owned or controlled by 767c478bd9Sstevel@tonic-gate * Intel shall be used in advertising or otherwise to promote the sale, use or 777c478bd9Sstevel@tonic-gate * other dealings in products derived from or relating to the Covered Code 787c478bd9Sstevel@tonic-gate * without prior written authorization from Intel. 797c478bd9Sstevel@tonic-gate * 807c478bd9Sstevel@tonic-gate * 4. Disclaimer and Export Compliance 817c478bd9Sstevel@tonic-gate * 827c478bd9Sstevel@tonic-gate * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 837c478bd9Sstevel@tonic-gate * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 847c478bd9Sstevel@tonic-gate * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 857c478bd9Sstevel@tonic-gate * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 867c478bd9Sstevel@tonic-gate * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 877c478bd9Sstevel@tonic-gate * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 887c478bd9Sstevel@tonic-gate * PARTICULAR PURPOSE. 897c478bd9Sstevel@tonic-gate * 907c478bd9Sstevel@tonic-gate * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 917c478bd9Sstevel@tonic-gate * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 927c478bd9Sstevel@tonic-gate * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 937c478bd9Sstevel@tonic-gate * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 947c478bd9Sstevel@tonic-gate * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 957c478bd9Sstevel@tonic-gate * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 967c478bd9Sstevel@tonic-gate * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 977c478bd9Sstevel@tonic-gate * LIMITED REMEDY. 987c478bd9Sstevel@tonic-gate * 997c478bd9Sstevel@tonic-gate * 4.3. Licensee shall not export, either directly or indirectly, any of this 1007c478bd9Sstevel@tonic-gate * software or system incorporating such software without first obtaining any 1017c478bd9Sstevel@tonic-gate * required license or other approval from the U. S. Department of Commerce or 1027c478bd9Sstevel@tonic-gate * any other agency or department of the United States Government. In the 1037c478bd9Sstevel@tonic-gate * event Licensee exports any such software from the United States or 1047c478bd9Sstevel@tonic-gate * re-exports any such software from a foreign destination, Licensee shall 1057c478bd9Sstevel@tonic-gate * ensure that the distribution and export/re-export of the software is in 1067c478bd9Sstevel@tonic-gate * compliance with all laws, regulations, orders, or other restrictions of the 1077c478bd9Sstevel@tonic-gate * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1087c478bd9Sstevel@tonic-gate * any of its subsidiaries will export/re-export any technical data, process, 1097c478bd9Sstevel@tonic-gate * software, or service, directly or indirectly, to any country for which the 1107c478bd9Sstevel@tonic-gate * United States government or any agency thereof requires an export license, 1117c478bd9Sstevel@tonic-gate * other governmental approval, or letter of assurance, without first obtaining 1127c478bd9Sstevel@tonic-gate * such license, approval or letter. 1137c478bd9Sstevel@tonic-gate * 1147c478bd9Sstevel@tonic-gate *****************************************************************************/ 1157c478bd9Sstevel@tonic-gate 1167c478bd9Sstevel@tonic-gate #ifndef __ACTYPES_H__ 1177c478bd9Sstevel@tonic-gate #define __ACTYPES_H__ 1187c478bd9Sstevel@tonic-gate 11927f7c583Smyers /* acpisrc:StructDefs -- for acpisrc conversion */ 12027f7c583Smyers 12130082d0cSmyers /* 12230082d0cSmyers * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header 123db2bae30SDana Myers * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of 124db2bae30SDana Myers * 12/2006. 12530082d0cSmyers */ 12630082d0cSmyers #ifndef ACPI_MACHINE_WIDTH 12730082d0cSmyers #error ACPI_MACHINE_WIDTH not defined 12830082d0cSmyers #endif 1297c478bd9Sstevel@tonic-gate 13030082d0cSmyers /*! [Begin] no source code translation */ 1317c478bd9Sstevel@tonic-gate 1327c478bd9Sstevel@tonic-gate /* 1337c478bd9Sstevel@tonic-gate * Data type ranges 1347c478bd9Sstevel@tonic-gate * Note: These macros are designed to be compiler independent as well as 1357c478bd9Sstevel@tonic-gate * working around problems that some 32-bit compilers have with 64-bit 1367c478bd9Sstevel@tonic-gate * constants. 1377c478bd9Sstevel@tonic-gate */ 1387c478bd9Sstevel@tonic-gate #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 1397c478bd9Sstevel@tonic-gate #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 1407c478bd9Sstevel@tonic-gate #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 1417c478bd9Sstevel@tonic-gate #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 1427c478bd9Sstevel@tonic-gate #define ACPI_ASCII_MAX 0x7F 1437c478bd9Sstevel@tonic-gate 1447c478bd9Sstevel@tonic-gate 1457c478bd9Sstevel@tonic-gate /* 14630082d0cSmyers * Architecture-specific ACPICA Subsystem Data Types 14730082d0cSmyers * 14830082d0cSmyers * The goal of these types is to provide source code portability across 14930082d0cSmyers * 16-bit, 32-bit, and 64-bit targets. 15030082d0cSmyers * 15130082d0cSmyers * 1) The following types are of fixed size for all targets (16/32/64): 15230082d0cSmyers * 15330082d0cSmyers * BOOLEAN Logical boolean 15430082d0cSmyers * 15530082d0cSmyers * UINT8 8-bit (1 byte) unsigned value 15630082d0cSmyers * UINT16 16-bit (2 byte) unsigned value 15730082d0cSmyers * UINT32 32-bit (4 byte) unsigned value 15830082d0cSmyers * UINT64 64-bit (8 byte) unsigned value 15930082d0cSmyers * 16030082d0cSmyers * INT16 16-bit (2 byte) signed value 16130082d0cSmyers * INT32 32-bit (4 byte) signed value 16230082d0cSmyers * INT64 64-bit (8 byte) signed value 16330082d0cSmyers * 16430082d0cSmyers * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 16530082d0cSmyers * compiler-dependent header(s) and were introduced because there is no common 16630082d0cSmyers * 64-bit integer type across the various compilation models, as shown in 16730082d0cSmyers * the table below. 16830082d0cSmyers * 16930082d0cSmyers * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 17030082d0cSmyers * char 8 8 8 8 8 8 17130082d0cSmyers * short 16 16 16 16 16 16 17230082d0cSmyers * _int32 32 17330082d0cSmyers * int 32 64 32 32 16 16 17430082d0cSmyers * long 64 64 32 32 32 32 17530082d0cSmyers * long long 64 64 17630082d0cSmyers * pointer 64 64 64 32 32 32 17730082d0cSmyers * 17830082d0cSmyers * Note: ILP64 and LP32 are currently not supported. 17930082d0cSmyers * 18030082d0cSmyers * 18130082d0cSmyers * 2) These types represent the native word size of the target mode of the 18230082d0cSmyers * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 18330082d0cSmyers * usually used for memory allocation, efficient loop counters, and array 18430082d0cSmyers * indexes. The types are similar to the size_t type in the C library and are 18530082d0cSmyers * required because there is no C type that consistently represents the native 186db2bae30SDana Myers * data width. ACPI_SIZE is needed because there is no guarantee that a 187db2bae30SDana Myers * kernel-level C library is present. 18830082d0cSmyers * 18930082d0cSmyers * ACPI_SIZE 16/32/64-bit unsigned value 19030082d0cSmyers * ACPI_NATIVE_INT 16/32/64-bit signed value 19130082d0cSmyers * 1927c478bd9Sstevel@tonic-gate */ 1937c478bd9Sstevel@tonic-gate 19430082d0cSmyers /******************************************************************************* 19530082d0cSmyers * 19630082d0cSmyers * Common types for all compilers, all targets 19730082d0cSmyers * 19830082d0cSmyers ******************************************************************************/ 1997c478bd9Sstevel@tonic-gate 20030082d0cSmyers typedef unsigned char BOOLEAN; 20130082d0cSmyers typedef unsigned char UINT8; 20230082d0cSmyers typedef unsigned short UINT16; 20330082d0cSmyers typedef COMPILER_DEPENDENT_UINT64 UINT64; 20430082d0cSmyers typedef COMPILER_DEPENDENT_INT64 INT64; 2057c478bd9Sstevel@tonic-gate 20630082d0cSmyers /*! [End] no source code translation !*/ 2077c478bd9Sstevel@tonic-gate 20830082d0cSmyers 20930082d0cSmyers /******************************************************************************* 21030082d0cSmyers * 21130082d0cSmyers * Types specific to 64-bit targets 21230082d0cSmyers * 21330082d0cSmyers ******************************************************************************/ 2147c478bd9Sstevel@tonic-gate 2157c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 2167c478bd9Sstevel@tonic-gate 21730082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 2187c478bd9Sstevel@tonic-gate 2197c478bd9Sstevel@tonic-gate typedef unsigned int UINT32; 22030082d0cSmyers typedef int INT32; 2217c478bd9Sstevel@tonic-gate 2227c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/ 2237c478bd9Sstevel@tonic-gate 22430082d0cSmyers 22530082d0cSmyers typedef INT64 ACPI_NATIVE_INT; 226db2bae30SDana Myers typedef UINT64 ACPI_SIZE; 2277c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_IO_ADDRESS; 2287c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_PHYSICAL_ADDRESS; 2297c478bd9Sstevel@tonic-gate 2307c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR ACPI_UINT64_MAX 2317c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX ACPI_UINT64_MAX 23230082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 2337c478bd9Sstevel@tonic-gate 2347c478bd9Sstevel@tonic-gate /* 23530082d0cSmyers * In the case of the Itanium Processor Family (IPF), the hardware does not 23630082d0cSmyers * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 23730082d0cSmyers * to indicate that special precautions must be taken to avoid alignment faults. 23830082d0cSmyers * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 23930082d0cSmyers * 24030082d0cSmyers * Note: EM64T and other X86-64 processors support misaligned transfers, 24130082d0cSmyers * so there is no need to define this flag. 2427c478bd9Sstevel@tonic-gate */ 24330082d0cSmyers #if defined (__IA64__) || defined (__ia64__) 24430082d0cSmyers #define ACPI_MISALIGNMENT_NOT_SUPPORTED 24530082d0cSmyers #endif 2467c478bd9Sstevel@tonic-gate 2477c478bd9Sstevel@tonic-gate 24830082d0cSmyers /******************************************************************************* 24930082d0cSmyers * 25030082d0cSmyers * Types specific to 32-bit targets 25130082d0cSmyers * 25230082d0cSmyers ******************************************************************************/ 25330082d0cSmyers 25430082d0cSmyers #elif ACPI_MACHINE_WIDTH == 32 25530082d0cSmyers 25630082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 25730082d0cSmyers 25830082d0cSmyers typedef unsigned int UINT32; 25930082d0cSmyers typedef int INT32; 26030082d0cSmyers 26130082d0cSmyers /*! [End] no source code translation !*/ 26230082d0cSmyers 26330082d0cSmyers 26430082d0cSmyers typedef INT32 ACPI_NATIVE_INT; 265db2bae30SDana Myers typedef UINT32 ACPI_SIZE; 26630082d0cSmyers typedef UINT32 ACPI_IO_ADDRESS; 267db2bae30SDana Myers typedef UINT32 ACPI_PHYSICAL_ADDRESS; 26830082d0cSmyers 26930082d0cSmyers #define ACPI_MAX_PTR ACPI_UINT32_MAX 27030082d0cSmyers #define ACPI_SIZE_MAX ACPI_UINT32_MAX 27130082d0cSmyers 27230082d0cSmyers #else 2737c478bd9Sstevel@tonic-gate 274db2bae30SDana Myers /* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 2757c478bd9Sstevel@tonic-gate 27630082d0cSmyers #error unknown ACPI_MACHINE_WIDTH 27730082d0cSmyers #endif 2787c478bd9Sstevel@tonic-gate 2797c478bd9Sstevel@tonic-gate 28030082d0cSmyers /******************************************************************************* 28130082d0cSmyers * 282*aa2aa9a6SDana Myers * OS-dependent types 28330082d0cSmyers * 28427f7c583Smyers * If the defaults below are not appropriate for the host system, they can 285*aa2aa9a6SDana Myers * be defined in the OS-specific header, and this will take precedence. 28630082d0cSmyers * 28730082d0cSmyers ******************************************************************************/ 28830082d0cSmyers 28927f7c583Smyers /* Value returned by AcpiOsGetThreadId */ 29027f7c583Smyers 29127f7c583Smyers #ifndef ACPI_THREAD_ID 292db2bae30SDana Myers #define ACPI_THREAD_ID ACPI_SIZE 2937c478bd9Sstevel@tonic-gate #endif 2947c478bd9Sstevel@tonic-gate 29527f7c583Smyers /* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 29627f7c583Smyers 29730082d0cSmyers #ifndef ACPI_CPU_FLAGS 298db2bae30SDana Myers #define ACPI_CPU_FLAGS ACPI_SIZE 29930082d0cSmyers #endif 30030082d0cSmyers 30127f7c583Smyers /* Object returned from AcpiOsCreateCache */ 30227f7c583Smyers 30327f7c583Smyers #ifndef ACPI_CACHE_T 304*aa2aa9a6SDana Myers #ifdef ACPI_USE_LOCAL_CACHE 30527f7c583Smyers #define ACPI_CACHE_T ACPI_MEMORY_LIST 306*aa2aa9a6SDana Myers #else 307*aa2aa9a6SDana Myers #define ACPI_CACHE_T void * 308*aa2aa9a6SDana Myers #endif 30927f7c583Smyers #endif 31027f7c583Smyers 311*aa2aa9a6SDana Myers /* 312*aa2aa9a6SDana Myers * Synchronization objects - Mutexes, Semaphores, and SpinLocks 313*aa2aa9a6SDana Myers */ 314*aa2aa9a6SDana Myers #if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) 315*aa2aa9a6SDana Myers /* 316*aa2aa9a6SDana Myers * These macros are used if the host OS does not support a mutex object. 317*aa2aa9a6SDana Myers * Map the OSL Mutex interfaces to binary semaphores. 318*aa2aa9a6SDana Myers */ 319*aa2aa9a6SDana Myers #define ACPI_MUTEX ACPI_SEMAPHORE 320*aa2aa9a6SDana Myers #define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) 321*aa2aa9a6SDana Myers #define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) 322*aa2aa9a6SDana Myers #define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) 323*aa2aa9a6SDana Myers #define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) 324*aa2aa9a6SDana Myers #endif 325*aa2aa9a6SDana Myers 326*aa2aa9a6SDana Myers /* Configurable types for synchronization objects */ 327*aa2aa9a6SDana Myers 328*aa2aa9a6SDana Myers #ifndef ACPI_SPINLOCK 329*aa2aa9a6SDana Myers #define ACPI_SPINLOCK void * 330*aa2aa9a6SDana Myers #endif 331*aa2aa9a6SDana Myers 332*aa2aa9a6SDana Myers #ifndef ACPI_SEMAPHORE 333*aa2aa9a6SDana Myers #define ACPI_SEMAPHORE void * 334*aa2aa9a6SDana Myers #endif 335*aa2aa9a6SDana Myers 336*aa2aa9a6SDana Myers #ifndef ACPI_MUTEX 337*aa2aa9a6SDana Myers #define ACPI_MUTEX void * 338*aa2aa9a6SDana Myers #endif 339*aa2aa9a6SDana Myers 340*aa2aa9a6SDana Myers 341*aa2aa9a6SDana Myers /******************************************************************************* 342*aa2aa9a6SDana Myers * 343*aa2aa9a6SDana Myers * Compiler-dependent types 344*aa2aa9a6SDana Myers * 345*aa2aa9a6SDana Myers * If the defaults below are not appropriate for the host compiler, they can 346*aa2aa9a6SDana Myers * be defined in the compiler-specific header, and this will take precedence. 347*aa2aa9a6SDana Myers * 348*aa2aa9a6SDana Myers ******************************************************************************/ 349*aa2aa9a6SDana Myers 35027f7c583Smyers /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 35127f7c583Smyers 35227f7c583Smyers #ifndef ACPI_UINTPTR_T 35327f7c583Smyers #define ACPI_UINTPTR_T void * 35427f7c583Smyers #endif 35527f7c583Smyers 35630082d0cSmyers /* 35730082d0cSmyers * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 35830082d0cSmyers * some compilers can catch printf format string problems 35930082d0cSmyers */ 36030082d0cSmyers #ifndef ACPI_PRINTF_LIKE 36130082d0cSmyers #define ACPI_PRINTF_LIKE(c) 36230082d0cSmyers #endif 36330082d0cSmyers 36430082d0cSmyers /* 36530082d0cSmyers * Some compilers complain about unused variables. Sometimes we don't want to 36630082d0cSmyers * use all the variables (for example, _AcpiModuleName). This allows us 36730082d0cSmyers * to to tell the compiler in a per-variable manner that a variable 36830082d0cSmyers * is unused 36930082d0cSmyers */ 37030082d0cSmyers #ifndef ACPI_UNUSED_VAR 37130082d0cSmyers #define ACPI_UNUSED_VAR 37230082d0cSmyers #endif 37330082d0cSmyers 37427f7c583Smyers /* 37527f7c583Smyers * All ACPICA functions that are available to the rest of the kernel are 37627f7c583Smyers * tagged with this macro which can be defined as appropriate for the host. 37727f7c583Smyers */ 37827f7c583Smyers #ifndef ACPI_EXPORT_SYMBOL 37927f7c583Smyers #define ACPI_EXPORT_SYMBOL(Symbol) 38027f7c583Smyers #endif 38127f7c583Smyers 38230082d0cSmyers 383*aa2aa9a6SDana Myers /****************************************************************************** 384*aa2aa9a6SDana Myers * 385*aa2aa9a6SDana Myers * ACPI Specification constants (Do not change unless the specification changes) 386*aa2aa9a6SDana Myers * 387*aa2aa9a6SDana Myers *****************************************************************************/ 388*aa2aa9a6SDana Myers 389*aa2aa9a6SDana Myers /* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ 390*aa2aa9a6SDana Myers 391*aa2aa9a6SDana Myers #define ACPI_MAX_GPE_BLOCKS 2 392*aa2aa9a6SDana Myers 393*aa2aa9a6SDana Myers /* Default ACPI register widths */ 394*aa2aa9a6SDana Myers 395*aa2aa9a6SDana Myers #define ACPI_GPE_REGISTER_WIDTH 8 396*aa2aa9a6SDana Myers #define ACPI_PM1_REGISTER_WIDTH 16 397*aa2aa9a6SDana Myers #define ACPI_PM2_REGISTER_WIDTH 8 398*aa2aa9a6SDana Myers #define ACPI_PM_TIMER_WIDTH 32 399*aa2aa9a6SDana Myers 400*aa2aa9a6SDana Myers /* Names within the namespace are 4 bytes long */ 401*aa2aa9a6SDana Myers 402*aa2aa9a6SDana Myers #define ACPI_NAME_SIZE 4 403*aa2aa9a6SDana Myers #define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ 404*aa2aa9a6SDana Myers #define ACPI_PATH_SEPARATOR '.' 405*aa2aa9a6SDana Myers 406*aa2aa9a6SDana Myers /* Sizes for ACPI table headers */ 407*aa2aa9a6SDana Myers 408*aa2aa9a6SDana Myers #define ACPI_OEM_ID_SIZE 6 409*aa2aa9a6SDana Myers #define ACPI_OEM_TABLE_ID_SIZE 8 410*aa2aa9a6SDana Myers 411*aa2aa9a6SDana Myers /* ACPI/PNP hardware IDs */ 412*aa2aa9a6SDana Myers 413*aa2aa9a6SDana Myers #define PCI_ROOT_HID_STRING "PNP0A03" 414*aa2aa9a6SDana Myers #define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" 415*aa2aa9a6SDana Myers 416*aa2aa9a6SDana Myers /* PM Timer ticks per second (HZ) */ 417*aa2aa9a6SDana Myers 418*aa2aa9a6SDana Myers #define PM_TIMER_FREQUENCY 3579545 419*aa2aa9a6SDana Myers 420*aa2aa9a6SDana Myers 42130082d0cSmyers /******************************************************************************* 42230082d0cSmyers * 42330082d0cSmyers * Independent types 42430082d0cSmyers * 42530082d0cSmyers ******************************************************************************/ 4267c478bd9Sstevel@tonic-gate 42730082d0cSmyers /* Logical defines and NULL */ 42830082d0cSmyers 4297c478bd9Sstevel@tonic-gate #ifdef FALSE 4307c478bd9Sstevel@tonic-gate #undef FALSE 4317c478bd9Sstevel@tonic-gate #endif 4327c478bd9Sstevel@tonic-gate #define FALSE (1 == 0) 4337c478bd9Sstevel@tonic-gate 4347c478bd9Sstevel@tonic-gate #ifdef TRUE 4357c478bd9Sstevel@tonic-gate #undef TRUE 4367c478bd9Sstevel@tonic-gate #endif 4377c478bd9Sstevel@tonic-gate #define TRUE (1 == 1) 4387c478bd9Sstevel@tonic-gate 4397c478bd9Sstevel@tonic-gate #ifndef NULL 4407c478bd9Sstevel@tonic-gate #define NULL (void *) 0 4417c478bd9Sstevel@tonic-gate #endif 4427c478bd9Sstevel@tonic-gate 4437c478bd9Sstevel@tonic-gate 4447c478bd9Sstevel@tonic-gate /* 445*aa2aa9a6SDana Myers * Miscellaneous types 4467c478bd9Sstevel@tonic-gate */ 4477c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 4487c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 4497c478bd9Sstevel@tonic-gate typedef char * ACPI_STRING; /* Null terminated ASCII string */ 45030082d0cSmyers typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 4517c478bd9Sstevel@tonic-gate 452*aa2aa9a6SDana Myers 453*aa2aa9a6SDana Myers /* Owner IDs are used to track namespace nodes for selective deletion */ 454*aa2aa9a6SDana Myers 455*aa2aa9a6SDana Myers typedef UINT8 ACPI_OWNER_ID; 456*aa2aa9a6SDana Myers #define ACPI_OWNER_ID_MAX 0xFF 457*aa2aa9a6SDana Myers 458*aa2aa9a6SDana Myers 4597c478bd9Sstevel@tonic-gate typedef struct uint64_struct 4607c478bd9Sstevel@tonic-gate { 46127f7c583Smyers UINT32 Lo; 46227f7c583Smyers UINT32 Hi; 4637c478bd9Sstevel@tonic-gate 4647c478bd9Sstevel@tonic-gate } UINT64_STRUCT; 4657c478bd9Sstevel@tonic-gate 4667c478bd9Sstevel@tonic-gate typedef union uint64_overlay 4677c478bd9Sstevel@tonic-gate { 46827f7c583Smyers UINT64 Full; 46927f7c583Smyers UINT64_STRUCT Part; 4707c478bd9Sstevel@tonic-gate 4717c478bd9Sstevel@tonic-gate } UINT64_OVERLAY; 4727c478bd9Sstevel@tonic-gate 4737c478bd9Sstevel@tonic-gate typedef struct uint32_struct 4747c478bd9Sstevel@tonic-gate { 47527f7c583Smyers UINT32 Lo; 47627f7c583Smyers UINT32 Hi; 4777c478bd9Sstevel@tonic-gate 4787c478bd9Sstevel@tonic-gate } UINT32_STRUCT; 4797c478bd9Sstevel@tonic-gate 4807c478bd9Sstevel@tonic-gate 4817c478bd9Sstevel@tonic-gate /* 482*aa2aa9a6SDana Myers * Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI 483db2bae30SDana Myers * version 2, integers are 64 bits. Note that this pertains to the ACPI integer 484db2bae30SDana Myers * type only, not other integers used in the implementation of the ACPI CA 4857c478bd9Sstevel@tonic-gate * subsystem. 4867c478bd9Sstevel@tonic-gate */ 4877c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_INTEGER; 4887c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_MAX ACPI_UINT64_MAX 4897c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE 64 4907c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 4917c478bd9Sstevel@tonic-gate #define ACPI_MAX64_DECIMAL_DIGITS 20 4927c478bd9Sstevel@tonic-gate #define ACPI_MAX32_DECIMAL_DIGITS 10 4937c478bd9Sstevel@tonic-gate #define ACPI_MAX16_DECIMAL_DIGITS 5 4947c478bd9Sstevel@tonic-gate #define ACPI_MAX8_DECIMAL_DIGITS 3 4957c478bd9Sstevel@tonic-gate 4967c478bd9Sstevel@tonic-gate /* 4977c478bd9Sstevel@tonic-gate * Constants with special meanings 4987c478bd9Sstevel@tonic-gate */ 49930082d0cSmyers #define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 500*aa2aa9a6SDana Myers #define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ 501*aa2aa9a6SDana Myers #define ACPI_DO_NOT_WAIT 0 502*aa2aa9a6SDana Myers 503*aa2aa9a6SDana Myers 504*aa2aa9a6SDana Myers /******************************************************************************* 505*aa2aa9a6SDana Myers * 506*aa2aa9a6SDana Myers * Commonly used macros 507*aa2aa9a6SDana Myers * 508*aa2aa9a6SDana Myers ******************************************************************************/ 509*aa2aa9a6SDana Myers 510*aa2aa9a6SDana Myers /* Data manipulation */ 511*aa2aa9a6SDana Myers 512*aa2aa9a6SDana Myers #define ACPI_LOBYTE(Integer) ((UINT8) (UINT16)(Integer)) 513*aa2aa9a6SDana Myers #define ACPI_HIBYTE(Integer) ((UINT8) (((UINT16)(Integer)) >> 8)) 514*aa2aa9a6SDana Myers #define ACPI_LOWORD(Integer) ((UINT16) (UINT32)(Integer)) 515*aa2aa9a6SDana Myers #define ACPI_HIWORD(Integer) ((UINT16)(((UINT32)(Integer)) >> 16)) 516*aa2aa9a6SDana Myers #define ACPI_LODWORD(Integer64) ((UINT32) (UINT64)(Integer64)) 517*aa2aa9a6SDana Myers #define ACPI_HIDWORD(Integer64) ((UINT32)(((UINT64)(Integer64)) >> 32)) 518*aa2aa9a6SDana Myers 519*aa2aa9a6SDana Myers #define ACPI_SET_BIT(target,bit) ((target) |= (bit)) 520*aa2aa9a6SDana Myers #define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) 521*aa2aa9a6SDana Myers #define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) 522*aa2aa9a6SDana Myers #define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) 523*aa2aa9a6SDana Myers 524*aa2aa9a6SDana Myers /* Size calculation */ 5257c478bd9Sstevel@tonic-gate 526*aa2aa9a6SDana Myers #define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) 527*aa2aa9a6SDana Myers 528*aa2aa9a6SDana Myers /* Pointer manipulation */ 529*aa2aa9a6SDana Myers 530*aa2aa9a6SDana Myers #define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) 531*aa2aa9a6SDana Myers #define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) 532*aa2aa9a6SDana Myers #define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) + (ACPI_SIZE)(b))) 533*aa2aa9a6SDana Myers #define ACPI_PTR_DIFF(a, b) (ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b))) 534*aa2aa9a6SDana Myers 535*aa2aa9a6SDana Myers /* Pointer/Integer type conversions */ 536*aa2aa9a6SDana Myers 537*aa2aa9a6SDana Myers #define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) NULL,(ACPI_SIZE) i) 538*aa2aa9a6SDana Myers #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) NULL) 539*aa2aa9a6SDana Myers #define ACPI_OFFSET(d, f) (ACPI_SIZE) ACPI_PTR_DIFF (&(((d *)0)->f), (void *) NULL) 540*aa2aa9a6SDana Myers #define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) 541*aa2aa9a6SDana Myers #define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) 542*aa2aa9a6SDana Myers 543*aa2aa9a6SDana Myers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 544*aa2aa9a6SDana Myers #define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) 545*aa2aa9a6SDana Myers #else 546*aa2aa9a6SDana Myers #define ACPI_COMPARE_NAME(a,b) (!ACPI_STRNCMP (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) 547*aa2aa9a6SDana Myers #endif 548*aa2aa9a6SDana Myers 549*aa2aa9a6SDana Myers 550*aa2aa9a6SDana Myers /******************************************************************************* 551*aa2aa9a6SDana Myers * 552*aa2aa9a6SDana Myers * Miscellaneous constants 553*aa2aa9a6SDana Myers * 554*aa2aa9a6SDana Myers ******************************************************************************/ 5557c478bd9Sstevel@tonic-gate 5567c478bd9Sstevel@tonic-gate /* 5577c478bd9Sstevel@tonic-gate * Initialization sequence 5587c478bd9Sstevel@tonic-gate */ 5597c478bd9Sstevel@tonic-gate #define ACPI_FULL_INITIALIZATION 0x00 5607c478bd9Sstevel@tonic-gate #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 5617c478bd9Sstevel@tonic-gate #define ACPI_NO_HARDWARE_INIT 0x02 5627c478bd9Sstevel@tonic-gate #define ACPI_NO_EVENT_INIT 0x04 5637c478bd9Sstevel@tonic-gate #define ACPI_NO_HANDLER_INIT 0x08 5647c478bd9Sstevel@tonic-gate #define ACPI_NO_ACPI_ENABLE 0x10 5657c478bd9Sstevel@tonic-gate #define ACPI_NO_DEVICE_INIT 0x20 5667c478bd9Sstevel@tonic-gate #define ACPI_NO_OBJECT_INIT 0x40 5677c478bd9Sstevel@tonic-gate 5687c478bd9Sstevel@tonic-gate /* 5697c478bd9Sstevel@tonic-gate * Initialization state 5707c478bd9Sstevel@tonic-gate */ 571db2bae30SDana Myers #define ACPI_SUBSYSTEM_INITIALIZE 0x01 572db2bae30SDana Myers #define ACPI_INITIALIZED_OK 0x02 5737c478bd9Sstevel@tonic-gate 5747c478bd9Sstevel@tonic-gate /* 5757c478bd9Sstevel@tonic-gate * Power state values 5767c478bd9Sstevel@tonic-gate */ 5777c478bd9Sstevel@tonic-gate #define ACPI_STATE_UNKNOWN (UINT8) 0xFF 5787c478bd9Sstevel@tonic-gate 5797c478bd9Sstevel@tonic-gate #define ACPI_STATE_S0 (UINT8) 0 5807c478bd9Sstevel@tonic-gate #define ACPI_STATE_S1 (UINT8) 1 5817c478bd9Sstevel@tonic-gate #define ACPI_STATE_S2 (UINT8) 2 5827c478bd9Sstevel@tonic-gate #define ACPI_STATE_S3 (UINT8) 3 5837c478bd9Sstevel@tonic-gate #define ACPI_STATE_S4 (UINT8) 4 5847c478bd9Sstevel@tonic-gate #define ACPI_STATE_S5 (UINT8) 5 5857c478bd9Sstevel@tonic-gate #define ACPI_S_STATES_MAX ACPI_STATE_S5 5867c478bd9Sstevel@tonic-gate #define ACPI_S_STATE_COUNT 6 5877c478bd9Sstevel@tonic-gate 5887c478bd9Sstevel@tonic-gate #define ACPI_STATE_D0 (UINT8) 0 5897c478bd9Sstevel@tonic-gate #define ACPI_STATE_D1 (UINT8) 1 5907c478bd9Sstevel@tonic-gate #define ACPI_STATE_D2 (UINT8) 2 5917c478bd9Sstevel@tonic-gate #define ACPI_STATE_D3 (UINT8) 3 5927c478bd9Sstevel@tonic-gate #define ACPI_D_STATES_MAX ACPI_STATE_D3 5937c478bd9Sstevel@tonic-gate #define ACPI_D_STATE_COUNT 4 5947c478bd9Sstevel@tonic-gate 5957c478bd9Sstevel@tonic-gate #define ACPI_STATE_C0 (UINT8) 0 5967c478bd9Sstevel@tonic-gate #define ACPI_STATE_C1 (UINT8) 1 5977c478bd9Sstevel@tonic-gate #define ACPI_STATE_C2 (UINT8) 2 5987c478bd9Sstevel@tonic-gate #define ACPI_STATE_C3 (UINT8) 3 5997c478bd9Sstevel@tonic-gate #define ACPI_C_STATES_MAX ACPI_STATE_C3 6007c478bd9Sstevel@tonic-gate #define ACPI_C_STATE_COUNT 4 6017c478bd9Sstevel@tonic-gate 6027c478bd9Sstevel@tonic-gate /* 6037c478bd9Sstevel@tonic-gate * Sleep type invalid value 6047c478bd9Sstevel@tonic-gate */ 6057c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_MAX 0x7 6067c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_INVALID 0xFF 6077c478bd9Sstevel@tonic-gate 6087c478bd9Sstevel@tonic-gate /* 6097c478bd9Sstevel@tonic-gate * Standard notify values 6107c478bd9Sstevel@tonic-gate */ 611db2bae30SDana Myers #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 612db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 613db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 614db2bae30SDana Myers #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 615db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 616db2bae30SDana Myers #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 617db2bae30SDana Myers #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 618db2bae30SDana Myers #define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 619db2bae30SDana Myers #define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 620db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 621db2bae30SDana Myers #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A 622db2bae30SDana Myers #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B 623db2bae30SDana Myers 624db2bae30SDana Myers #define ACPI_NOTIFY_MAX 0x0B 6257c478bd9Sstevel@tonic-gate 6267c478bd9Sstevel@tonic-gate /* 627*aa2aa9a6SDana Myers * Types associated with ACPI names and objects. The first group of 6287c478bd9Sstevel@tonic-gate * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 629*aa2aa9a6SDana Myers * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 6307c478bd9Sstevel@tonic-gate * only add to the first group if the spec changes. 6317c478bd9Sstevel@tonic-gate * 6327c478bd9Sstevel@tonic-gate * NOTE: Types must be kept in sync with the global AcpiNsProperties 6337c478bd9Sstevel@tonic-gate * and AcpiNsTypeNames arrays. 6347c478bd9Sstevel@tonic-gate */ 6357c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_OBJECT_TYPE; 6367c478bd9Sstevel@tonic-gate 6377c478bd9Sstevel@tonic-gate #define ACPI_TYPE_ANY 0x00 6387c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 6397c478bd9Sstevel@tonic-gate #define ACPI_TYPE_STRING 0x02 6407c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER 0x03 6417c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 6427c478bd9Sstevel@tonic-gate #define ACPI_TYPE_FIELD_UNIT 0x05 6437c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 6447c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EVENT 0x07 6457c478bd9Sstevel@tonic-gate #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 6467c478bd9Sstevel@tonic-gate #define ACPI_TYPE_MUTEX 0x09 6477c478bd9Sstevel@tonic-gate #define ACPI_TYPE_REGION 0x0A 6487c478bd9Sstevel@tonic-gate #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 6497c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 6507c478bd9Sstevel@tonic-gate #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 6517c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER_FIELD 0x0E 6527c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DDB_HANDLE 0x0F 6537c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEBUG_OBJECT 0x10 6547c478bd9Sstevel@tonic-gate 6557c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EXTERNAL_MAX 0x10 6567c478bd9Sstevel@tonic-gate 6577c478bd9Sstevel@tonic-gate /* 6587c478bd9Sstevel@tonic-gate * These are object types that do not map directly to the ACPI 6597c478bd9Sstevel@tonic-gate * ObjectType() operator. They are used for various internal purposes only. 6607c478bd9Sstevel@tonic-gate * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 6617c478bd9Sstevel@tonic-gate * internal types must move upwards. (There is code that depends on these 6627c478bd9Sstevel@tonic-gate * values being contiguous with the external types above.) 6637c478bd9Sstevel@tonic-gate */ 6647c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 6657c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 6667c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 6677c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 6687c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ALIAS 0x15 6697c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 6707c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_NOTIFY 0x17 6717c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 6727c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE 0x19 6737c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 6747c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 6757c478bd9Sstevel@tonic-gate 6767c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 6777c478bd9Sstevel@tonic-gate 6787c478bd9Sstevel@tonic-gate /* 6797c478bd9Sstevel@tonic-gate * These are special object types that never appear in 6807c478bd9Sstevel@tonic-gate * a Namespace node, only in an ACPI_OPERAND_OBJECT 6817c478bd9Sstevel@tonic-gate */ 6827c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_EXTRA 0x1C 6837c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_DATA 0x1D 6847c478bd9Sstevel@tonic-gate 6857c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_MAX 0x1D 6867c478bd9Sstevel@tonic-gate 6877c478bd9Sstevel@tonic-gate /* All types above here are invalid */ 6887c478bd9Sstevel@tonic-gate 6897c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INVALID 0x1E 6907c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NOT_FOUND 0xFF 6917c478bd9Sstevel@tonic-gate 692db2bae30SDana Myers #define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) 693db2bae30SDana Myers 694db2bae30SDana Myers 6957c478bd9Sstevel@tonic-gate /* 6967c478bd9Sstevel@tonic-gate * All I/O 6977c478bd9Sstevel@tonic-gate */ 6987c478bd9Sstevel@tonic-gate #define ACPI_READ 0 6997c478bd9Sstevel@tonic-gate #define ACPI_WRITE 1 7007c478bd9Sstevel@tonic-gate #define ACPI_IO_MASK 1 7017c478bd9Sstevel@tonic-gate 7027c478bd9Sstevel@tonic-gate /* 7037c478bd9Sstevel@tonic-gate * Event Types: Fixed & General Purpose 7047c478bd9Sstevel@tonic-gate */ 7057c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_TYPE; 7067c478bd9Sstevel@tonic-gate 7077c478bd9Sstevel@tonic-gate /* 7087c478bd9Sstevel@tonic-gate * Fixed events 7097c478bd9Sstevel@tonic-gate */ 7107c478bd9Sstevel@tonic-gate #define ACPI_EVENT_PMTIMER 0 7117c478bd9Sstevel@tonic-gate #define ACPI_EVENT_GLOBAL 1 7127c478bd9Sstevel@tonic-gate #define ACPI_EVENT_POWER_BUTTON 2 7137c478bd9Sstevel@tonic-gate #define ACPI_EVENT_SLEEP_BUTTON 3 7147c478bd9Sstevel@tonic-gate #define ACPI_EVENT_RTC 4 7157c478bd9Sstevel@tonic-gate #define ACPI_EVENT_MAX 4 7167c478bd9Sstevel@tonic-gate #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 7177c478bd9Sstevel@tonic-gate 7187c478bd9Sstevel@tonic-gate /* 7197c478bd9Sstevel@tonic-gate * Event Status - Per event 7207c478bd9Sstevel@tonic-gate * ------------- 7217c478bd9Sstevel@tonic-gate * The encoding of ACPI_EVENT_STATUS is illustrated below. 7227c478bd9Sstevel@tonic-gate * Note that a set bit (1) indicates the property is TRUE 7237c478bd9Sstevel@tonic-gate * (e.g. if bit 0 is set then the event is enabled). 7247c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 7257c478bd9Sstevel@tonic-gate * | Bits 31:3 |2|1|0| 7267c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 7277c478bd9Sstevel@tonic-gate * | | | | 7287c478bd9Sstevel@tonic-gate * | | | +- Enabled? 7297c478bd9Sstevel@tonic-gate * | | +--- Enabled for wake? 7307c478bd9Sstevel@tonic-gate * | +----- Set? 7317c478bd9Sstevel@tonic-gate * +----------- <Reserved> 7327c478bd9Sstevel@tonic-gate */ 7337c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_STATUS; 7347c478bd9Sstevel@tonic-gate 7357c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 7367c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 7377c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 7387c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 7397c478bd9Sstevel@tonic-gate 7407c478bd9Sstevel@tonic-gate /* 7417c478bd9Sstevel@tonic-gate * General Purpose Events (GPE) 7427c478bd9Sstevel@tonic-gate */ 7437c478bd9Sstevel@tonic-gate #define ACPI_GPE_INVALID 0xFF 7447c478bd9Sstevel@tonic-gate #define ACPI_GPE_MAX 0xFF 7457c478bd9Sstevel@tonic-gate #define ACPI_NUM_GPE 256 7467c478bd9Sstevel@tonic-gate 7477c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE 0 7487c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISABLE 1 7497c478bd9Sstevel@tonic-gate 7507c478bd9Sstevel@tonic-gate 7517c478bd9Sstevel@tonic-gate /* 7527c478bd9Sstevel@tonic-gate * GPE info flags - Per GPE 7537c478bd9Sstevel@tonic-gate * +-+-+-+---+---+-+ 7547c478bd9Sstevel@tonic-gate * |7|6|5|4:3|2:1|0| 7557c478bd9Sstevel@tonic-gate * +-+-+-+---+---+-+ 7567c478bd9Sstevel@tonic-gate * | | | | | | 7577c478bd9Sstevel@tonic-gate * | | | | | +--- Interrupt type: Edge or Level Triggered 7587c478bd9Sstevel@tonic-gate * | | | | +--- Type: Wake-only, Runtime-only, or wake/runtime 7597c478bd9Sstevel@tonic-gate * | | | +--- Type of dispatch -- to method, handler, or none 7607c478bd9Sstevel@tonic-gate * | | +--- Enabled for runtime? 7617c478bd9Sstevel@tonic-gate * | +--- Enabled for wake? 762db2bae30SDana Myers * +--- Unused 7637c478bd9Sstevel@tonic-gate */ 7647c478bd9Sstevel@tonic-gate #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x01 7657c478bd9Sstevel@tonic-gate #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x01 7667c478bd9Sstevel@tonic-gate #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 7677c478bd9Sstevel@tonic-gate 7687c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_MASK (UINT8) 0x06 7697c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE_RUN (UINT8) 0x06 7707c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE (UINT8) 0x02 7717c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_RUNTIME (UINT8) 0x04 /* Default */ 7727c478bd9Sstevel@tonic-gate 7737c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x18 7747c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x08 7757c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x10 7767c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_NOT_USED (UINT8) 0x00 /* Default */ 7777c478bd9Sstevel@tonic-gate 7787c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLE_MASK (UINT8) 0x20 7797c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLED (UINT8) 0x20 7807c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_DISABLED (UINT8) 0x00 /* Default */ 7817c478bd9Sstevel@tonic-gate 7827c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLE_MASK (UINT8) 0x40 7837c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLED (UINT8) 0x40 7847c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_DISABLED (UINT8) 0x00 /* Default */ 7857c478bd9Sstevel@tonic-gate 7867c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE_MASK (UINT8) 0x60 /* Both run/wake */ 7877c478bd9Sstevel@tonic-gate 7887c478bd9Sstevel@tonic-gate /* 7897c478bd9Sstevel@tonic-gate * Flags for GPE and Lock interfaces 7907c478bd9Sstevel@tonic-gate */ 7917c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_ENABLE 0x2 /* AcpiGpeEnable */ 7927c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_DISABLE 0x2 /* AcpiGpeDisable */ 7937c478bd9Sstevel@tonic-gate 7947c478bd9Sstevel@tonic-gate #define ACPI_NOT_ISR 0x1 7957c478bd9Sstevel@tonic-gate #define ACPI_ISR 0x0 7967c478bd9Sstevel@tonic-gate 7977c478bd9Sstevel@tonic-gate 7987c478bd9Sstevel@tonic-gate /* Notify types */ 7997c478bd9Sstevel@tonic-gate 8007c478bd9Sstevel@tonic-gate #define ACPI_SYSTEM_NOTIFY 0x1 8017c478bd9Sstevel@tonic-gate #define ACPI_DEVICE_NOTIFY 0x2 802db2bae30SDana Myers #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) 8037c478bd9Sstevel@tonic-gate #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 8047c478bd9Sstevel@tonic-gate 8057c478bd9Sstevel@tonic-gate #define ACPI_MAX_SYS_NOTIFY 0x7f 8067c478bd9Sstevel@tonic-gate 8077c478bd9Sstevel@tonic-gate 8087c478bd9Sstevel@tonic-gate /* Address Space (Operation Region) Types */ 8097c478bd9Sstevel@tonic-gate 8107c478bd9Sstevel@tonic-gate typedef UINT8 ACPI_ADR_SPACE_TYPE; 8117c478bd9Sstevel@tonic-gate 8127c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 8137c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 8147c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 8157c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 8167c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 8177c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 8187c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 8197c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7 8207c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127 8217c478bd9Sstevel@tonic-gate 8227c478bd9Sstevel@tonic-gate 8237c478bd9Sstevel@tonic-gate /* 8247c478bd9Sstevel@tonic-gate * BitRegister IDs 825*aa2aa9a6SDana Myers * 826*aa2aa9a6SDana Myers * These values are intended to be used by the hardware interfaces 827*aa2aa9a6SDana Myers * and are mapped to individual bitfields defined within the ACPI 828*aa2aa9a6SDana Myers * registers. See the AcpiGbl_BitRegisterInfo global table in utglobal.c 829*aa2aa9a6SDana Myers * for this mapping. 8307c478bd9Sstevel@tonic-gate */ 831*aa2aa9a6SDana Myers 832*aa2aa9a6SDana Myers /* PM1 Status register */ 833*aa2aa9a6SDana Myers 8347c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_STATUS 0x00 8357c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 8367c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 8377c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 8387c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 8397c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 8407c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_STATUS 0x06 8417c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 8427c478bd9Sstevel@tonic-gate 843*aa2aa9a6SDana Myers /* PM1 Enable register */ 844*aa2aa9a6SDana Myers 8457c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_ENABLE 0x08 8467c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 8477c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 8487c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 8497c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 850*aa2aa9a6SDana Myers #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D 851*aa2aa9a6SDana Myers 852*aa2aa9a6SDana Myers /* PM1 Control register */ 8537c478bd9Sstevel@tonic-gate 854*aa2aa9a6SDana Myers #define ACPI_BITREG_SCI_ENABLE 0x0E 855*aa2aa9a6SDana Myers #define ACPI_BITREG_BUS_MASTER_RLD 0x0F 856*aa2aa9a6SDana Myers #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 857*aa2aa9a6SDana Myers #define ACPI_BITREG_SLEEP_TYPE 0x11 858*aa2aa9a6SDana Myers #define ACPI_BITREG_SLEEP_ENABLE 0x12 8597c478bd9Sstevel@tonic-gate 860*aa2aa9a6SDana Myers /* PM2 Control register */ 8617c478bd9Sstevel@tonic-gate 862*aa2aa9a6SDana Myers #define ACPI_BITREG_ARB_DISABLE 0x13 863*aa2aa9a6SDana Myers 864*aa2aa9a6SDana Myers #define ACPI_BITREG_MAX 0x13 8657c478bd9Sstevel@tonic-gate #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 8667c478bd9Sstevel@tonic-gate 8677c478bd9Sstevel@tonic-gate 868*aa2aa9a6SDana Myers /* Status register values. A 1 clears a status bit. 0 = no effect */ 869*aa2aa9a6SDana Myers 870*aa2aa9a6SDana Myers #define ACPI_CLEAR_STATUS 1 871*aa2aa9a6SDana Myers 872*aa2aa9a6SDana Myers /* Enable and Control register values */ 873*aa2aa9a6SDana Myers 874*aa2aa9a6SDana Myers #define ACPI_ENABLE_EVENT 1 875*aa2aa9a6SDana Myers #define ACPI_DISABLE_EVENT 0 876*aa2aa9a6SDana Myers 877*aa2aa9a6SDana Myers 8787c478bd9Sstevel@tonic-gate /* 8797c478bd9Sstevel@tonic-gate * External ACPI object definition 8807c478bd9Sstevel@tonic-gate */ 881db2bae30SDana Myers 882db2bae30SDana Myers /* 883db2bae30SDana Myers * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element 884db2bae30SDana Myers * or an unresolved named reference. 885db2bae30SDana Myers */ 8867c478bd9Sstevel@tonic-gate typedef union acpi_object 8877c478bd9Sstevel@tonic-gate { 88827f7c583Smyers ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 8897c478bd9Sstevel@tonic-gate struct 8907c478bd9Sstevel@tonic-gate { 891db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ 89227f7c583Smyers ACPI_INTEGER Value; /* The actual number */ 8937c478bd9Sstevel@tonic-gate } Integer; 8947c478bd9Sstevel@tonic-gate 8957c478bd9Sstevel@tonic-gate struct 8967c478bd9Sstevel@tonic-gate { 897db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ 89827f7c583Smyers UINT32 Length; /* # of bytes in string, excluding trailing null */ 89927f7c583Smyers char *Pointer; /* points to the string value */ 9007c478bd9Sstevel@tonic-gate } String; 9017c478bd9Sstevel@tonic-gate 9027c478bd9Sstevel@tonic-gate struct 9037c478bd9Sstevel@tonic-gate { 904db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ 90527f7c583Smyers UINT32 Length; /* # of bytes in buffer */ 90627f7c583Smyers UINT8 *Pointer; /* points to the buffer */ 9077c478bd9Sstevel@tonic-gate } Buffer; 9087c478bd9Sstevel@tonic-gate 9097c478bd9Sstevel@tonic-gate struct 9107c478bd9Sstevel@tonic-gate { 911db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ 91227f7c583Smyers UINT32 Count; /* # of elements in package */ 91327f7c583Smyers union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 9147c478bd9Sstevel@tonic-gate } Package; 9157c478bd9Sstevel@tonic-gate 9167c478bd9Sstevel@tonic-gate struct 9177c478bd9Sstevel@tonic-gate { 918db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ 919db2bae30SDana Myers ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ 920db2bae30SDana Myers ACPI_HANDLE Handle; /* object reference */ 921db2bae30SDana Myers } Reference; 922db2bae30SDana Myers 923db2bae30SDana Myers struct 924db2bae30SDana Myers { 925db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ 92627f7c583Smyers UINT32 ProcId; 92727f7c583Smyers ACPI_IO_ADDRESS PblkAddress; 92827f7c583Smyers UINT32 PblkLength; 9297c478bd9Sstevel@tonic-gate } Processor; 9307c478bd9Sstevel@tonic-gate 9317c478bd9Sstevel@tonic-gate struct 9327c478bd9Sstevel@tonic-gate { 933db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ 93427f7c583Smyers UINT32 SystemLevel; 93527f7c583Smyers UINT32 ResourceOrder; 9367c478bd9Sstevel@tonic-gate } PowerResource; 9377c478bd9Sstevel@tonic-gate 9387c478bd9Sstevel@tonic-gate } ACPI_OBJECT; 9397c478bd9Sstevel@tonic-gate 9407c478bd9Sstevel@tonic-gate 9417c478bd9Sstevel@tonic-gate /* 9427c478bd9Sstevel@tonic-gate * List of objects, used as a parameter list for control method evaluation 9437c478bd9Sstevel@tonic-gate */ 9447c478bd9Sstevel@tonic-gate typedef struct acpi_object_list 9457c478bd9Sstevel@tonic-gate { 94627f7c583Smyers UINT32 Count; 94727f7c583Smyers ACPI_OBJECT *Pointer; 9487c478bd9Sstevel@tonic-gate 9497c478bd9Sstevel@tonic-gate } ACPI_OBJECT_LIST; 9507c478bd9Sstevel@tonic-gate 9517c478bd9Sstevel@tonic-gate 9527c478bd9Sstevel@tonic-gate /* 9537c478bd9Sstevel@tonic-gate * Miscellaneous common Data Structures used by the interfaces 9547c478bd9Sstevel@tonic-gate */ 9557c478bd9Sstevel@tonic-gate #define ACPI_NO_BUFFER 0 9567c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) 9577c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) 9587c478bd9Sstevel@tonic-gate 9597c478bd9Sstevel@tonic-gate typedef struct acpi_buffer 9607c478bd9Sstevel@tonic-gate { 96127f7c583Smyers ACPI_SIZE Length; /* Length in bytes of the buffer */ 96227f7c583Smyers void *Pointer; /* pointer to buffer */ 9637c478bd9Sstevel@tonic-gate 9647c478bd9Sstevel@tonic-gate } ACPI_BUFFER; 9657c478bd9Sstevel@tonic-gate 9667c478bd9Sstevel@tonic-gate 9677c478bd9Sstevel@tonic-gate /* 9687c478bd9Sstevel@tonic-gate * NameType for AcpiGetName 9697c478bd9Sstevel@tonic-gate */ 9707c478bd9Sstevel@tonic-gate #define ACPI_FULL_PATHNAME 0 9717c478bd9Sstevel@tonic-gate #define ACPI_SINGLE_NAME 1 9727c478bd9Sstevel@tonic-gate #define ACPI_NAME_TYPE_MAX 1 9737c478bd9Sstevel@tonic-gate 9747c478bd9Sstevel@tonic-gate 975*aa2aa9a6SDana Myers /* 976*aa2aa9a6SDana Myers * Predefined Namespace items 977*aa2aa9a6SDana Myers */ 978*aa2aa9a6SDana Myers typedef struct acpi_predefined_names 979*aa2aa9a6SDana Myers { 980*aa2aa9a6SDana Myers char *Name; 981*aa2aa9a6SDana Myers UINT8 Type; 982*aa2aa9a6SDana Myers char *Val; 983*aa2aa9a6SDana Myers 984*aa2aa9a6SDana Myers } ACPI_PREDEFINED_NAMES; 985*aa2aa9a6SDana Myers 986*aa2aa9a6SDana Myers 9877c478bd9Sstevel@tonic-gate /* 9887c478bd9Sstevel@tonic-gate * Structure and flags for AcpiGetSystemInfo 9897c478bd9Sstevel@tonic-gate */ 9907c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_UNKNOWN 0x0000 9917c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_ACPI 0x0001 9927c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_LEGACY 0x0002 9937c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODES_MASK 0x0003 9947c478bd9Sstevel@tonic-gate 9957c478bd9Sstevel@tonic-gate 9967c478bd9Sstevel@tonic-gate /* 9977c478bd9Sstevel@tonic-gate * System info returned by AcpiGetSystemInfo() 9987c478bd9Sstevel@tonic-gate */ 9997c478bd9Sstevel@tonic-gate typedef struct acpi_system_info 10007c478bd9Sstevel@tonic-gate { 100127f7c583Smyers UINT32 AcpiCaVersion; 100227f7c583Smyers UINT32 Flags; 100327f7c583Smyers UINT32 TimerResolution; 100427f7c583Smyers UINT32 Reserved1; 100527f7c583Smyers UINT32 Reserved2; 100627f7c583Smyers UINT32 DebugLevel; 100727f7c583Smyers UINT32 DebugLayer; 10087c478bd9Sstevel@tonic-gate 10097c478bd9Sstevel@tonic-gate } ACPI_SYSTEM_INFO; 10107c478bd9Sstevel@tonic-gate 10117c478bd9Sstevel@tonic-gate 1012db2bae30SDana Myers /* 1013*aa2aa9a6SDana Myers * System statistics returned by AcpiGetStatistics() 1014db2bae30SDana Myers */ 1015db2bae30SDana Myers typedef struct acpi_statistics 1016db2bae30SDana Myers { 1017db2bae30SDana Myers UINT32 SciCount; 1018db2bae30SDana Myers UINT32 GpeCount; 1019db2bae30SDana Myers UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; 1020db2bae30SDana Myers UINT32 MethodCount; 1021db2bae30SDana Myers 1022db2bae30SDana Myers } ACPI_STATISTICS; 1023db2bae30SDana Myers 1024db2bae30SDana Myers 1025db2bae30SDana Myers /* Table Event Types */ 1026db2bae30SDana Myers 1027db2bae30SDana Myers #define ACPI_TABLE_EVENT_LOAD 0x0 1028db2bae30SDana Myers #define ACPI_TABLE_EVENT_UNLOAD 0x1 1029db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 1030db2bae30SDana Myers 1031db2bae30SDana Myers 10327c478bd9Sstevel@tonic-gate /* 10337c478bd9Sstevel@tonic-gate * Types specific to the OS service interfaces 10347c478bd9Sstevel@tonic-gate */ 10357c478bd9Sstevel@tonic-gate typedef UINT32 10367c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 103727f7c583Smyers void *Context); 10387c478bd9Sstevel@tonic-gate 10397c478bd9Sstevel@tonic-gate typedef void 10407c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 104127f7c583Smyers void *Context); 10427c478bd9Sstevel@tonic-gate 10437c478bd9Sstevel@tonic-gate /* 10447c478bd9Sstevel@tonic-gate * Various handlers and callback procedures 10457c478bd9Sstevel@tonic-gate */ 10467c478bd9Sstevel@tonic-gate typedef 10477c478bd9Sstevel@tonic-gate UINT32 (*ACPI_EVENT_HANDLER) ( 104827f7c583Smyers void *Context); 10497c478bd9Sstevel@tonic-gate 10507c478bd9Sstevel@tonic-gate typedef 10517c478bd9Sstevel@tonic-gate void (*ACPI_NOTIFY_HANDLER) ( 105227f7c583Smyers ACPI_HANDLE Device, 105327f7c583Smyers UINT32 Value, 105427f7c583Smyers void *Context); 10557c478bd9Sstevel@tonic-gate 10567c478bd9Sstevel@tonic-gate typedef 10577c478bd9Sstevel@tonic-gate void (*ACPI_OBJECT_HANDLER) ( 105827f7c583Smyers ACPI_HANDLE Object, 105927f7c583Smyers UINT32 Function, 106027f7c583Smyers void *Data); 10617c478bd9Sstevel@tonic-gate 10627c478bd9Sstevel@tonic-gate typedef 10637c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_INIT_HANDLER) ( 106427f7c583Smyers ACPI_HANDLE Object, 106527f7c583Smyers UINT32 Function); 10667c478bd9Sstevel@tonic-gate 10677c478bd9Sstevel@tonic-gate #define ACPI_INIT_DEVICE_INI 1 10687c478bd9Sstevel@tonic-gate 10697c478bd9Sstevel@tonic-gate typedef 10707c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 107127f7c583Smyers ACPI_STATUS AmlStatus, 107227f7c583Smyers ACPI_NAME Name, 107327f7c583Smyers UINT16 Opcode, 107427f7c583Smyers UINT32 AmlOffset, 107527f7c583Smyers void *Context); 10767c478bd9Sstevel@tonic-gate 1077*aa2aa9a6SDana Myers /* Table Event handler (Load, LoadTable, etc.) and types */ 1078db2bae30SDana Myers 1079db2bae30SDana Myers typedef 1080db2bae30SDana Myers ACPI_STATUS (*ACPI_TABLE_HANDLER) ( 1081db2bae30SDana Myers UINT32 Event, 1082db2bae30SDana Myers void *Table, 1083db2bae30SDana Myers void *Context); 1084db2bae30SDana Myers 1085db2bae30SDana Myers #define ACPI_TABLE_LOAD 0x0 1086db2bae30SDana Myers #define ACPI_TABLE_UNLOAD 0x1 1087db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 1088db2bae30SDana Myers 10897c478bd9Sstevel@tonic-gate 10907c478bd9Sstevel@tonic-gate /* Address Spaces (For Operation Regions) */ 10917c478bd9Sstevel@tonic-gate 10927c478bd9Sstevel@tonic-gate typedef 10937c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 109427f7c583Smyers UINT32 Function, 109527f7c583Smyers ACPI_PHYSICAL_ADDRESS Address, 109627f7c583Smyers UINT32 BitWidth, 109727f7c583Smyers ACPI_INTEGER *Value, 109827f7c583Smyers void *HandlerContext, 109927f7c583Smyers void *RegionContext); 11007c478bd9Sstevel@tonic-gate 110127f7c583Smyers #define ACPI_DEFAULT_HANDLER NULL 11027c478bd9Sstevel@tonic-gate 11037c478bd9Sstevel@tonic-gate typedef 11047c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 110527f7c583Smyers ACPI_HANDLE RegionHandle, 110627f7c583Smyers UINT32 Function, 110727f7c583Smyers void *HandlerContext, 110827f7c583Smyers void **RegionContext); 11097c478bd9Sstevel@tonic-gate 11107c478bd9Sstevel@tonic-gate #define ACPI_REGION_ACTIVATE 0 11117c478bd9Sstevel@tonic-gate #define ACPI_REGION_DEACTIVATE 1 11127c478bd9Sstevel@tonic-gate 11137c478bd9Sstevel@tonic-gate typedef 11147c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_WALK_CALLBACK) ( 111527f7c583Smyers ACPI_HANDLE ObjHandle, 111627f7c583Smyers UINT32 NestingLevel, 111727f7c583Smyers void *Context, 111827f7c583Smyers void **ReturnValue); 11197c478bd9Sstevel@tonic-gate 11207c478bd9Sstevel@tonic-gate 11217c478bd9Sstevel@tonic-gate /* Interrupt handler return values */ 11227c478bd9Sstevel@tonic-gate 11237c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_NOT_HANDLED 0x00 11247c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_HANDLED 0x01 11257c478bd9Sstevel@tonic-gate 11267c478bd9Sstevel@tonic-gate 1127*aa2aa9a6SDana Myers /* Length of _HID, _UID, _CID, and UUID values */ 1128*aa2aa9a6SDana Myers 1129*aa2aa9a6SDana Myers #define ACPI_DEVICE_ID_LENGTH 0x09 1130*aa2aa9a6SDana Myers #define ACPI_MAX_CID_LENGTH 48 1131*aa2aa9a6SDana Myers #define ACPI_UUID_LENGTH 16 1132*aa2aa9a6SDana Myers 11337c478bd9Sstevel@tonic-gate /* Common string version of device HIDs and UIDs */ 11347c478bd9Sstevel@tonic-gate 11357c478bd9Sstevel@tonic-gate typedef struct acpi_device_id 11367c478bd9Sstevel@tonic-gate { 113727f7c583Smyers char Value[ACPI_DEVICE_ID_LENGTH]; 11387c478bd9Sstevel@tonic-gate 11397c478bd9Sstevel@tonic-gate } ACPI_DEVICE_ID; 11407c478bd9Sstevel@tonic-gate 11417c478bd9Sstevel@tonic-gate /* Common string version of device CIDs */ 11427c478bd9Sstevel@tonic-gate 11437c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id 11447c478bd9Sstevel@tonic-gate { 114527f7c583Smyers char Value[ACPI_MAX_CID_LENGTH]; 11467c478bd9Sstevel@tonic-gate 11477c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID; 11487c478bd9Sstevel@tonic-gate 11497c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id_list 11507c478bd9Sstevel@tonic-gate { 115127f7c583Smyers UINT32 Count; 115227f7c583Smyers UINT32 Size; 115327f7c583Smyers ACPI_COMPATIBLE_ID Id[1]; 11547c478bd9Sstevel@tonic-gate 11557c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID_LIST; 11567c478bd9Sstevel@tonic-gate 11577c478bd9Sstevel@tonic-gate 11587c478bd9Sstevel@tonic-gate /* Structure and flags for AcpiGetObjectInfo */ 11597c478bd9Sstevel@tonic-gate 11607c478bd9Sstevel@tonic-gate #define ACPI_VALID_STA 0x0001 11617c478bd9Sstevel@tonic-gate #define ACPI_VALID_ADR 0x0002 11627c478bd9Sstevel@tonic-gate #define ACPI_VALID_HID 0x0004 11637c478bd9Sstevel@tonic-gate #define ACPI_VALID_UID 0x0008 11647c478bd9Sstevel@tonic-gate #define ACPI_VALID_CID 0x0010 11657c478bd9Sstevel@tonic-gate #define ACPI_VALID_SXDS 0x0020 11667c478bd9Sstevel@tonic-gate 116730082d0cSmyers /* Flags for _STA method */ 116830082d0cSmyers 116930082d0cSmyers #define ACPI_STA_DEVICE_PRESENT 0x01 117030082d0cSmyers #define ACPI_STA_DEVICE_ENABLED 0x02 117130082d0cSmyers #define ACPI_STA_DEVICE_UI 0x04 117227f7c583Smyers #define ACPI_STA_DEVICE_FUNCTIONING 0x08 117327f7c583Smyers #define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 117430082d0cSmyers #define ACPI_STA_BATTERY_PRESENT 0x10 117530082d0cSmyers 11767c478bd9Sstevel@tonic-gate 11777c478bd9Sstevel@tonic-gate #define ACPI_COMMON_OBJ_INFO \ 117827f7c583Smyers ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ 117927f7c583Smyers ACPI_NAME Name /* ACPI object Name */ 11807c478bd9Sstevel@tonic-gate 11817c478bd9Sstevel@tonic-gate 11827c478bd9Sstevel@tonic-gate typedef struct acpi_obj_info_header 11837c478bd9Sstevel@tonic-gate { 11847c478bd9Sstevel@tonic-gate ACPI_COMMON_OBJ_INFO; 11857c478bd9Sstevel@tonic-gate 11867c478bd9Sstevel@tonic-gate } ACPI_OBJ_INFO_HEADER; 11877c478bd9Sstevel@tonic-gate 11887c478bd9Sstevel@tonic-gate 11897c478bd9Sstevel@tonic-gate /* Structure returned from Get Object Info */ 11907c478bd9Sstevel@tonic-gate 11917c478bd9Sstevel@tonic-gate typedef struct acpi_device_info 11927c478bd9Sstevel@tonic-gate { 11937c478bd9Sstevel@tonic-gate ACPI_COMMON_OBJ_INFO; 11947c478bd9Sstevel@tonic-gate 1195db2bae30SDana Myers UINT32 ParamCount; /* If a method, required parameter count */ 119627f7c583Smyers UINT32 Valid; /* Indicates which fields below are valid */ 119727f7c583Smyers UINT32 CurrentStatus; /* _STA value */ 119827f7c583Smyers ACPI_INTEGER Address; /* _ADR value if any */ 119927f7c583Smyers ACPI_DEVICE_ID HardwareId; /* _HID value if any */ 120027f7c583Smyers ACPI_DEVICE_ID UniqueId; /* _UID value if any */ 120127f7c583Smyers UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 120227f7c583Smyers ACPI_COMPATIBLE_ID_LIST CompatibilityId; /* List of _CIDs if any */ 12037c478bd9Sstevel@tonic-gate 12047c478bd9Sstevel@tonic-gate } ACPI_DEVICE_INFO; 12057c478bd9Sstevel@tonic-gate 12067c478bd9Sstevel@tonic-gate 12077c478bd9Sstevel@tonic-gate /* Context structs for address space handlers */ 12087c478bd9Sstevel@tonic-gate 12097c478bd9Sstevel@tonic-gate typedef struct acpi_pci_id 12107c478bd9Sstevel@tonic-gate { 121127f7c583Smyers UINT16 Segment; 121227f7c583Smyers UINT16 Bus; 121327f7c583Smyers UINT16 Device; 121427f7c583Smyers UINT16 Function; 12157c478bd9Sstevel@tonic-gate 12167c478bd9Sstevel@tonic-gate } ACPI_PCI_ID; 12177c478bd9Sstevel@tonic-gate 12187c478bd9Sstevel@tonic-gate 12197c478bd9Sstevel@tonic-gate typedef struct acpi_mem_space_context 12207c478bd9Sstevel@tonic-gate { 122127f7c583Smyers UINT32 Length; 122227f7c583Smyers ACPI_PHYSICAL_ADDRESS Address; 122327f7c583Smyers ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 122427f7c583Smyers UINT8 *MappedLogicalAddress; 122527f7c583Smyers ACPI_SIZE MappedLength; 12267c478bd9Sstevel@tonic-gate 12277c478bd9Sstevel@tonic-gate } ACPI_MEM_SPACE_CONTEXT; 12287c478bd9Sstevel@tonic-gate 12297c478bd9Sstevel@tonic-gate 12307c478bd9Sstevel@tonic-gate /* 1231*aa2aa9a6SDana Myers * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled 12327c478bd9Sstevel@tonic-gate */ 1233*aa2aa9a6SDana Myers typedef struct acpi_memory_list 123430082d0cSmyers { 1235*aa2aa9a6SDana Myers char *ListName; 1236*aa2aa9a6SDana Myers void *ListHead; 1237*aa2aa9a6SDana Myers UINT16 ObjectSize; 1238*aa2aa9a6SDana Myers UINT16 MaxDepth; 1239*aa2aa9a6SDana Myers UINT16 CurrentDepth; 1240*aa2aa9a6SDana Myers UINT16 LinkOffset; 1241*aa2aa9a6SDana Myers 1242*aa2aa9a6SDana Myers #ifdef ACPI_DBG_TRACK_ALLOCATIONS 1243*aa2aa9a6SDana Myers 1244*aa2aa9a6SDana Myers /* Statistics for debug memory tracking only */ 1245*aa2aa9a6SDana Myers 1246*aa2aa9a6SDana Myers UINT32 TotalAllocated; 1247*aa2aa9a6SDana Myers UINT32 TotalFreed; 1248*aa2aa9a6SDana Myers UINT32 MaxOccupied; 1249*aa2aa9a6SDana Myers UINT32 TotalSize; 1250*aa2aa9a6SDana Myers UINT32 CurrentTotalSize; 1251*aa2aa9a6SDana Myers UINT32 Requests; 1252*aa2aa9a6SDana Myers UINT32 Hits; 1253*aa2aa9a6SDana Myers #endif 12547c478bd9Sstevel@tonic-gate 1255*aa2aa9a6SDana Myers } ACPI_MEMORY_LIST; 12567c478bd9Sstevel@tonic-gate 12577c478bd9Sstevel@tonic-gate 12587c478bd9Sstevel@tonic-gate #endif /* __ACTYPES_H__ */ 1259