17c478bd9Sstevel@tonic-gate /****************************************************************************** 27c478bd9Sstevel@tonic-gate * 37c478bd9Sstevel@tonic-gate * Name: actypes.h - Common data types for the entire ACPI subsystem 4*db2bae30SDana Myers * $Revision: 1.323 $ 57c478bd9Sstevel@tonic-gate * 67c478bd9Sstevel@tonic-gate *****************************************************************************/ 77c478bd9Sstevel@tonic-gate 87c478bd9Sstevel@tonic-gate /****************************************************************************** 97c478bd9Sstevel@tonic-gate * 107c478bd9Sstevel@tonic-gate * 1. Copyright Notice 117c478bd9Sstevel@tonic-gate * 12*db2bae30SDana Myers * Some or all of this work - Copyright (c) 1999 - 2008, Intel Corp. 137c478bd9Sstevel@tonic-gate * All rights reserved. 147c478bd9Sstevel@tonic-gate * 157c478bd9Sstevel@tonic-gate * 2. License 167c478bd9Sstevel@tonic-gate * 177c478bd9Sstevel@tonic-gate * 2.1. This is your license from Intel Corp. under its intellectual property 187c478bd9Sstevel@tonic-gate * rights. You may have additional license terms from the party that provided 197c478bd9Sstevel@tonic-gate * you this software, covering your right to use that party's intellectual 207c478bd9Sstevel@tonic-gate * property rights. 217c478bd9Sstevel@tonic-gate * 227c478bd9Sstevel@tonic-gate * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 237c478bd9Sstevel@tonic-gate * copy of the source code appearing in this file ("Covered Code") an 247c478bd9Sstevel@tonic-gate * irrevocable, perpetual, worldwide license under Intel's copyrights in the 257c478bd9Sstevel@tonic-gate * base code distributed originally by Intel ("Original Intel Code") to copy, 267c478bd9Sstevel@tonic-gate * make derivatives, distribute, use and display any portion of the Covered 277c478bd9Sstevel@tonic-gate * Code in any form, with the right to sublicense such rights; and 287c478bd9Sstevel@tonic-gate * 297c478bd9Sstevel@tonic-gate * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 307c478bd9Sstevel@tonic-gate * license (with the right to sublicense), under only those claims of Intel 317c478bd9Sstevel@tonic-gate * patents that are infringed by the Original Intel Code, to make, use, sell, 327c478bd9Sstevel@tonic-gate * offer to sell, and import the Covered Code and derivative works thereof 337c478bd9Sstevel@tonic-gate * solely to the minimum extent necessary to exercise the above copyright 347c478bd9Sstevel@tonic-gate * license, and in no event shall the patent license extend to any additions 357c478bd9Sstevel@tonic-gate * to or modifications of the Original Intel Code. No other license or right 367c478bd9Sstevel@tonic-gate * is granted directly or by implication, estoppel or otherwise; 377c478bd9Sstevel@tonic-gate * 387c478bd9Sstevel@tonic-gate * The above copyright and patent license is granted only if the following 397c478bd9Sstevel@tonic-gate * conditions are met: 407c478bd9Sstevel@tonic-gate * 417c478bd9Sstevel@tonic-gate * 3. Conditions 427c478bd9Sstevel@tonic-gate * 437c478bd9Sstevel@tonic-gate * 3.1. Redistribution of Source with Rights to Further Distribute Source. 447c478bd9Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 457c478bd9Sstevel@tonic-gate * Code or modification with rights to further distribute source must include 467c478bd9Sstevel@tonic-gate * the above Copyright Notice, the above License, this list of Conditions, 477c478bd9Sstevel@tonic-gate * and the following Disclaimer and Export Compliance provision. In addition, 487c478bd9Sstevel@tonic-gate * Licensee must cause all Covered Code to which Licensee contributes to 497c478bd9Sstevel@tonic-gate * contain a file documenting the changes Licensee made to create that Covered 507c478bd9Sstevel@tonic-gate * Code and the date of any change. Licensee must include in that file the 517c478bd9Sstevel@tonic-gate * documentation of any changes made by any predecessor Licensee. Licensee 527c478bd9Sstevel@tonic-gate * must include a prominent statement that the modification is derived, 537c478bd9Sstevel@tonic-gate * directly or indirectly, from Original Intel Code. 547c478bd9Sstevel@tonic-gate * 557c478bd9Sstevel@tonic-gate * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 567c478bd9Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 577c478bd9Sstevel@tonic-gate * Code or modification without rights to further distribute source must 587c478bd9Sstevel@tonic-gate * include the following Disclaimer and Export Compliance provision in the 597c478bd9Sstevel@tonic-gate * documentation and/or other materials provided with distribution. In 607c478bd9Sstevel@tonic-gate * addition, Licensee may not authorize further sublicense of source of any 617c478bd9Sstevel@tonic-gate * portion of the Covered Code, and must include terms to the effect that the 627c478bd9Sstevel@tonic-gate * license from Licensee to its licensee is limited to the intellectual 637c478bd9Sstevel@tonic-gate * property embodied in the software Licensee provides to its licensee, and 647c478bd9Sstevel@tonic-gate * not to intellectual property embodied in modifications its licensee may 657c478bd9Sstevel@tonic-gate * make. 667c478bd9Sstevel@tonic-gate * 677c478bd9Sstevel@tonic-gate * 3.3. Redistribution of Executable. Redistribution in executable form of any 687c478bd9Sstevel@tonic-gate * substantial portion of the Covered Code or modification must reproduce the 697c478bd9Sstevel@tonic-gate * above Copyright Notice, and the following Disclaimer and Export Compliance 707c478bd9Sstevel@tonic-gate * provision in the documentation and/or other materials provided with the 717c478bd9Sstevel@tonic-gate * distribution. 727c478bd9Sstevel@tonic-gate * 737c478bd9Sstevel@tonic-gate * 3.4. Intel retains all right, title, and interest in and to the Original 747c478bd9Sstevel@tonic-gate * Intel Code. 757c478bd9Sstevel@tonic-gate * 767c478bd9Sstevel@tonic-gate * 3.5. Neither the name Intel nor any other trademark owned or controlled by 777c478bd9Sstevel@tonic-gate * Intel shall be used in advertising or otherwise to promote the sale, use or 787c478bd9Sstevel@tonic-gate * other dealings in products derived from or relating to the Covered Code 797c478bd9Sstevel@tonic-gate * without prior written authorization from Intel. 807c478bd9Sstevel@tonic-gate * 817c478bd9Sstevel@tonic-gate * 4. Disclaimer and Export Compliance 827c478bd9Sstevel@tonic-gate * 837c478bd9Sstevel@tonic-gate * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 847c478bd9Sstevel@tonic-gate * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 857c478bd9Sstevel@tonic-gate * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 867c478bd9Sstevel@tonic-gate * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 877c478bd9Sstevel@tonic-gate * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 887c478bd9Sstevel@tonic-gate * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 897c478bd9Sstevel@tonic-gate * PARTICULAR PURPOSE. 907c478bd9Sstevel@tonic-gate * 917c478bd9Sstevel@tonic-gate * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 927c478bd9Sstevel@tonic-gate * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 937c478bd9Sstevel@tonic-gate * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 947c478bd9Sstevel@tonic-gate * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 957c478bd9Sstevel@tonic-gate * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 967c478bd9Sstevel@tonic-gate * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 977c478bd9Sstevel@tonic-gate * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 987c478bd9Sstevel@tonic-gate * LIMITED REMEDY. 997c478bd9Sstevel@tonic-gate * 1007c478bd9Sstevel@tonic-gate * 4.3. Licensee shall not export, either directly or indirectly, any of this 1017c478bd9Sstevel@tonic-gate * software or system incorporating such software without first obtaining any 1027c478bd9Sstevel@tonic-gate * required license or other approval from the U. S. Department of Commerce or 1037c478bd9Sstevel@tonic-gate * any other agency or department of the United States Government. In the 1047c478bd9Sstevel@tonic-gate * event Licensee exports any such software from the United States or 1057c478bd9Sstevel@tonic-gate * re-exports any such software from a foreign destination, Licensee shall 1067c478bd9Sstevel@tonic-gate * ensure that the distribution and export/re-export of the software is in 1077c478bd9Sstevel@tonic-gate * compliance with all laws, regulations, orders, or other restrictions of the 1087c478bd9Sstevel@tonic-gate * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1097c478bd9Sstevel@tonic-gate * any of its subsidiaries will export/re-export any technical data, process, 1107c478bd9Sstevel@tonic-gate * software, or service, directly or indirectly, to any country for which the 1117c478bd9Sstevel@tonic-gate * United States government or any agency thereof requires an export license, 1127c478bd9Sstevel@tonic-gate * other governmental approval, or letter of assurance, without first obtaining 1137c478bd9Sstevel@tonic-gate * such license, approval or letter. 1147c478bd9Sstevel@tonic-gate * 1157c478bd9Sstevel@tonic-gate *****************************************************************************/ 1167c478bd9Sstevel@tonic-gate 1177c478bd9Sstevel@tonic-gate #ifndef __ACTYPES_H__ 1187c478bd9Sstevel@tonic-gate #define __ACTYPES_H__ 1197c478bd9Sstevel@tonic-gate 12027f7c583Smyers /* acpisrc:StructDefs -- for acpisrc conversion */ 12127f7c583Smyers 12230082d0cSmyers /* 12330082d0cSmyers * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header 124*db2bae30SDana Myers * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of 125*db2bae30SDana Myers * 12/2006. 12630082d0cSmyers */ 12730082d0cSmyers #ifndef ACPI_MACHINE_WIDTH 12830082d0cSmyers #error ACPI_MACHINE_WIDTH not defined 12930082d0cSmyers #endif 1307c478bd9Sstevel@tonic-gate 13130082d0cSmyers /*! [Begin] no source code translation */ 1327c478bd9Sstevel@tonic-gate 1337c478bd9Sstevel@tonic-gate /* 1347c478bd9Sstevel@tonic-gate * Data type ranges 1357c478bd9Sstevel@tonic-gate * Note: These macros are designed to be compiler independent as well as 1367c478bd9Sstevel@tonic-gate * working around problems that some 32-bit compilers have with 64-bit 1377c478bd9Sstevel@tonic-gate * constants. 1387c478bd9Sstevel@tonic-gate */ 1397c478bd9Sstevel@tonic-gate #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 1407c478bd9Sstevel@tonic-gate #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 1417c478bd9Sstevel@tonic-gate #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 1427c478bd9Sstevel@tonic-gate #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 1437c478bd9Sstevel@tonic-gate #define ACPI_ASCII_MAX 0x7F 1447c478bd9Sstevel@tonic-gate 1457c478bd9Sstevel@tonic-gate 1467c478bd9Sstevel@tonic-gate /* 14730082d0cSmyers * Architecture-specific ACPICA Subsystem Data Types 14830082d0cSmyers * 14930082d0cSmyers * The goal of these types is to provide source code portability across 15030082d0cSmyers * 16-bit, 32-bit, and 64-bit targets. 15130082d0cSmyers * 15230082d0cSmyers * 1) The following types are of fixed size for all targets (16/32/64): 15330082d0cSmyers * 15430082d0cSmyers * BOOLEAN Logical boolean 15530082d0cSmyers * 15630082d0cSmyers * UINT8 8-bit (1 byte) unsigned value 15730082d0cSmyers * UINT16 16-bit (2 byte) unsigned value 15830082d0cSmyers * UINT32 32-bit (4 byte) unsigned value 15930082d0cSmyers * UINT64 64-bit (8 byte) unsigned value 16030082d0cSmyers * 16130082d0cSmyers * INT16 16-bit (2 byte) signed value 16230082d0cSmyers * INT32 32-bit (4 byte) signed value 16330082d0cSmyers * INT64 64-bit (8 byte) signed value 16430082d0cSmyers * 16530082d0cSmyers * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 16630082d0cSmyers * compiler-dependent header(s) and were introduced because there is no common 16730082d0cSmyers * 64-bit integer type across the various compilation models, as shown in 16830082d0cSmyers * the table below. 16930082d0cSmyers * 17030082d0cSmyers * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 17130082d0cSmyers * char 8 8 8 8 8 8 17230082d0cSmyers * short 16 16 16 16 16 16 17330082d0cSmyers * _int32 32 17430082d0cSmyers * int 32 64 32 32 16 16 17530082d0cSmyers * long 64 64 32 32 32 32 17630082d0cSmyers * long long 64 64 17730082d0cSmyers * pointer 64 64 64 32 32 32 17830082d0cSmyers * 17930082d0cSmyers * Note: ILP64 and LP32 are currently not supported. 18030082d0cSmyers * 18130082d0cSmyers * 18230082d0cSmyers * 2) These types represent the native word size of the target mode of the 18330082d0cSmyers * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 18430082d0cSmyers * usually used for memory allocation, efficient loop counters, and array 18530082d0cSmyers * indexes. The types are similar to the size_t type in the C library and are 18630082d0cSmyers * required because there is no C type that consistently represents the native 187*db2bae30SDana Myers * data width. ACPI_SIZE is needed because there is no guarantee that a 188*db2bae30SDana Myers * kernel-level C library is present. 18930082d0cSmyers * 19030082d0cSmyers * ACPI_SIZE 16/32/64-bit unsigned value 19130082d0cSmyers * ACPI_NATIVE_INT 16/32/64-bit signed value 19230082d0cSmyers * 1937c478bd9Sstevel@tonic-gate */ 1947c478bd9Sstevel@tonic-gate 19530082d0cSmyers /******************************************************************************* 19630082d0cSmyers * 19730082d0cSmyers * Common types for all compilers, all targets 19830082d0cSmyers * 19930082d0cSmyers ******************************************************************************/ 2007c478bd9Sstevel@tonic-gate 20130082d0cSmyers typedef unsigned char BOOLEAN; 20230082d0cSmyers typedef unsigned char UINT8; 20330082d0cSmyers typedef unsigned short UINT16; 20430082d0cSmyers typedef COMPILER_DEPENDENT_UINT64 UINT64; 20530082d0cSmyers typedef COMPILER_DEPENDENT_INT64 INT64; 2067c478bd9Sstevel@tonic-gate 20730082d0cSmyers /*! [End] no source code translation !*/ 2087c478bd9Sstevel@tonic-gate 20930082d0cSmyers 21030082d0cSmyers /******************************************************************************* 21130082d0cSmyers * 21230082d0cSmyers * Types specific to 64-bit targets 21330082d0cSmyers * 21430082d0cSmyers ******************************************************************************/ 2157c478bd9Sstevel@tonic-gate 2167c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 2177c478bd9Sstevel@tonic-gate 21830082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 2197c478bd9Sstevel@tonic-gate 2207c478bd9Sstevel@tonic-gate typedef unsigned int UINT32; 22130082d0cSmyers typedef int INT32; 2227c478bd9Sstevel@tonic-gate 2237c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/ 2247c478bd9Sstevel@tonic-gate 22530082d0cSmyers 22630082d0cSmyers typedef INT64 ACPI_NATIVE_INT; 2277c478bd9Sstevel@tonic-gate 228*db2bae30SDana Myers typedef UINT64 ACPI_SIZE; 2297c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_IO_ADDRESS; 2307c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_PHYSICAL_ADDRESS; 2317c478bd9Sstevel@tonic-gate 2327c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR ACPI_UINT64_MAX 2337c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX ACPI_UINT64_MAX 2347c478bd9Sstevel@tonic-gate 23530082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 2367c478bd9Sstevel@tonic-gate 2377c478bd9Sstevel@tonic-gate /* 23830082d0cSmyers * In the case of the Itanium Processor Family (IPF), the hardware does not 23930082d0cSmyers * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 24030082d0cSmyers * to indicate that special precautions must be taken to avoid alignment faults. 24130082d0cSmyers * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 24230082d0cSmyers * 24330082d0cSmyers * Note: EM64T and other X86-64 processors support misaligned transfers, 24430082d0cSmyers * so there is no need to define this flag. 2457c478bd9Sstevel@tonic-gate */ 24630082d0cSmyers #if defined (__IA64__) || defined (__ia64__) 24730082d0cSmyers #define ACPI_MISALIGNMENT_NOT_SUPPORTED 24830082d0cSmyers #endif 2497c478bd9Sstevel@tonic-gate 2507c478bd9Sstevel@tonic-gate 25130082d0cSmyers /******************************************************************************* 25230082d0cSmyers * 25330082d0cSmyers * Types specific to 32-bit targets 25430082d0cSmyers * 25530082d0cSmyers ******************************************************************************/ 25630082d0cSmyers 25730082d0cSmyers #elif ACPI_MACHINE_WIDTH == 32 25830082d0cSmyers 25930082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 26030082d0cSmyers 26130082d0cSmyers typedef unsigned int UINT32; 26230082d0cSmyers typedef int INT32; 26330082d0cSmyers 26430082d0cSmyers /*! [End] no source code translation !*/ 26530082d0cSmyers 26630082d0cSmyers 26730082d0cSmyers typedef INT32 ACPI_NATIVE_INT; 26830082d0cSmyers 269*db2bae30SDana Myers typedef UINT32 ACPI_SIZE; 27030082d0cSmyers typedef UINT32 ACPI_IO_ADDRESS; 271*db2bae30SDana Myers typedef UINT32 ACPI_PHYSICAL_ADDRESS; 27230082d0cSmyers 27330082d0cSmyers #define ACPI_MAX_PTR ACPI_UINT32_MAX 27430082d0cSmyers #define ACPI_SIZE_MAX ACPI_UINT32_MAX 27530082d0cSmyers 27630082d0cSmyers #else 2777c478bd9Sstevel@tonic-gate 278*db2bae30SDana Myers /* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 2797c478bd9Sstevel@tonic-gate 28030082d0cSmyers #error unknown ACPI_MACHINE_WIDTH 28130082d0cSmyers #endif 2827c478bd9Sstevel@tonic-gate 2837c478bd9Sstevel@tonic-gate 28430082d0cSmyers /******************************************************************************* 28530082d0cSmyers * 28627f7c583Smyers * OS-dependent and compiler-dependent types 28730082d0cSmyers * 28827f7c583Smyers * If the defaults below are not appropriate for the host system, they can 28930082d0cSmyers * be defined in the compiler-specific or OS-specific header, and this will 29030082d0cSmyers * take precedence. 29130082d0cSmyers * 29230082d0cSmyers ******************************************************************************/ 29330082d0cSmyers 29430082d0cSmyers 29527f7c583Smyers /* Value returned by AcpiOsGetThreadId */ 29627f7c583Smyers 29727f7c583Smyers #ifndef ACPI_THREAD_ID 298*db2bae30SDana Myers #define ACPI_THREAD_ID ACPI_SIZE 2997c478bd9Sstevel@tonic-gate #endif 3007c478bd9Sstevel@tonic-gate 30127f7c583Smyers /* Object returned from AcpiOsCreateLock */ 30227f7c583Smyers 30327f7c583Smyers #ifndef ACPI_SPINLOCK 30427f7c583Smyers #define ACPI_SPINLOCK void * 30530082d0cSmyers #endif 3067c478bd9Sstevel@tonic-gate 30727f7c583Smyers /* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 30827f7c583Smyers 30930082d0cSmyers #ifndef ACPI_CPU_FLAGS 310*db2bae30SDana Myers #define ACPI_CPU_FLAGS ACPI_SIZE 31130082d0cSmyers #endif 31230082d0cSmyers 31327f7c583Smyers /* Object returned from AcpiOsCreateCache */ 31427f7c583Smyers 31527f7c583Smyers #ifndef ACPI_CACHE_T 31627f7c583Smyers #define ACPI_CACHE_T ACPI_MEMORY_LIST 31727f7c583Smyers #endif 31827f7c583Smyers 31927f7c583Smyers /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 32027f7c583Smyers 32127f7c583Smyers #ifndef ACPI_UINTPTR_T 32227f7c583Smyers #define ACPI_UINTPTR_T void * 32327f7c583Smyers #endif 32427f7c583Smyers 32530082d0cSmyers /* 32630082d0cSmyers * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 32730082d0cSmyers * some compilers can catch printf format string problems 32830082d0cSmyers */ 32930082d0cSmyers #ifndef ACPI_PRINTF_LIKE 33030082d0cSmyers #define ACPI_PRINTF_LIKE(c) 33130082d0cSmyers #endif 33230082d0cSmyers 33330082d0cSmyers /* 33430082d0cSmyers * Some compilers complain about unused variables. Sometimes we don't want to 33530082d0cSmyers * use all the variables (for example, _AcpiModuleName). This allows us 33630082d0cSmyers * to to tell the compiler in a per-variable manner that a variable 33730082d0cSmyers * is unused 33830082d0cSmyers */ 33930082d0cSmyers #ifndef ACPI_UNUSED_VAR 34030082d0cSmyers #define ACPI_UNUSED_VAR 34130082d0cSmyers #endif 34230082d0cSmyers 34327f7c583Smyers /* 34427f7c583Smyers * All ACPICA functions that are available to the rest of the kernel are 34527f7c583Smyers * tagged with this macro which can be defined as appropriate for the host. 34627f7c583Smyers */ 34727f7c583Smyers #ifndef ACPI_EXPORT_SYMBOL 34827f7c583Smyers #define ACPI_EXPORT_SYMBOL(Symbol) 34927f7c583Smyers #endif 35027f7c583Smyers 35130082d0cSmyers 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 /* 37630082d0cSmyers * Mescellaneous 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 3837c478bd9Sstevel@tonic-gate typedef struct uint64_struct 3847c478bd9Sstevel@tonic-gate { 38527f7c583Smyers UINT32 Lo; 38627f7c583Smyers UINT32 Hi; 3877c478bd9Sstevel@tonic-gate 3887c478bd9Sstevel@tonic-gate } UINT64_STRUCT; 3897c478bd9Sstevel@tonic-gate 3907c478bd9Sstevel@tonic-gate typedef union uint64_overlay 3917c478bd9Sstevel@tonic-gate { 39227f7c583Smyers UINT64 Full; 39327f7c583Smyers UINT64_STRUCT Part; 3947c478bd9Sstevel@tonic-gate 3957c478bd9Sstevel@tonic-gate } UINT64_OVERLAY; 3967c478bd9Sstevel@tonic-gate 3977c478bd9Sstevel@tonic-gate typedef struct uint32_struct 3987c478bd9Sstevel@tonic-gate { 39927f7c583Smyers UINT32 Lo; 40027f7c583Smyers UINT32 Hi; 4017c478bd9Sstevel@tonic-gate 4027c478bd9Sstevel@tonic-gate } UINT32_STRUCT; 4037c478bd9Sstevel@tonic-gate 4047c478bd9Sstevel@tonic-gate 40527f7c583Smyers /* Synchronization objects */ 40627f7c583Smyers 40727f7c583Smyers #define ACPI_MUTEX void * 40827f7c583Smyers #define ACPI_SEMAPHORE void * 40927f7c583Smyers 41027f7c583Smyers 4117c478bd9Sstevel@tonic-gate /* 412*db2bae30SDana Myers * Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI 413*db2bae30SDana Myers * version 2, integers are 64 bits. Note that this pertains to the ACPI integer 414*db2bae30SDana Myers * type only, not other integers used in the implementation of the ACPI CA 4157c478bd9Sstevel@tonic-gate * subsystem. 4167c478bd9Sstevel@tonic-gate */ 4177c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_INTEGER; 4187c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_MAX ACPI_UINT64_MAX 4197c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE 64 4207c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 4217c478bd9Sstevel@tonic-gate 4227c478bd9Sstevel@tonic-gate 4237c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 4247c478bd9Sstevel@tonic-gate #define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ 4257c478bd9Sstevel@tonic-gate #endif 4267c478bd9Sstevel@tonic-gate 4277c478bd9Sstevel@tonic-gate #define ACPI_MAX64_DECIMAL_DIGITS 20 4287c478bd9Sstevel@tonic-gate #define ACPI_MAX32_DECIMAL_DIGITS 10 4297c478bd9Sstevel@tonic-gate #define ACPI_MAX16_DECIMAL_DIGITS 5 4307c478bd9Sstevel@tonic-gate #define ACPI_MAX8_DECIMAL_DIGITS 3 4317c478bd9Sstevel@tonic-gate 4327c478bd9Sstevel@tonic-gate /* 4337c478bd9Sstevel@tonic-gate * Constants with special meanings 4347c478bd9Sstevel@tonic-gate */ 43530082d0cSmyers #define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 4367c478bd9Sstevel@tonic-gate 4377c478bd9Sstevel@tonic-gate 4387c478bd9Sstevel@tonic-gate /* 4397c478bd9Sstevel@tonic-gate * Initialization sequence 4407c478bd9Sstevel@tonic-gate */ 4417c478bd9Sstevel@tonic-gate #define ACPI_FULL_INITIALIZATION 0x00 4427c478bd9Sstevel@tonic-gate #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 4437c478bd9Sstevel@tonic-gate #define ACPI_NO_HARDWARE_INIT 0x02 4447c478bd9Sstevel@tonic-gate #define ACPI_NO_EVENT_INIT 0x04 4457c478bd9Sstevel@tonic-gate #define ACPI_NO_HANDLER_INIT 0x08 4467c478bd9Sstevel@tonic-gate #define ACPI_NO_ACPI_ENABLE 0x10 4477c478bd9Sstevel@tonic-gate #define ACPI_NO_DEVICE_INIT 0x20 4487c478bd9Sstevel@tonic-gate #define ACPI_NO_OBJECT_INIT 0x40 4497c478bd9Sstevel@tonic-gate 4507c478bd9Sstevel@tonic-gate /* 4517c478bd9Sstevel@tonic-gate * Initialization state 4527c478bd9Sstevel@tonic-gate */ 453*db2bae30SDana Myers #define ACPI_SUBSYSTEM_INITIALIZE 0x01 454*db2bae30SDana Myers #define ACPI_INITIALIZED_OK 0x02 4557c478bd9Sstevel@tonic-gate 4567c478bd9Sstevel@tonic-gate /* 4577c478bd9Sstevel@tonic-gate * Power state values 4587c478bd9Sstevel@tonic-gate */ 4597c478bd9Sstevel@tonic-gate #define ACPI_STATE_UNKNOWN (UINT8) 0xFF 4607c478bd9Sstevel@tonic-gate 4617c478bd9Sstevel@tonic-gate #define ACPI_STATE_S0 (UINT8) 0 4627c478bd9Sstevel@tonic-gate #define ACPI_STATE_S1 (UINT8) 1 4637c478bd9Sstevel@tonic-gate #define ACPI_STATE_S2 (UINT8) 2 4647c478bd9Sstevel@tonic-gate #define ACPI_STATE_S3 (UINT8) 3 4657c478bd9Sstevel@tonic-gate #define ACPI_STATE_S4 (UINT8) 4 4667c478bd9Sstevel@tonic-gate #define ACPI_STATE_S5 (UINT8) 5 4677c478bd9Sstevel@tonic-gate #define ACPI_S_STATES_MAX ACPI_STATE_S5 4687c478bd9Sstevel@tonic-gate #define ACPI_S_STATE_COUNT 6 4697c478bd9Sstevel@tonic-gate 4707c478bd9Sstevel@tonic-gate #define ACPI_STATE_D0 (UINT8) 0 4717c478bd9Sstevel@tonic-gate #define ACPI_STATE_D1 (UINT8) 1 4727c478bd9Sstevel@tonic-gate #define ACPI_STATE_D2 (UINT8) 2 4737c478bd9Sstevel@tonic-gate #define ACPI_STATE_D3 (UINT8) 3 4747c478bd9Sstevel@tonic-gate #define ACPI_D_STATES_MAX ACPI_STATE_D3 4757c478bd9Sstevel@tonic-gate #define ACPI_D_STATE_COUNT 4 4767c478bd9Sstevel@tonic-gate 4777c478bd9Sstevel@tonic-gate #define ACPI_STATE_C0 (UINT8) 0 4787c478bd9Sstevel@tonic-gate #define ACPI_STATE_C1 (UINT8) 1 4797c478bd9Sstevel@tonic-gate #define ACPI_STATE_C2 (UINT8) 2 4807c478bd9Sstevel@tonic-gate #define ACPI_STATE_C3 (UINT8) 3 4817c478bd9Sstevel@tonic-gate #define ACPI_C_STATES_MAX ACPI_STATE_C3 4827c478bd9Sstevel@tonic-gate #define ACPI_C_STATE_COUNT 4 4837c478bd9Sstevel@tonic-gate 4847c478bd9Sstevel@tonic-gate /* 4857c478bd9Sstevel@tonic-gate * Sleep type invalid value 4867c478bd9Sstevel@tonic-gate */ 4877c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_MAX 0x7 4887c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_INVALID 0xFF 4897c478bd9Sstevel@tonic-gate 4907c478bd9Sstevel@tonic-gate /* 4917c478bd9Sstevel@tonic-gate * Standard notify values 4927c478bd9Sstevel@tonic-gate */ 493*db2bae30SDana Myers #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 494*db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 495*db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 496*db2bae30SDana Myers #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 497*db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 498*db2bae30SDana Myers #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 499*db2bae30SDana Myers #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 500*db2bae30SDana Myers #define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 501*db2bae30SDana Myers #define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 502*db2bae30SDana Myers #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 503*db2bae30SDana Myers #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A 504*db2bae30SDana Myers #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B 505*db2bae30SDana Myers 506*db2bae30SDana Myers #define ACPI_NOTIFY_MAX 0x0B 5077c478bd9Sstevel@tonic-gate 5087c478bd9Sstevel@tonic-gate /* 5097c478bd9Sstevel@tonic-gate * Types associated with ACPI names and objects. The first group of 5107c478bd9Sstevel@tonic-gate * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 5117c478bd9Sstevel@tonic-gate * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 5127c478bd9Sstevel@tonic-gate * only add to the first group if the spec changes. 5137c478bd9Sstevel@tonic-gate * 5147c478bd9Sstevel@tonic-gate * NOTE: Types must be kept in sync with the global AcpiNsProperties 5157c478bd9Sstevel@tonic-gate * and AcpiNsTypeNames arrays. 5167c478bd9Sstevel@tonic-gate */ 5177c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_OBJECT_TYPE; 5187c478bd9Sstevel@tonic-gate 5197c478bd9Sstevel@tonic-gate #define ACPI_TYPE_ANY 0x00 5207c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 5217c478bd9Sstevel@tonic-gate #define ACPI_TYPE_STRING 0x02 5227c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER 0x03 5237c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 5247c478bd9Sstevel@tonic-gate #define ACPI_TYPE_FIELD_UNIT 0x05 5257c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 5267c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EVENT 0x07 5277c478bd9Sstevel@tonic-gate #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 5287c478bd9Sstevel@tonic-gate #define ACPI_TYPE_MUTEX 0x09 5297c478bd9Sstevel@tonic-gate #define ACPI_TYPE_REGION 0x0A 5307c478bd9Sstevel@tonic-gate #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 5317c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 5327c478bd9Sstevel@tonic-gate #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 5337c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER_FIELD 0x0E 5347c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DDB_HANDLE 0x0F 5357c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEBUG_OBJECT 0x10 5367c478bd9Sstevel@tonic-gate 5377c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EXTERNAL_MAX 0x10 5387c478bd9Sstevel@tonic-gate 5397c478bd9Sstevel@tonic-gate /* 5407c478bd9Sstevel@tonic-gate * These are object types that do not map directly to the ACPI 5417c478bd9Sstevel@tonic-gate * ObjectType() operator. They are used for various internal purposes only. 5427c478bd9Sstevel@tonic-gate * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 5437c478bd9Sstevel@tonic-gate * internal types must move upwards. (There is code that depends on these 5447c478bd9Sstevel@tonic-gate * values being contiguous with the external types above.) 5457c478bd9Sstevel@tonic-gate */ 5467c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 5477c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 5487c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 5497c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 5507c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ALIAS 0x15 5517c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 5527c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_NOTIFY 0x17 5537c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 5547c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE 0x19 5557c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 5567c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 5577c478bd9Sstevel@tonic-gate 5587c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 5597c478bd9Sstevel@tonic-gate 5607c478bd9Sstevel@tonic-gate /* 5617c478bd9Sstevel@tonic-gate * These are special object types that never appear in 5627c478bd9Sstevel@tonic-gate * a Namespace node, only in an ACPI_OPERAND_OBJECT 5637c478bd9Sstevel@tonic-gate */ 5647c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_EXTRA 0x1C 5657c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_DATA 0x1D 5667c478bd9Sstevel@tonic-gate 5677c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_MAX 0x1D 5687c478bd9Sstevel@tonic-gate 5697c478bd9Sstevel@tonic-gate /* All types above here are invalid */ 5707c478bd9Sstevel@tonic-gate 5717c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INVALID 0x1E 5727c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NOT_FOUND 0xFF 5737c478bd9Sstevel@tonic-gate 574*db2bae30SDana Myers #define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) 575*db2bae30SDana Myers 576*db2bae30SDana Myers 5777c478bd9Sstevel@tonic-gate /* 5787c478bd9Sstevel@tonic-gate * All I/O 5797c478bd9Sstevel@tonic-gate */ 5807c478bd9Sstevel@tonic-gate #define ACPI_READ 0 5817c478bd9Sstevel@tonic-gate #define ACPI_WRITE 1 5827c478bd9Sstevel@tonic-gate #define ACPI_IO_MASK 1 5837c478bd9Sstevel@tonic-gate 5847c478bd9Sstevel@tonic-gate /* 5857c478bd9Sstevel@tonic-gate * Event Types: Fixed & General Purpose 5867c478bd9Sstevel@tonic-gate */ 5877c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_TYPE; 5887c478bd9Sstevel@tonic-gate 5897c478bd9Sstevel@tonic-gate /* 5907c478bd9Sstevel@tonic-gate * Fixed events 5917c478bd9Sstevel@tonic-gate */ 5927c478bd9Sstevel@tonic-gate #define ACPI_EVENT_PMTIMER 0 5937c478bd9Sstevel@tonic-gate #define ACPI_EVENT_GLOBAL 1 5947c478bd9Sstevel@tonic-gate #define ACPI_EVENT_POWER_BUTTON 2 5957c478bd9Sstevel@tonic-gate #define ACPI_EVENT_SLEEP_BUTTON 3 5967c478bd9Sstevel@tonic-gate #define ACPI_EVENT_RTC 4 5977c478bd9Sstevel@tonic-gate #define ACPI_EVENT_MAX 4 5987c478bd9Sstevel@tonic-gate #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 5997c478bd9Sstevel@tonic-gate 6007c478bd9Sstevel@tonic-gate /* 6017c478bd9Sstevel@tonic-gate * Event Status - Per event 6027c478bd9Sstevel@tonic-gate * ------------- 6037c478bd9Sstevel@tonic-gate * The encoding of ACPI_EVENT_STATUS is illustrated below. 6047c478bd9Sstevel@tonic-gate * Note that a set bit (1) indicates the property is TRUE 6057c478bd9Sstevel@tonic-gate * (e.g. if bit 0 is set then the event is enabled). 6067c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 6077c478bd9Sstevel@tonic-gate * | Bits 31:3 |2|1|0| 6087c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 6097c478bd9Sstevel@tonic-gate * | | | | 6107c478bd9Sstevel@tonic-gate * | | | +- Enabled? 6117c478bd9Sstevel@tonic-gate * | | +--- Enabled for wake? 6127c478bd9Sstevel@tonic-gate * | +----- Set? 6137c478bd9Sstevel@tonic-gate * +----------- <Reserved> 6147c478bd9Sstevel@tonic-gate */ 6157c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_STATUS; 6167c478bd9Sstevel@tonic-gate 6177c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 6187c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 6197c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 6207c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 6217c478bd9Sstevel@tonic-gate 6227c478bd9Sstevel@tonic-gate /* 6237c478bd9Sstevel@tonic-gate * General Purpose Events (GPE) 6247c478bd9Sstevel@tonic-gate */ 6257c478bd9Sstevel@tonic-gate #define ACPI_GPE_INVALID 0xFF 6267c478bd9Sstevel@tonic-gate #define ACPI_GPE_MAX 0xFF 6277c478bd9Sstevel@tonic-gate #define ACPI_NUM_GPE 256 6287c478bd9Sstevel@tonic-gate 6297c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE 0 6307c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISABLE 1 6317c478bd9Sstevel@tonic-gate 6327c478bd9Sstevel@tonic-gate 6337c478bd9Sstevel@tonic-gate /* 6347c478bd9Sstevel@tonic-gate * GPE info flags - Per GPE 6357c478bd9Sstevel@tonic-gate * +-+-+-+---+---+-+ 6367c478bd9Sstevel@tonic-gate * |7|6|5|4:3|2:1|0| 6377c478bd9Sstevel@tonic-gate * +-+-+-+---+---+-+ 6387c478bd9Sstevel@tonic-gate * | | | | | | 6397c478bd9Sstevel@tonic-gate * | | | | | +--- Interrupt type: Edge or Level Triggered 6407c478bd9Sstevel@tonic-gate * | | | | +--- Type: Wake-only, Runtime-only, or wake/runtime 6417c478bd9Sstevel@tonic-gate * | | | +--- Type of dispatch -- to method, handler, or none 6427c478bd9Sstevel@tonic-gate * | | +--- Enabled for runtime? 6437c478bd9Sstevel@tonic-gate * | +--- Enabled for wake? 644*db2bae30SDana Myers * +--- Unused 6457c478bd9Sstevel@tonic-gate */ 6467c478bd9Sstevel@tonic-gate #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x01 6477c478bd9Sstevel@tonic-gate #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x01 6487c478bd9Sstevel@tonic-gate #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 6497c478bd9Sstevel@tonic-gate 6507c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_MASK (UINT8) 0x06 6517c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE_RUN (UINT8) 0x06 6527c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE (UINT8) 0x02 6537c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_RUNTIME (UINT8) 0x04 /* Default */ 6547c478bd9Sstevel@tonic-gate 6557c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x18 6567c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x08 6577c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x10 6587c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_NOT_USED (UINT8) 0x00 /* Default */ 6597c478bd9Sstevel@tonic-gate 6607c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLE_MASK (UINT8) 0x20 6617c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLED (UINT8) 0x20 6627c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_DISABLED (UINT8) 0x00 /* Default */ 6637c478bd9Sstevel@tonic-gate 6647c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLE_MASK (UINT8) 0x40 6657c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLED (UINT8) 0x40 6667c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_DISABLED (UINT8) 0x00 /* Default */ 6677c478bd9Sstevel@tonic-gate 6687c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE_MASK (UINT8) 0x60 /* Both run/wake */ 6697c478bd9Sstevel@tonic-gate 6707c478bd9Sstevel@tonic-gate /* 6717c478bd9Sstevel@tonic-gate * Flags for GPE and Lock interfaces 6727c478bd9Sstevel@tonic-gate */ 6737c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_ENABLE 0x2 /* AcpiGpeEnable */ 6747c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_DISABLE 0x2 /* AcpiGpeDisable */ 6757c478bd9Sstevel@tonic-gate 6767c478bd9Sstevel@tonic-gate #define ACPI_NOT_ISR 0x1 6777c478bd9Sstevel@tonic-gate #define ACPI_ISR 0x0 6787c478bd9Sstevel@tonic-gate 6797c478bd9Sstevel@tonic-gate 6807c478bd9Sstevel@tonic-gate /* Notify types */ 6817c478bd9Sstevel@tonic-gate 6827c478bd9Sstevel@tonic-gate #define ACPI_SYSTEM_NOTIFY 0x1 6837c478bd9Sstevel@tonic-gate #define ACPI_DEVICE_NOTIFY 0x2 684*db2bae30SDana Myers #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) 6857c478bd9Sstevel@tonic-gate #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 6867c478bd9Sstevel@tonic-gate 6877c478bd9Sstevel@tonic-gate #define ACPI_MAX_SYS_NOTIFY 0x7f 6887c478bd9Sstevel@tonic-gate 6897c478bd9Sstevel@tonic-gate 6907c478bd9Sstevel@tonic-gate /* Address Space (Operation Region) Types */ 6917c478bd9Sstevel@tonic-gate 6927c478bd9Sstevel@tonic-gate typedef UINT8 ACPI_ADR_SPACE_TYPE; 6937c478bd9Sstevel@tonic-gate 6947c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 6957c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 6967c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 6977c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 6987c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 6997c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 7007c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 7017c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7 7027c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127 7037c478bd9Sstevel@tonic-gate 7047c478bd9Sstevel@tonic-gate 7057c478bd9Sstevel@tonic-gate /* 7067c478bd9Sstevel@tonic-gate * BitRegister IDs 7077c478bd9Sstevel@tonic-gate * These are bitfields defined within the full ACPI registers 7087c478bd9Sstevel@tonic-gate */ 7097c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_STATUS 0x00 7107c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 7117c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 7127c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 7137c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 7147c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 7157c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_STATUS 0x06 7167c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 7177c478bd9Sstevel@tonic-gate 7187c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_ENABLE 0x08 7197c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 7207c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 7217c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 7227c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 7237c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_ENABLE 0x0D 7247c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0E 7257c478bd9Sstevel@tonic-gate 7267c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SCI_ENABLE 0x0F 7277c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_RLD 0x10 7287c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x11 7297c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_TYPE_A 0x12 7307c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_TYPE_B 0x13 7317c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_ENABLE 0x14 7327c478bd9Sstevel@tonic-gate 7337c478bd9Sstevel@tonic-gate #define ACPI_BITREG_ARB_DISABLE 0x15 7347c478bd9Sstevel@tonic-gate 7357c478bd9Sstevel@tonic-gate #define ACPI_BITREG_MAX 0x15 7367c478bd9Sstevel@tonic-gate #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 7377c478bd9Sstevel@tonic-gate 7387c478bd9Sstevel@tonic-gate 7397c478bd9Sstevel@tonic-gate /* 7407c478bd9Sstevel@tonic-gate * External ACPI object definition 7417c478bd9Sstevel@tonic-gate */ 742*db2bae30SDana Myers 743*db2bae30SDana Myers /* 744*db2bae30SDana Myers * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element 745*db2bae30SDana Myers * or an unresolved named reference. 746*db2bae30SDana Myers */ 7477c478bd9Sstevel@tonic-gate typedef union acpi_object 7487c478bd9Sstevel@tonic-gate { 74927f7c583Smyers ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 7507c478bd9Sstevel@tonic-gate struct 7517c478bd9Sstevel@tonic-gate { 752*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ 75327f7c583Smyers ACPI_INTEGER Value; /* The actual number */ 7547c478bd9Sstevel@tonic-gate } Integer; 7557c478bd9Sstevel@tonic-gate 7567c478bd9Sstevel@tonic-gate struct 7577c478bd9Sstevel@tonic-gate { 758*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ 75927f7c583Smyers UINT32 Length; /* # of bytes in string, excluding trailing null */ 76027f7c583Smyers char *Pointer; /* points to the string value */ 7617c478bd9Sstevel@tonic-gate } String; 7627c478bd9Sstevel@tonic-gate 7637c478bd9Sstevel@tonic-gate struct 7647c478bd9Sstevel@tonic-gate { 765*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ 76627f7c583Smyers UINT32 Length; /* # of bytes in buffer */ 76727f7c583Smyers UINT8 *Pointer; /* points to the buffer */ 7687c478bd9Sstevel@tonic-gate } Buffer; 7697c478bd9Sstevel@tonic-gate 7707c478bd9Sstevel@tonic-gate struct 7717c478bd9Sstevel@tonic-gate { 772*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ 77327f7c583Smyers UINT32 Count; /* # of elements in package */ 77427f7c583Smyers union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 7757c478bd9Sstevel@tonic-gate } Package; 7767c478bd9Sstevel@tonic-gate 7777c478bd9Sstevel@tonic-gate struct 7787c478bd9Sstevel@tonic-gate { 779*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ 780*db2bae30SDana Myers ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ 781*db2bae30SDana Myers ACPI_HANDLE Handle; /* object reference */ 782*db2bae30SDana Myers } Reference; 783*db2bae30SDana Myers 784*db2bae30SDana Myers struct 785*db2bae30SDana Myers { 786*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ 78727f7c583Smyers UINT32 ProcId; 78827f7c583Smyers ACPI_IO_ADDRESS PblkAddress; 78927f7c583Smyers UINT32 PblkLength; 7907c478bd9Sstevel@tonic-gate } Processor; 7917c478bd9Sstevel@tonic-gate 7927c478bd9Sstevel@tonic-gate struct 7937c478bd9Sstevel@tonic-gate { 794*db2bae30SDana Myers ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ 79527f7c583Smyers UINT32 SystemLevel; 79627f7c583Smyers UINT32 ResourceOrder; 7977c478bd9Sstevel@tonic-gate } PowerResource; 7987c478bd9Sstevel@tonic-gate 7997c478bd9Sstevel@tonic-gate } ACPI_OBJECT; 8007c478bd9Sstevel@tonic-gate 8017c478bd9Sstevel@tonic-gate 8027c478bd9Sstevel@tonic-gate /* 8037c478bd9Sstevel@tonic-gate * List of objects, used as a parameter list for control method evaluation 8047c478bd9Sstevel@tonic-gate */ 8057c478bd9Sstevel@tonic-gate typedef struct acpi_object_list 8067c478bd9Sstevel@tonic-gate { 80727f7c583Smyers UINT32 Count; 80827f7c583Smyers ACPI_OBJECT *Pointer; 8097c478bd9Sstevel@tonic-gate 8107c478bd9Sstevel@tonic-gate } ACPI_OBJECT_LIST; 8117c478bd9Sstevel@tonic-gate 8127c478bd9Sstevel@tonic-gate 8137c478bd9Sstevel@tonic-gate /* 8147c478bd9Sstevel@tonic-gate * Miscellaneous common Data Structures used by the interfaces 8157c478bd9Sstevel@tonic-gate */ 8167c478bd9Sstevel@tonic-gate #define ACPI_NO_BUFFER 0 8177c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) 8187c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) 8197c478bd9Sstevel@tonic-gate 8207c478bd9Sstevel@tonic-gate typedef struct acpi_buffer 8217c478bd9Sstevel@tonic-gate { 82227f7c583Smyers ACPI_SIZE Length; /* Length in bytes of the buffer */ 82327f7c583Smyers void *Pointer; /* pointer to buffer */ 8247c478bd9Sstevel@tonic-gate 8257c478bd9Sstevel@tonic-gate } ACPI_BUFFER; 8267c478bd9Sstevel@tonic-gate 8277c478bd9Sstevel@tonic-gate 8287c478bd9Sstevel@tonic-gate /* 8297c478bd9Sstevel@tonic-gate * NameType for AcpiGetName 8307c478bd9Sstevel@tonic-gate */ 8317c478bd9Sstevel@tonic-gate #define ACPI_FULL_PATHNAME 0 8327c478bd9Sstevel@tonic-gate #define ACPI_SINGLE_NAME 1 8337c478bd9Sstevel@tonic-gate #define ACPI_NAME_TYPE_MAX 1 8347c478bd9Sstevel@tonic-gate 8357c478bd9Sstevel@tonic-gate 8367c478bd9Sstevel@tonic-gate /* 8377c478bd9Sstevel@tonic-gate * Structure and flags for AcpiGetSystemInfo 8387c478bd9Sstevel@tonic-gate */ 8397c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_UNKNOWN 0x0000 8407c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_ACPI 0x0001 8417c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_LEGACY 0x0002 8427c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODES_MASK 0x0003 8437c478bd9Sstevel@tonic-gate 8447c478bd9Sstevel@tonic-gate 8457c478bd9Sstevel@tonic-gate /* 8467c478bd9Sstevel@tonic-gate * System info returned by AcpiGetSystemInfo() 8477c478bd9Sstevel@tonic-gate */ 8487c478bd9Sstevel@tonic-gate typedef struct acpi_system_info 8497c478bd9Sstevel@tonic-gate { 85027f7c583Smyers UINT32 AcpiCaVersion; 85127f7c583Smyers UINT32 Flags; 85227f7c583Smyers UINT32 TimerResolution; 85327f7c583Smyers UINT32 Reserved1; 85427f7c583Smyers UINT32 Reserved2; 85527f7c583Smyers UINT32 DebugLevel; 85627f7c583Smyers UINT32 DebugLayer; 8577c478bd9Sstevel@tonic-gate 8587c478bd9Sstevel@tonic-gate } ACPI_SYSTEM_INFO; 8597c478bd9Sstevel@tonic-gate 8607c478bd9Sstevel@tonic-gate 861*db2bae30SDana Myers /* 862*db2bae30SDana Myers * System statistecs returned by AcpiGetStatistics() 863*db2bae30SDana Myers */ 864*db2bae30SDana Myers typedef struct acpi_statistics 865*db2bae30SDana Myers { 866*db2bae30SDana Myers UINT32 SciCount; 867*db2bae30SDana Myers UINT32 GpeCount; 868*db2bae30SDana Myers UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; 869*db2bae30SDana Myers UINT32 MethodCount; 870*db2bae30SDana Myers 871*db2bae30SDana Myers } ACPI_STATISTICS; 872*db2bae30SDana Myers 873*db2bae30SDana Myers 874*db2bae30SDana Myers /* Table Event Types */ 875*db2bae30SDana Myers 876*db2bae30SDana Myers #define ACPI_TABLE_EVENT_LOAD 0x0 877*db2bae30SDana Myers #define ACPI_TABLE_EVENT_UNLOAD 0x1 878*db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 879*db2bae30SDana Myers 880*db2bae30SDana Myers 8817c478bd9Sstevel@tonic-gate /* 8827c478bd9Sstevel@tonic-gate * Types specific to the OS service interfaces 8837c478bd9Sstevel@tonic-gate */ 8847c478bd9Sstevel@tonic-gate typedef UINT32 8857c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 88627f7c583Smyers void *Context); 8877c478bd9Sstevel@tonic-gate 8887c478bd9Sstevel@tonic-gate typedef void 8897c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 89027f7c583Smyers void *Context); 8917c478bd9Sstevel@tonic-gate 8927c478bd9Sstevel@tonic-gate /* 8937c478bd9Sstevel@tonic-gate * Various handlers and callback procedures 8947c478bd9Sstevel@tonic-gate */ 8957c478bd9Sstevel@tonic-gate typedef 8967c478bd9Sstevel@tonic-gate UINT32 (*ACPI_EVENT_HANDLER) ( 89727f7c583Smyers void *Context); 8987c478bd9Sstevel@tonic-gate 8997c478bd9Sstevel@tonic-gate typedef 9007c478bd9Sstevel@tonic-gate void (*ACPI_NOTIFY_HANDLER) ( 90127f7c583Smyers ACPI_HANDLE Device, 90227f7c583Smyers UINT32 Value, 90327f7c583Smyers void *Context); 9047c478bd9Sstevel@tonic-gate 9057c478bd9Sstevel@tonic-gate typedef 9067c478bd9Sstevel@tonic-gate void (*ACPI_OBJECT_HANDLER) ( 90727f7c583Smyers ACPI_HANDLE Object, 90827f7c583Smyers UINT32 Function, 90927f7c583Smyers void *Data); 9107c478bd9Sstevel@tonic-gate 9117c478bd9Sstevel@tonic-gate typedef 9127c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_INIT_HANDLER) ( 91327f7c583Smyers ACPI_HANDLE Object, 91427f7c583Smyers UINT32 Function); 9157c478bd9Sstevel@tonic-gate 9167c478bd9Sstevel@tonic-gate #define ACPI_INIT_DEVICE_INI 1 9177c478bd9Sstevel@tonic-gate 9187c478bd9Sstevel@tonic-gate typedef 9197c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 92027f7c583Smyers ACPI_STATUS AmlStatus, 92127f7c583Smyers ACPI_NAME Name, 92227f7c583Smyers UINT16 Opcode, 92327f7c583Smyers UINT32 AmlOffset, 92427f7c583Smyers void *Context); 9257c478bd9Sstevel@tonic-gate 926*db2bae30SDana Myers /* Table Event handler (Load, LoadTable etc) and types */ 927*db2bae30SDana Myers 928*db2bae30SDana Myers typedef 929*db2bae30SDana Myers ACPI_STATUS (*ACPI_TABLE_HANDLER) ( 930*db2bae30SDana Myers UINT32 Event, 931*db2bae30SDana Myers void *Table, 932*db2bae30SDana Myers void *Context); 933*db2bae30SDana Myers 934*db2bae30SDana Myers #define ACPI_TABLE_LOAD 0x0 935*db2bae30SDana Myers #define ACPI_TABLE_UNLOAD 0x1 936*db2bae30SDana Myers #define ACPI_NUM_TABLE_EVENTS 2 937*db2bae30SDana Myers 9387c478bd9Sstevel@tonic-gate 9397c478bd9Sstevel@tonic-gate /* Address Spaces (For Operation Regions) */ 9407c478bd9Sstevel@tonic-gate 9417c478bd9Sstevel@tonic-gate typedef 9427c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 94327f7c583Smyers UINT32 Function, 94427f7c583Smyers ACPI_PHYSICAL_ADDRESS Address, 94527f7c583Smyers UINT32 BitWidth, 94627f7c583Smyers ACPI_INTEGER *Value, 94727f7c583Smyers void *HandlerContext, 94827f7c583Smyers void *RegionContext); 9497c478bd9Sstevel@tonic-gate 95027f7c583Smyers #define ACPI_DEFAULT_HANDLER NULL 9517c478bd9Sstevel@tonic-gate 9527c478bd9Sstevel@tonic-gate 9537c478bd9Sstevel@tonic-gate typedef 9547c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 95527f7c583Smyers ACPI_HANDLE RegionHandle, 95627f7c583Smyers UINT32 Function, 95727f7c583Smyers void *HandlerContext, 95827f7c583Smyers void **RegionContext); 9597c478bd9Sstevel@tonic-gate 9607c478bd9Sstevel@tonic-gate #define ACPI_REGION_ACTIVATE 0 9617c478bd9Sstevel@tonic-gate #define ACPI_REGION_DEACTIVATE 1 9627c478bd9Sstevel@tonic-gate 9637c478bd9Sstevel@tonic-gate typedef 9647c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_WALK_CALLBACK) ( 96527f7c583Smyers ACPI_HANDLE ObjHandle, 96627f7c583Smyers UINT32 NestingLevel, 96727f7c583Smyers void *Context, 96827f7c583Smyers void **ReturnValue); 9697c478bd9Sstevel@tonic-gate 9707c478bd9Sstevel@tonic-gate 9717c478bd9Sstevel@tonic-gate /* Interrupt handler return values */ 9727c478bd9Sstevel@tonic-gate 9737c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_NOT_HANDLED 0x00 9747c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_HANDLED 0x01 9757c478bd9Sstevel@tonic-gate 9767c478bd9Sstevel@tonic-gate 9777c478bd9Sstevel@tonic-gate /* Common string version of device HIDs and UIDs */ 9787c478bd9Sstevel@tonic-gate 9797c478bd9Sstevel@tonic-gate typedef struct acpi_device_id 9807c478bd9Sstevel@tonic-gate { 98127f7c583Smyers char Value[ACPI_DEVICE_ID_LENGTH]; 9827c478bd9Sstevel@tonic-gate 9837c478bd9Sstevel@tonic-gate } ACPI_DEVICE_ID; 9847c478bd9Sstevel@tonic-gate 9857c478bd9Sstevel@tonic-gate /* Common string version of device CIDs */ 9867c478bd9Sstevel@tonic-gate 9877c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id 9887c478bd9Sstevel@tonic-gate { 98927f7c583Smyers char Value[ACPI_MAX_CID_LENGTH]; 9907c478bd9Sstevel@tonic-gate 9917c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID; 9927c478bd9Sstevel@tonic-gate 9937c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id_list 9947c478bd9Sstevel@tonic-gate { 99527f7c583Smyers UINT32 Count; 99627f7c583Smyers UINT32 Size; 99727f7c583Smyers ACPI_COMPATIBLE_ID Id[1]; 9987c478bd9Sstevel@tonic-gate 9997c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID_LIST; 10007c478bd9Sstevel@tonic-gate 10017c478bd9Sstevel@tonic-gate 10027c478bd9Sstevel@tonic-gate /* Structure and flags for AcpiGetObjectInfo */ 10037c478bd9Sstevel@tonic-gate 10047c478bd9Sstevel@tonic-gate #define ACPI_VALID_STA 0x0001 10057c478bd9Sstevel@tonic-gate #define ACPI_VALID_ADR 0x0002 10067c478bd9Sstevel@tonic-gate #define ACPI_VALID_HID 0x0004 10077c478bd9Sstevel@tonic-gate #define ACPI_VALID_UID 0x0008 10087c478bd9Sstevel@tonic-gate #define ACPI_VALID_CID 0x0010 10097c478bd9Sstevel@tonic-gate #define ACPI_VALID_SXDS 0x0020 10107c478bd9Sstevel@tonic-gate 101130082d0cSmyers /* Flags for _STA method */ 101230082d0cSmyers 101330082d0cSmyers #define ACPI_STA_DEVICE_PRESENT 0x01 101430082d0cSmyers #define ACPI_STA_DEVICE_ENABLED 0x02 101530082d0cSmyers #define ACPI_STA_DEVICE_UI 0x04 101627f7c583Smyers #define ACPI_STA_DEVICE_FUNCTIONING 0x08 101727f7c583Smyers #define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 101830082d0cSmyers #define ACPI_STA_BATTERY_PRESENT 0x10 101930082d0cSmyers 10207c478bd9Sstevel@tonic-gate 10217c478bd9Sstevel@tonic-gate #define ACPI_COMMON_OBJ_INFO \ 102227f7c583Smyers ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ 102327f7c583Smyers ACPI_NAME Name /* ACPI object Name */ 10247c478bd9Sstevel@tonic-gate 10257c478bd9Sstevel@tonic-gate 10267c478bd9Sstevel@tonic-gate typedef struct acpi_obj_info_header 10277c478bd9Sstevel@tonic-gate { 10287c478bd9Sstevel@tonic-gate ACPI_COMMON_OBJ_INFO; 10297c478bd9Sstevel@tonic-gate 10307c478bd9Sstevel@tonic-gate } ACPI_OBJ_INFO_HEADER; 10317c478bd9Sstevel@tonic-gate 10327c478bd9Sstevel@tonic-gate 10337c478bd9Sstevel@tonic-gate /* Structure returned from Get Object Info */ 10347c478bd9Sstevel@tonic-gate 10357c478bd9Sstevel@tonic-gate typedef struct acpi_device_info 10367c478bd9Sstevel@tonic-gate { 10377c478bd9Sstevel@tonic-gate ACPI_COMMON_OBJ_INFO; 10387c478bd9Sstevel@tonic-gate 1039*db2bae30SDana Myers UINT32 ParamCount; /* If a method, required parameter count */ 104027f7c583Smyers UINT32 Valid; /* Indicates which fields below are valid */ 104127f7c583Smyers UINT32 CurrentStatus; /* _STA value */ 104227f7c583Smyers ACPI_INTEGER Address; /* _ADR value if any */ 104327f7c583Smyers ACPI_DEVICE_ID HardwareId; /* _HID value if any */ 104427f7c583Smyers ACPI_DEVICE_ID UniqueId; /* _UID value if any */ 104527f7c583Smyers UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 104627f7c583Smyers ACPI_COMPATIBLE_ID_LIST CompatibilityId; /* List of _CIDs if any */ 10477c478bd9Sstevel@tonic-gate 10487c478bd9Sstevel@tonic-gate } ACPI_DEVICE_INFO; 10497c478bd9Sstevel@tonic-gate 10507c478bd9Sstevel@tonic-gate 10517c478bd9Sstevel@tonic-gate /* Context structs for address space handlers */ 10527c478bd9Sstevel@tonic-gate 10537c478bd9Sstevel@tonic-gate typedef struct acpi_pci_id 10547c478bd9Sstevel@tonic-gate { 105527f7c583Smyers UINT16 Segment; 105627f7c583Smyers UINT16 Bus; 105727f7c583Smyers UINT16 Device; 105827f7c583Smyers UINT16 Function; 10597c478bd9Sstevel@tonic-gate 10607c478bd9Sstevel@tonic-gate } ACPI_PCI_ID; 10617c478bd9Sstevel@tonic-gate 10627c478bd9Sstevel@tonic-gate 10637c478bd9Sstevel@tonic-gate typedef struct acpi_mem_space_context 10647c478bd9Sstevel@tonic-gate { 106527f7c583Smyers UINT32 Length; 106627f7c583Smyers ACPI_PHYSICAL_ADDRESS Address; 106727f7c583Smyers ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 106827f7c583Smyers UINT8 *MappedLogicalAddress; 106927f7c583Smyers ACPI_SIZE MappedLength; 10707c478bd9Sstevel@tonic-gate 10717c478bd9Sstevel@tonic-gate } ACPI_MEM_SPACE_CONTEXT; 10727c478bd9Sstevel@tonic-gate 10737c478bd9Sstevel@tonic-gate 10747c478bd9Sstevel@tonic-gate /* 10757c478bd9Sstevel@tonic-gate * Definitions for Resource Attributes 10767c478bd9Sstevel@tonic-gate */ 107730082d0cSmyers typedef UINT16 ACPI_RS_LENGTH; /* Resource Length field is fixed at 16 bits */ 107830082d0cSmyers typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ 10797c478bd9Sstevel@tonic-gate 10807c478bd9Sstevel@tonic-gate /* 10817c478bd9Sstevel@tonic-gate * Memory Attributes 10827c478bd9Sstevel@tonic-gate */ 10837c478bd9Sstevel@tonic-gate #define ACPI_READ_ONLY_MEMORY (UINT8) 0x00 10847c478bd9Sstevel@tonic-gate #define ACPI_READ_WRITE_MEMORY (UINT8) 0x01 10857c478bd9Sstevel@tonic-gate 10867c478bd9Sstevel@tonic-gate #define ACPI_NON_CACHEABLE_MEMORY (UINT8) 0x00 10877c478bd9Sstevel@tonic-gate #define ACPI_CACHABLE_MEMORY (UINT8) 0x01 10887c478bd9Sstevel@tonic-gate #define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02 10897c478bd9Sstevel@tonic-gate #define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03 10907c478bd9Sstevel@tonic-gate 10917c478bd9Sstevel@tonic-gate /* 10927c478bd9Sstevel@tonic-gate * IO Attributes 10937c478bd9Sstevel@tonic-gate * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. 10947c478bd9Sstevel@tonic-gate * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. 10957c478bd9Sstevel@tonic-gate */ 10967c478bd9Sstevel@tonic-gate #define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01 10977c478bd9Sstevel@tonic-gate #define ACPI_ISA_ONLY_RANGES (UINT8) 0x02 10987c478bd9Sstevel@tonic-gate #define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) 10997c478bd9Sstevel@tonic-gate 110030082d0cSmyers /* Type of translation - 1=Sparse, 0=Dense */ 110130082d0cSmyers 110230082d0cSmyers #define ACPI_SPARSE_TRANSLATION (UINT8) 0x01 11037c478bd9Sstevel@tonic-gate 11047c478bd9Sstevel@tonic-gate /* 11057c478bd9Sstevel@tonic-gate * IO Port Descriptor Decode 11067c478bd9Sstevel@tonic-gate */ 11077c478bd9Sstevel@tonic-gate #define ACPI_DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ 11087c478bd9Sstevel@tonic-gate #define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ 11097c478bd9Sstevel@tonic-gate 11107c478bd9Sstevel@tonic-gate /* 11117c478bd9Sstevel@tonic-gate * IRQ Attributes 11127c478bd9Sstevel@tonic-gate */ 111330082d0cSmyers #define ACPI_LEVEL_SENSITIVE (UINT8) 0x00 111430082d0cSmyers #define ACPI_EDGE_SENSITIVE (UINT8) 0x01 11157c478bd9Sstevel@tonic-gate 11167c478bd9Sstevel@tonic-gate #define ACPI_ACTIVE_HIGH (UINT8) 0x00 11177c478bd9Sstevel@tonic-gate #define ACPI_ACTIVE_LOW (UINT8) 0x01 11187c478bd9Sstevel@tonic-gate 11197c478bd9Sstevel@tonic-gate #define ACPI_EXCLUSIVE (UINT8) 0x00 11207c478bd9Sstevel@tonic-gate #define ACPI_SHARED (UINT8) 0x01 11217c478bd9Sstevel@tonic-gate 11227c478bd9Sstevel@tonic-gate /* 11237c478bd9Sstevel@tonic-gate * DMA Attributes 11247c478bd9Sstevel@tonic-gate */ 11257c478bd9Sstevel@tonic-gate #define ACPI_COMPATIBILITY (UINT8) 0x00 11267c478bd9Sstevel@tonic-gate #define ACPI_TYPE_A (UINT8) 0x01 11277c478bd9Sstevel@tonic-gate #define ACPI_TYPE_B (UINT8) 0x02 11287c478bd9Sstevel@tonic-gate #define ACPI_TYPE_F (UINT8) 0x03 11297c478bd9Sstevel@tonic-gate 11307c478bd9Sstevel@tonic-gate #define ACPI_NOT_BUS_MASTER (UINT8) 0x00 11317c478bd9Sstevel@tonic-gate #define ACPI_BUS_MASTER (UINT8) 0x01 11327c478bd9Sstevel@tonic-gate 11337c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_8 (UINT8) 0x00 11347c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_8_16 (UINT8) 0x01 11357c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_16 (UINT8) 0x02 11367c478bd9Sstevel@tonic-gate 11377c478bd9Sstevel@tonic-gate /* 11387c478bd9Sstevel@tonic-gate * Start Dependent Functions Priority definitions 11397c478bd9Sstevel@tonic-gate */ 11407c478bd9Sstevel@tonic-gate #define ACPI_GOOD_CONFIGURATION (UINT8) 0x00 11417c478bd9Sstevel@tonic-gate #define ACPI_ACCEPTABLE_CONFIGURATION (UINT8) 0x01 11427c478bd9Sstevel@tonic-gate #define ACPI_SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 11437c478bd9Sstevel@tonic-gate 11447c478bd9Sstevel@tonic-gate /* 11457c478bd9Sstevel@tonic-gate * 16, 32 and 64-bit Address Descriptor resource types 11467c478bd9Sstevel@tonic-gate */ 11477c478bd9Sstevel@tonic-gate #define ACPI_MEMORY_RANGE (UINT8) 0x00 11487c478bd9Sstevel@tonic-gate #define ACPI_IO_RANGE (UINT8) 0x01 11497c478bd9Sstevel@tonic-gate #define ACPI_BUS_NUMBER_RANGE (UINT8) 0x02 11507c478bd9Sstevel@tonic-gate 11517c478bd9Sstevel@tonic-gate #define ACPI_ADDRESS_NOT_FIXED (UINT8) 0x00 11527c478bd9Sstevel@tonic-gate #define ACPI_ADDRESS_FIXED (UINT8) 0x01 11537c478bd9Sstevel@tonic-gate 11547c478bd9Sstevel@tonic-gate #define ACPI_POS_DECODE (UINT8) 0x00 11557c478bd9Sstevel@tonic-gate #define ACPI_SUB_DECODE (UINT8) 0x01 11567c478bd9Sstevel@tonic-gate 11577c478bd9Sstevel@tonic-gate #define ACPI_PRODUCER (UINT8) 0x00 11587c478bd9Sstevel@tonic-gate #define ACPI_CONSUMER (UINT8) 0x01 11597c478bd9Sstevel@tonic-gate 11607c478bd9Sstevel@tonic-gate 116130082d0cSmyers /* 116230082d0cSmyers * If possible, pack the following structures to byte alignment 116330082d0cSmyers */ 116430082d0cSmyers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 116530082d0cSmyers #pragma pack(1) 116630082d0cSmyers #endif 116730082d0cSmyers 116830082d0cSmyers /* UUID data structures for use in vendor-defined resource descriptors */ 116930082d0cSmyers 117030082d0cSmyers typedef struct acpi_uuid 117130082d0cSmyers { 117227f7c583Smyers UINT8 Data[ACPI_UUID_LENGTH]; 117330082d0cSmyers } ACPI_UUID; 117430082d0cSmyers 117530082d0cSmyers typedef struct acpi_vendor_uuid 117630082d0cSmyers { 117727f7c583Smyers UINT8 Subtype; 117827f7c583Smyers UINT8 Data[ACPI_UUID_LENGTH]; 117930082d0cSmyers 118030082d0cSmyers } ACPI_VENDOR_UUID; 118130082d0cSmyers 11827c478bd9Sstevel@tonic-gate /* 11837c478bd9Sstevel@tonic-gate * Structures used to describe device resources 11847c478bd9Sstevel@tonic-gate */ 11857c478bd9Sstevel@tonic-gate typedef struct acpi_resource_irq 11867c478bd9Sstevel@tonic-gate { 1187*db2bae30SDana Myers UINT8 DescriptorLength; 118827f7c583Smyers UINT8 Triggering; 118927f7c583Smyers UINT8 Polarity; 119027f7c583Smyers UINT8 Sharable; 119127f7c583Smyers UINT8 InterruptCount; 119227f7c583Smyers UINT8 Interrupts[1]; 11937c478bd9Sstevel@tonic-gate 11947c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_IRQ; 11957c478bd9Sstevel@tonic-gate 11967c478bd9Sstevel@tonic-gate typedef struct ACPI_RESOURCE_DMA 11977c478bd9Sstevel@tonic-gate { 119827f7c583Smyers UINT8 Type; 119927f7c583Smyers UINT8 BusMaster; 120027f7c583Smyers UINT8 Transfer; 120127f7c583Smyers UINT8 ChannelCount; 120227f7c583Smyers UINT8 Channels[1]; 12037c478bd9Sstevel@tonic-gate 12047c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_DMA; 12057c478bd9Sstevel@tonic-gate 1206186507a7Smyers typedef struct acpi_resource_start_dependent 12077c478bd9Sstevel@tonic-gate { 1208*db2bae30SDana Myers UINT8 DescriptorLength; 120927f7c583Smyers UINT8 CompatibilityPriority; 121027f7c583Smyers UINT8 PerformanceRobustness; 12117c478bd9Sstevel@tonic-gate 1212186507a7Smyers } ACPI_RESOURCE_START_DEPENDENT; 1213186507a7Smyers 12147c478bd9Sstevel@tonic-gate 12157c478bd9Sstevel@tonic-gate /* 12167c478bd9Sstevel@tonic-gate * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not 12177c478bd9Sstevel@tonic-gate * needed because it has no fields 12187c478bd9Sstevel@tonic-gate */ 12197c478bd9Sstevel@tonic-gate 1220186507a7Smyers 12217c478bd9Sstevel@tonic-gate typedef struct acpi_resource_io 12227c478bd9Sstevel@tonic-gate { 122327f7c583Smyers UINT8 IoDecode; 122427f7c583Smyers UINT8 Alignment; 122527f7c583Smyers UINT8 AddressLength; 122627f7c583Smyers UINT16 Minimum; 122727f7c583Smyers UINT16 Maximum; 12287c478bd9Sstevel@tonic-gate 12297c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_IO; 12307c478bd9Sstevel@tonic-gate 12317c478bd9Sstevel@tonic-gate typedef struct acpi_resource_fixed_io 12327c478bd9Sstevel@tonic-gate { 123327f7c583Smyers UINT16 Address; 123427f7c583Smyers UINT8 AddressLength; 12357c478bd9Sstevel@tonic-gate 12367c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_FIXED_IO; 12377c478bd9Sstevel@tonic-gate 12387c478bd9Sstevel@tonic-gate typedef struct acpi_resource_vendor 12397c478bd9Sstevel@tonic-gate { 124027f7c583Smyers UINT16 ByteLength; 124127f7c583Smyers UINT8 ByteData[1]; 12427c478bd9Sstevel@tonic-gate 12437c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_VENDOR; 12447c478bd9Sstevel@tonic-gate 124530082d0cSmyers /* Vendor resource with UUID info (introduced in ACPI 3.0) */ 124630082d0cSmyers 124730082d0cSmyers typedef struct acpi_resource_vendor_typed 124830082d0cSmyers { 124927f7c583Smyers UINT16 ByteLength; 125027f7c583Smyers UINT8 UuidSubtype; 125127f7c583Smyers UINT8 Uuid[ACPI_UUID_LENGTH]; 125227f7c583Smyers UINT8 ByteData[1]; 125330082d0cSmyers 125430082d0cSmyers } ACPI_RESOURCE_VENDOR_TYPED; 125530082d0cSmyers 12567c478bd9Sstevel@tonic-gate typedef struct acpi_resource_end_tag 12577c478bd9Sstevel@tonic-gate { 125827f7c583Smyers UINT8 Checksum; 12597c478bd9Sstevel@tonic-gate 12607c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_END_TAG; 12617c478bd9Sstevel@tonic-gate 1262186507a7Smyers typedef struct acpi_resource_memory24 12637c478bd9Sstevel@tonic-gate { 126427f7c583Smyers UINT8 WriteProtect; 126527f7c583Smyers UINT16 Minimum; 126627f7c583Smyers UINT16 Maximum; 126727f7c583Smyers UINT16 Alignment; 126827f7c583Smyers UINT16 AddressLength; 12697c478bd9Sstevel@tonic-gate 1270186507a7Smyers } ACPI_RESOURCE_MEMORY24; 12717c478bd9Sstevel@tonic-gate 1272186507a7Smyers typedef struct acpi_resource_memory32 12737c478bd9Sstevel@tonic-gate { 127427f7c583Smyers UINT8 WriteProtect; 127527f7c583Smyers UINT32 Minimum; 127627f7c583Smyers UINT32 Maximum; 127727f7c583Smyers UINT32 Alignment; 127827f7c583Smyers UINT32 AddressLength; 12797c478bd9Sstevel@tonic-gate 1280186507a7Smyers } ACPI_RESOURCE_MEMORY32; 12817c478bd9Sstevel@tonic-gate 1282186507a7Smyers typedef struct acpi_resource_fixed_memory32 12837c478bd9Sstevel@tonic-gate { 128427f7c583Smyers UINT8 WriteProtect; 128527f7c583Smyers UINT32 Address; 128627f7c583Smyers UINT32 AddressLength; 12877c478bd9Sstevel@tonic-gate 1288186507a7Smyers } ACPI_RESOURCE_FIXED_MEMORY32; 12897c478bd9Sstevel@tonic-gate 12907c478bd9Sstevel@tonic-gate typedef struct acpi_memory_attribute 12917c478bd9Sstevel@tonic-gate { 129227f7c583Smyers UINT8 WriteProtect; 129327f7c583Smyers UINT8 Caching; 129427f7c583Smyers UINT8 RangeType; 129527f7c583Smyers UINT8 Translation; 12967c478bd9Sstevel@tonic-gate 12977c478bd9Sstevel@tonic-gate } ACPI_MEMORY_ATTRIBUTE; 12987c478bd9Sstevel@tonic-gate 12997c478bd9Sstevel@tonic-gate typedef struct acpi_io_attribute 13007c478bd9Sstevel@tonic-gate { 130127f7c583Smyers UINT8 RangeType; 130227f7c583Smyers UINT8 Translation; 130327f7c583Smyers UINT8 TranslationType; 130427f7c583Smyers UINT8 Reserved1; 13057c478bd9Sstevel@tonic-gate 13067c478bd9Sstevel@tonic-gate } ACPI_IO_ATTRIBUTE; 13077c478bd9Sstevel@tonic-gate 13087c478bd9Sstevel@tonic-gate typedef union acpi_resource_attribute 13097c478bd9Sstevel@tonic-gate { 131027f7c583Smyers ACPI_MEMORY_ATTRIBUTE Mem; 131127f7c583Smyers ACPI_IO_ATTRIBUTE Io; 131230082d0cSmyers 131330082d0cSmyers /* Used for the *WordSpace macros */ 131430082d0cSmyers 131527f7c583Smyers UINT8 TypeSpecific; 13167c478bd9Sstevel@tonic-gate 13177c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ATTRIBUTE; 13187c478bd9Sstevel@tonic-gate 13197c478bd9Sstevel@tonic-gate typedef struct acpi_resource_source 13207c478bd9Sstevel@tonic-gate { 132127f7c583Smyers UINT8 Index; 132227f7c583Smyers UINT16 StringLength; 132327f7c583Smyers char *StringPtr; 13247c478bd9Sstevel@tonic-gate 13257c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_SOURCE; 13267c478bd9Sstevel@tonic-gate 1327186507a7Smyers /* Fields common to all address descriptors, 16/32/64 bit */ 1328186507a7Smyers 1329186507a7Smyers #define ACPI_RESOURCE_ADDRESS_COMMON \ 133027f7c583Smyers UINT8 ResourceType; \ 133127f7c583Smyers UINT8 ProducerConsumer; \ 133227f7c583Smyers UINT8 Decode; \ 133327f7c583Smyers UINT8 MinAddressFixed; \ 133427f7c583Smyers UINT8 MaxAddressFixed; \ 133527f7c583Smyers ACPI_RESOURCE_ATTRIBUTE Info; 1336186507a7Smyers 1337186507a7Smyers typedef struct acpi_resource_address 1338186507a7Smyers { 1339186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 1340186507a7Smyers 1341186507a7Smyers } ACPI_RESOURCE_ADDRESS; 1342186507a7Smyers 13437c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address16 13447c478bd9Sstevel@tonic-gate { 1345186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 134627f7c583Smyers UINT16 Granularity; 134727f7c583Smyers UINT16 Minimum; 134827f7c583Smyers UINT16 Maximum; 134927f7c583Smyers UINT16 TranslationOffset; 135027f7c583Smyers UINT16 AddressLength; 135127f7c583Smyers ACPI_RESOURCE_SOURCE ResourceSource; 13527c478bd9Sstevel@tonic-gate 13537c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS16; 13547c478bd9Sstevel@tonic-gate 13557c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address32 13567c478bd9Sstevel@tonic-gate { 1357186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 135827f7c583Smyers UINT32 Granularity; 135927f7c583Smyers UINT32 Minimum; 136027f7c583Smyers UINT32 Maximum; 136127f7c583Smyers UINT32 TranslationOffset; 136227f7c583Smyers UINT32 AddressLength; 136327f7c583Smyers ACPI_RESOURCE_SOURCE ResourceSource; 13647c478bd9Sstevel@tonic-gate 13657c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS32; 13667c478bd9Sstevel@tonic-gate 13677c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address64 13687c478bd9Sstevel@tonic-gate { 1369186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 137027f7c583Smyers UINT64 Granularity; 137127f7c583Smyers UINT64 Minimum; 137227f7c583Smyers UINT64 Maximum; 137327f7c583Smyers UINT64 TranslationOffset; 137427f7c583Smyers UINT64 AddressLength; 137527f7c583Smyers ACPI_RESOURCE_SOURCE ResourceSource; 13767c478bd9Sstevel@tonic-gate 13777c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS64; 13787c478bd9Sstevel@tonic-gate 1379186507a7Smyers typedef struct acpi_resource_extended_address64 1380186507a7Smyers { 1381186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 138227f7c583Smyers UINT8 RevisionID; 138327f7c583Smyers UINT64 Granularity; 138427f7c583Smyers UINT64 Minimum; 138527f7c583Smyers UINT64 Maximum; 138627f7c583Smyers UINT64 TranslationOffset; 138727f7c583Smyers UINT64 AddressLength; 138827f7c583Smyers UINT64 TypeSpecific; 1389186507a7Smyers 1390186507a7Smyers } ACPI_RESOURCE_EXTENDED_ADDRESS64; 1391186507a7Smyers 1392186507a7Smyers typedef struct acpi_resource_extended_irq 13937c478bd9Sstevel@tonic-gate { 139427f7c583Smyers UINT8 ProducerConsumer; 139527f7c583Smyers UINT8 Triggering; 139627f7c583Smyers UINT8 Polarity; 139727f7c583Smyers UINT8 Sharable; 139827f7c583Smyers UINT8 InterruptCount; 139927f7c583Smyers ACPI_RESOURCE_SOURCE ResourceSource; 140027f7c583Smyers UINT32 Interrupts[1]; 14017c478bd9Sstevel@tonic-gate 1402186507a7Smyers } ACPI_RESOURCE_EXTENDED_IRQ; 1403186507a7Smyers 1404186507a7Smyers typedef struct acpi_resource_generic_register 1405186507a7Smyers { 140627f7c583Smyers UINT8 SpaceId; 140727f7c583Smyers UINT8 BitWidth; 140827f7c583Smyers UINT8 BitOffset; 140927f7c583Smyers UINT8 AccessSize; 141027f7c583Smyers UINT64 Address; 1411186507a7Smyers 1412186507a7Smyers } ACPI_RESOURCE_GENERIC_REGISTER; 14137c478bd9Sstevel@tonic-gate 14147c478bd9Sstevel@tonic-gate 14157c478bd9Sstevel@tonic-gate /* ACPI_RESOURCE_TYPEs */ 14167c478bd9Sstevel@tonic-gate 1417186507a7Smyers #define ACPI_RESOURCE_TYPE_IRQ 0 1418186507a7Smyers #define ACPI_RESOURCE_TYPE_DMA 1 1419186507a7Smyers #define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 1420186507a7Smyers #define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 1421186507a7Smyers #define ACPI_RESOURCE_TYPE_IO 4 1422186507a7Smyers #define ACPI_RESOURCE_TYPE_FIXED_IO 5 1423186507a7Smyers #define ACPI_RESOURCE_TYPE_VENDOR 6 1424186507a7Smyers #define ACPI_RESOURCE_TYPE_END_TAG 7 1425186507a7Smyers #define ACPI_RESOURCE_TYPE_MEMORY24 8 1426186507a7Smyers #define ACPI_RESOURCE_TYPE_MEMORY32 9 1427186507a7Smyers #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 1428186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS16 11 1429186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS32 12 1430186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS64 13 1431186507a7Smyers #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ 1432186507a7Smyers #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 1433186507a7Smyers #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 1434186507a7Smyers #define ACPI_RESOURCE_TYPE_MAX 16 1435186507a7Smyers 14367c478bd9Sstevel@tonic-gate 14377c478bd9Sstevel@tonic-gate typedef union acpi_resource_data 14387c478bd9Sstevel@tonic-gate { 143927f7c583Smyers ACPI_RESOURCE_IRQ Irq; 144027f7c583Smyers ACPI_RESOURCE_DMA Dma; 144127f7c583Smyers ACPI_RESOURCE_START_DEPENDENT StartDpf; 144227f7c583Smyers ACPI_RESOURCE_IO Io; 144327f7c583Smyers ACPI_RESOURCE_FIXED_IO FixedIo; 144427f7c583Smyers ACPI_RESOURCE_VENDOR Vendor; 144527f7c583Smyers ACPI_RESOURCE_VENDOR_TYPED VendorTyped; 144627f7c583Smyers ACPI_RESOURCE_END_TAG EndTag; 144727f7c583Smyers ACPI_RESOURCE_MEMORY24 Memory24; 144827f7c583Smyers ACPI_RESOURCE_MEMORY32 Memory32; 144927f7c583Smyers ACPI_RESOURCE_FIXED_MEMORY32 FixedMemory32; 145027f7c583Smyers ACPI_RESOURCE_ADDRESS16 Address16; 145127f7c583Smyers ACPI_RESOURCE_ADDRESS32 Address32; 145227f7c583Smyers ACPI_RESOURCE_ADDRESS64 Address64; 145327f7c583Smyers ACPI_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 145427f7c583Smyers ACPI_RESOURCE_EXTENDED_IRQ ExtendedIrq; 145527f7c583Smyers ACPI_RESOURCE_GENERIC_REGISTER GenericReg; 1456186507a7Smyers 1457186507a7Smyers /* Common fields */ 1458186507a7Smyers 145927f7c583Smyers ACPI_RESOURCE_ADDRESS Address; /* Common 16/32/64 address fields */ 14607c478bd9Sstevel@tonic-gate 14617c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_DATA; 14627c478bd9Sstevel@tonic-gate 1463186507a7Smyers 14647c478bd9Sstevel@tonic-gate typedef struct acpi_resource 14657c478bd9Sstevel@tonic-gate { 146627f7c583Smyers UINT32 Type; 146727f7c583Smyers UINT32 Length; 146827f7c583Smyers ACPI_RESOURCE_DATA Data; 14697c478bd9Sstevel@tonic-gate 14707c478bd9Sstevel@tonic-gate } ACPI_RESOURCE; 14717c478bd9Sstevel@tonic-gate 147230082d0cSmyers /* restore default alignment */ 1473186507a7Smyers 147430082d0cSmyers #pragma pack() 14757c478bd9Sstevel@tonic-gate 14767c478bd9Sstevel@tonic-gate 147730082d0cSmyers #define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ 1478*db2bae30SDana Myers #define ACPI_RS_SIZE_MIN (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (12) 147930082d0cSmyers #define ACPI_RS_SIZE(Type) (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type)) 14807c478bd9Sstevel@tonic-gate 148130082d0cSmyers #define ACPI_NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->Length) 14827c478bd9Sstevel@tonic-gate 14837c478bd9Sstevel@tonic-gate 14847c478bd9Sstevel@tonic-gate typedef struct acpi_pci_routing_table 14857c478bd9Sstevel@tonic-gate { 148627f7c583Smyers UINT32 Length; 148727f7c583Smyers UINT32 Pin; 148827f7c583Smyers ACPI_INTEGER Address; /* here for 64-bit alignment */ 148927f7c583Smyers UINT32 SourceIndex; 149027f7c583Smyers char Source[4]; /* pad to 64 bits so sizeof() works in all cases */ 14917c478bd9Sstevel@tonic-gate 14927c478bd9Sstevel@tonic-gate } ACPI_PCI_ROUTING_TABLE; 14937c478bd9Sstevel@tonic-gate 14947c478bd9Sstevel@tonic-gate 14957c478bd9Sstevel@tonic-gate #endif /* __ACTYPES_H__ */ 1496