17c478bd9Sstevel@tonic-gate /****************************************************************************** 27c478bd9Sstevel@tonic-gate * 37c478bd9Sstevel@tonic-gate * Name: actypes.h - Common data types for the entire ACPI subsystem 4*30082d0cSmyers * $Revision: 1.301 $ 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*30082d0cSmyers * Some or all of this work - Copyright (c) 1999 - 2006, 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 120*30082d0cSmyers /* 121*30082d0cSmyers * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header 122*30082d0cSmyers * and must be either 16, 32, or 64 123*30082d0cSmyers */ 124*30082d0cSmyers #ifndef ACPI_MACHINE_WIDTH 125*30082d0cSmyers #error ACPI_MACHINE_WIDTH not defined 126*30082d0cSmyers #endif 1277c478bd9Sstevel@tonic-gate 1287c478bd9Sstevel@tonic-gate 129*30082d0cSmyers /*! [Begin] no source code translation */ 1307c478bd9Sstevel@tonic-gate 1317c478bd9Sstevel@tonic-gate /* 1327c478bd9Sstevel@tonic-gate * Data type ranges 1337c478bd9Sstevel@tonic-gate * Note: These macros are designed to be compiler independent as well as 1347c478bd9Sstevel@tonic-gate * working around problems that some 32-bit compilers have with 64-bit 1357c478bd9Sstevel@tonic-gate * constants. 1367c478bd9Sstevel@tonic-gate */ 1377c478bd9Sstevel@tonic-gate #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 1387c478bd9Sstevel@tonic-gate #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 1397c478bd9Sstevel@tonic-gate #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 1407c478bd9Sstevel@tonic-gate #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 1417c478bd9Sstevel@tonic-gate #define ACPI_ASCII_MAX 0x7F 1427c478bd9Sstevel@tonic-gate 1437c478bd9Sstevel@tonic-gate 1447c478bd9Sstevel@tonic-gate /* 145*30082d0cSmyers * Architecture-specific ACPICA Subsystem Data Types 146*30082d0cSmyers * 147*30082d0cSmyers * The goal of these types is to provide source code portability across 148*30082d0cSmyers * 16-bit, 32-bit, and 64-bit targets. 149*30082d0cSmyers * 150*30082d0cSmyers * 1) The following types are of fixed size for all targets (16/32/64): 151*30082d0cSmyers * 152*30082d0cSmyers * BOOLEAN Logical boolean 153*30082d0cSmyers * 154*30082d0cSmyers * UINT8 8-bit (1 byte) unsigned value 155*30082d0cSmyers * UINT16 16-bit (2 byte) unsigned value 156*30082d0cSmyers * UINT32 32-bit (4 byte) unsigned value 157*30082d0cSmyers * UINT64 64-bit (8 byte) unsigned value 158*30082d0cSmyers * 159*30082d0cSmyers * INT16 16-bit (2 byte) signed value 160*30082d0cSmyers * INT32 32-bit (4 byte) signed value 161*30082d0cSmyers * INT64 64-bit (8 byte) signed value 162*30082d0cSmyers * 163*30082d0cSmyers * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 164*30082d0cSmyers * compiler-dependent header(s) and were introduced because there is no common 165*30082d0cSmyers * 64-bit integer type across the various compilation models, as shown in 166*30082d0cSmyers * the table below. 167*30082d0cSmyers * 168*30082d0cSmyers * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 169*30082d0cSmyers * char 8 8 8 8 8 8 170*30082d0cSmyers * short 16 16 16 16 16 16 171*30082d0cSmyers * _int32 32 172*30082d0cSmyers * int 32 64 32 32 16 16 173*30082d0cSmyers * long 64 64 32 32 32 32 174*30082d0cSmyers * long long 64 64 175*30082d0cSmyers * pointer 64 64 64 32 32 32 176*30082d0cSmyers * 177*30082d0cSmyers * Note: ILP64 and LP32 are currently not supported. 178*30082d0cSmyers * 179*30082d0cSmyers * 180*30082d0cSmyers * 2) These types represent the native word size of the target mode of the 181*30082d0cSmyers * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 182*30082d0cSmyers * usually used for memory allocation, efficient loop counters, and array 183*30082d0cSmyers * indexes. The types are similar to the size_t type in the C library and are 184*30082d0cSmyers * required because there is no C type that consistently represents the native 185*30082d0cSmyers * data width. 186*30082d0cSmyers * 187*30082d0cSmyers * ACPI_SIZE 16/32/64-bit unsigned value 188*30082d0cSmyers * ACPI_NATIVE_UINT 16/32/64-bit unsigned value 189*30082d0cSmyers * ACPI_NATIVE_INT 16/32/64-bit signed value 190*30082d0cSmyers * 1917c478bd9Sstevel@tonic-gate */ 1927c478bd9Sstevel@tonic-gate 193*30082d0cSmyers /******************************************************************************* 194*30082d0cSmyers * 195*30082d0cSmyers * Common types for all compilers, all targets 196*30082d0cSmyers * 197*30082d0cSmyers ******************************************************************************/ 1987c478bd9Sstevel@tonic-gate 199*30082d0cSmyers typedef unsigned char BOOLEAN; 200*30082d0cSmyers typedef unsigned char UINT8; 201*30082d0cSmyers typedef unsigned short UINT16; 202*30082d0cSmyers typedef COMPILER_DEPENDENT_UINT64 UINT64; 203*30082d0cSmyers typedef COMPILER_DEPENDENT_INT64 INT64; 2047c478bd9Sstevel@tonic-gate 205*30082d0cSmyers /*! [End] no source code translation !*/ 2067c478bd9Sstevel@tonic-gate 207*30082d0cSmyers 208*30082d0cSmyers /******************************************************************************* 209*30082d0cSmyers * 210*30082d0cSmyers * Types specific to 64-bit targets 211*30082d0cSmyers * 212*30082d0cSmyers ******************************************************************************/ 2137c478bd9Sstevel@tonic-gate 2147c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 2157c478bd9Sstevel@tonic-gate 216*30082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 2177c478bd9Sstevel@tonic-gate 2187c478bd9Sstevel@tonic-gate typedef unsigned int UINT32; 219*30082d0cSmyers typedef int INT32; 2207c478bd9Sstevel@tonic-gate 2217c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/ 2227c478bd9Sstevel@tonic-gate 223*30082d0cSmyers 2247c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_NATIVE_UINT; 225*30082d0cSmyers typedef INT64 ACPI_NATIVE_INT; 2267c478bd9Sstevel@tonic-gate 2277c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_TABLE_PTR; 2287c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_IO_ADDRESS; 2297c478bd9Sstevel@tonic-gate typedef UINT64 ACPI_PHYSICAL_ADDRESS; 2307c478bd9Sstevel@tonic-gate 2317c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR ACPI_UINT64_MAX 2327c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX ACPI_UINT64_MAX 2337c478bd9Sstevel@tonic-gate 234*30082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 2357c478bd9Sstevel@tonic-gate 2367c478bd9Sstevel@tonic-gate /* 237*30082d0cSmyers * In the case of the Itanium Processor Family (IPF), the hardware does not 238*30082d0cSmyers * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 239*30082d0cSmyers * to indicate that special precautions must be taken to avoid alignment faults. 240*30082d0cSmyers * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 241*30082d0cSmyers * 242*30082d0cSmyers * Note: EM64T and other X86-64 processors support misaligned transfers, 243*30082d0cSmyers * so there is no need to define this flag. 2447c478bd9Sstevel@tonic-gate */ 245*30082d0cSmyers #if defined (__IA64__) || defined (__ia64__) 246*30082d0cSmyers #define ACPI_MISALIGNMENT_NOT_SUPPORTED 247*30082d0cSmyers #endif 2487c478bd9Sstevel@tonic-gate 2497c478bd9Sstevel@tonic-gate 250*30082d0cSmyers /******************************************************************************* 251*30082d0cSmyers * 252*30082d0cSmyers * Types specific to 32-bit targets 253*30082d0cSmyers * 254*30082d0cSmyers ******************************************************************************/ 255*30082d0cSmyers 256*30082d0cSmyers #elif ACPI_MACHINE_WIDTH == 32 257*30082d0cSmyers 258*30082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 259*30082d0cSmyers 260*30082d0cSmyers typedef unsigned int UINT32; 261*30082d0cSmyers typedef int INT32; 262*30082d0cSmyers 263*30082d0cSmyers /*! [End] no source code translation !*/ 264*30082d0cSmyers 265*30082d0cSmyers 266*30082d0cSmyers typedef UINT32 ACPI_NATIVE_UINT; 267*30082d0cSmyers typedef INT32 ACPI_NATIVE_INT; 268*30082d0cSmyers 269*30082d0cSmyers typedef UINT64 ACPI_TABLE_PTR; 270*30082d0cSmyers typedef UINT32 ACPI_IO_ADDRESS; 271*30082d0cSmyers typedef UINT64 ACPI_PHYSICAL_ADDRESS; 272*30082d0cSmyers 273*30082d0cSmyers #define ACPI_MAX_PTR ACPI_UINT32_MAX 274*30082d0cSmyers #define ACPI_SIZE_MAX ACPI_UINT32_MAX 275*30082d0cSmyers 276*30082d0cSmyers 277*30082d0cSmyers /******************************************************************************* 278*30082d0cSmyers * 279*30082d0cSmyers * Types specific to 16-bit targets 280*30082d0cSmyers * 281*30082d0cSmyers ******************************************************************************/ 282*30082d0cSmyers 283*30082d0cSmyers #elif ACPI_MACHINE_WIDTH == 16 284*30082d0cSmyers 285*30082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */ 286*30082d0cSmyers 287*30082d0cSmyers typedef unsigned long UINT32; 288*30082d0cSmyers typedef short INT16; 289*30082d0cSmyers typedef long INT32; 2907c478bd9Sstevel@tonic-gate 2917c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/ 2927c478bd9Sstevel@tonic-gate 293*30082d0cSmyers 2947c478bd9Sstevel@tonic-gate typedef UINT16 ACPI_NATIVE_UINT; 2957c478bd9Sstevel@tonic-gate typedef INT16 ACPI_NATIVE_INT; 2967c478bd9Sstevel@tonic-gate 2977c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_TABLE_PTR; 2987c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_IO_ADDRESS; 2997c478bd9Sstevel@tonic-gate typedef char *ACPI_PHYSICAL_ADDRESS; 3007c478bd9Sstevel@tonic-gate 3017c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR ACPI_UINT16_MAX 3027c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX ACPI_UINT16_MAX 3037c478bd9Sstevel@tonic-gate 304*30082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ 305*30082d0cSmyers 306*30082d0cSmyers /* 64-bit integers cannot be supported */ 307*30082d0cSmyers 3087c478bd9Sstevel@tonic-gate #define ACPI_NO_INTEGER64_SUPPORT 3097c478bd9Sstevel@tonic-gate 3107c478bd9Sstevel@tonic-gate 311*30082d0cSmyers #else 3127c478bd9Sstevel@tonic-gate 313*30082d0cSmyers /* ACPI_MACHINE_WIDTH must be either 64, 32, or 16 */ 3147c478bd9Sstevel@tonic-gate 315*30082d0cSmyers #error unknown ACPI_MACHINE_WIDTH 316*30082d0cSmyers #endif 3177c478bd9Sstevel@tonic-gate 3187c478bd9Sstevel@tonic-gate 319*30082d0cSmyers /* Variable-width type, used instead of clib size_t */ 3207c478bd9Sstevel@tonic-gate 321*30082d0cSmyers typedef ACPI_NATIVE_UINT ACPI_SIZE; 3227c478bd9Sstevel@tonic-gate 3237c478bd9Sstevel@tonic-gate 324*30082d0cSmyers /******************************************************************************* 325*30082d0cSmyers * 326*30082d0cSmyers * OS- or compiler-dependent types 327*30082d0cSmyers * 328*30082d0cSmyers * If the defaults below are not appropriate for the host system, they can 329*30082d0cSmyers * be defined in the compiler-specific or OS-specific header, and this will 330*30082d0cSmyers * take precedence. 331*30082d0cSmyers * 332*30082d0cSmyers ******************************************************************************/ 333*30082d0cSmyers 334*30082d0cSmyers /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 335*30082d0cSmyers 336*30082d0cSmyers #ifndef ACPI_UINTPTR_T 337*30082d0cSmyers #define ACPI_UINTPTR_T void * 3387c478bd9Sstevel@tonic-gate #endif 3397c478bd9Sstevel@tonic-gate 340*30082d0cSmyers /* 341*30082d0cSmyers * If ACPI_CACHE_T was not defined in the OS-dependent header, 342*30082d0cSmyers * define it now. This is typically the case where the local cache 343*30082d0cSmyers * manager implementation is to be used (ACPI_USE_LOCAL_CACHE) 344*30082d0cSmyers */ 345*30082d0cSmyers #ifndef ACPI_CACHE_T 346*30082d0cSmyers #define ACPI_CACHE_T ACPI_MEMORY_LIST 347*30082d0cSmyers #endif 3487c478bd9Sstevel@tonic-gate 3497c478bd9Sstevel@tonic-gate /* 350*30082d0cSmyers * Allow the CPU flags word to be defined per-OS to simplify the use of the 351*30082d0cSmyers * lock and unlock OSL interfaces. 3527c478bd9Sstevel@tonic-gate */ 353*30082d0cSmyers #ifndef ACPI_CPU_FLAGS 354*30082d0cSmyers #define ACPI_CPU_FLAGS ACPI_NATIVE_UINT 355*30082d0cSmyers #endif 356*30082d0cSmyers 357*30082d0cSmyers /* 358*30082d0cSmyers * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 359*30082d0cSmyers * some compilers can catch printf format string problems 360*30082d0cSmyers */ 361*30082d0cSmyers #ifndef ACPI_PRINTF_LIKE 362*30082d0cSmyers #define ACPI_PRINTF_LIKE(c) 363*30082d0cSmyers #endif 364*30082d0cSmyers 365*30082d0cSmyers /* 366*30082d0cSmyers * Some compilers complain about unused variables. Sometimes we don't want to 367*30082d0cSmyers * use all the variables (for example, _AcpiModuleName). This allows us 368*30082d0cSmyers * to to tell the compiler in a per-variable manner that a variable 369*30082d0cSmyers * is unused 370*30082d0cSmyers */ 371*30082d0cSmyers #ifndef ACPI_UNUSED_VAR 372*30082d0cSmyers #define ACPI_UNUSED_VAR 373*30082d0cSmyers #endif 374*30082d0cSmyers 375*30082d0cSmyers 376*30082d0cSmyers /******************************************************************************* 377*30082d0cSmyers * 378*30082d0cSmyers * Independent types 379*30082d0cSmyers * 380*30082d0cSmyers ******************************************************************************/ 3817c478bd9Sstevel@tonic-gate 3827c478bd9Sstevel@tonic-gate /* 3837c478bd9Sstevel@tonic-gate * Pointer overlays to avoid lots of typecasting for 3847c478bd9Sstevel@tonic-gate * code that accepts both physical and logical pointers. 3857c478bd9Sstevel@tonic-gate */ 3867c478bd9Sstevel@tonic-gate typedef union acpi_pointers 3877c478bd9Sstevel@tonic-gate { 3887c478bd9Sstevel@tonic-gate ACPI_PHYSICAL_ADDRESS Physical; 3897c478bd9Sstevel@tonic-gate void *Logical; 3907c478bd9Sstevel@tonic-gate ACPI_TABLE_PTR Value; 3917c478bd9Sstevel@tonic-gate 3927c478bd9Sstevel@tonic-gate } ACPI_POINTERS; 3937c478bd9Sstevel@tonic-gate 3947c478bd9Sstevel@tonic-gate typedef struct acpi_pointer 3957c478bd9Sstevel@tonic-gate { 3967c478bd9Sstevel@tonic-gate UINT32 PointerType; 3977c478bd9Sstevel@tonic-gate union acpi_pointers Pointer; 3987c478bd9Sstevel@tonic-gate 3997c478bd9Sstevel@tonic-gate } ACPI_POINTER; 4007c478bd9Sstevel@tonic-gate 4017c478bd9Sstevel@tonic-gate /* PointerTypes for above */ 4027c478bd9Sstevel@tonic-gate 4037c478bd9Sstevel@tonic-gate #define ACPI_PHYSICAL_POINTER 0x01 4047c478bd9Sstevel@tonic-gate #define ACPI_LOGICAL_POINTER 0x02 4057c478bd9Sstevel@tonic-gate 4067c478bd9Sstevel@tonic-gate /* Processor mode */ 4077c478bd9Sstevel@tonic-gate 4087c478bd9Sstevel@tonic-gate #define ACPI_PHYSICAL_ADDRESSING 0x04 4097c478bd9Sstevel@tonic-gate #define ACPI_LOGICAL_ADDRESSING 0x08 4107c478bd9Sstevel@tonic-gate #define ACPI_MEMORY_MODE 0x0C 4117c478bd9Sstevel@tonic-gate 4127c478bd9Sstevel@tonic-gate #define ACPI_PHYSMODE_PHYSPTR ACPI_PHYSICAL_ADDRESSING | ACPI_PHYSICAL_POINTER 4137c478bd9Sstevel@tonic-gate #define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER 4147c478bd9Sstevel@tonic-gate #define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER 4157c478bd9Sstevel@tonic-gate 4167c478bd9Sstevel@tonic-gate 417*30082d0cSmyers /* Logical defines and NULL */ 418*30082d0cSmyers 4197c478bd9Sstevel@tonic-gate #ifdef FALSE 4207c478bd9Sstevel@tonic-gate #undef FALSE 4217c478bd9Sstevel@tonic-gate #endif 4227c478bd9Sstevel@tonic-gate #define FALSE (1 == 0) 4237c478bd9Sstevel@tonic-gate 4247c478bd9Sstevel@tonic-gate #ifdef TRUE 4257c478bd9Sstevel@tonic-gate #undef TRUE 4267c478bd9Sstevel@tonic-gate #endif 4277c478bd9Sstevel@tonic-gate #define TRUE (1 == 1) 4287c478bd9Sstevel@tonic-gate 4297c478bd9Sstevel@tonic-gate #ifndef NULL 4307c478bd9Sstevel@tonic-gate #define NULL (void *) 0 4317c478bd9Sstevel@tonic-gate #endif 4327c478bd9Sstevel@tonic-gate 4337c478bd9Sstevel@tonic-gate 4347c478bd9Sstevel@tonic-gate /* 435*30082d0cSmyers * Mescellaneous types 4367c478bd9Sstevel@tonic-gate */ 4377c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 4387c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 4397c478bd9Sstevel@tonic-gate typedef char * ACPI_STRING; /* Null terminated ASCII string */ 440*30082d0cSmyers typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 4417c478bd9Sstevel@tonic-gate 4427c478bd9Sstevel@tonic-gate typedef struct uint64_struct 4437c478bd9Sstevel@tonic-gate { 4447c478bd9Sstevel@tonic-gate UINT32 Lo; 4457c478bd9Sstevel@tonic-gate UINT32 Hi; 4467c478bd9Sstevel@tonic-gate 4477c478bd9Sstevel@tonic-gate } UINT64_STRUCT; 4487c478bd9Sstevel@tonic-gate 4497c478bd9Sstevel@tonic-gate typedef union uint64_overlay 4507c478bd9Sstevel@tonic-gate { 4517c478bd9Sstevel@tonic-gate UINT64 Full; 4527c478bd9Sstevel@tonic-gate UINT64_STRUCT Part; 4537c478bd9Sstevel@tonic-gate 4547c478bd9Sstevel@tonic-gate } UINT64_OVERLAY; 4557c478bd9Sstevel@tonic-gate 4567c478bd9Sstevel@tonic-gate typedef struct uint32_struct 4577c478bd9Sstevel@tonic-gate { 4587c478bd9Sstevel@tonic-gate UINT32 Lo; 4597c478bd9Sstevel@tonic-gate UINT32 Hi; 4607c478bd9Sstevel@tonic-gate 4617c478bd9Sstevel@tonic-gate } UINT32_STRUCT; 4627c478bd9Sstevel@tonic-gate 4637c478bd9Sstevel@tonic-gate 4647c478bd9Sstevel@tonic-gate /* 4657c478bd9Sstevel@tonic-gate * Acpi integer width. In ACPI version 1, integers are 4667c478bd9Sstevel@tonic-gate * 32 bits. In ACPI version 2, integers are 64 bits. 4677c478bd9Sstevel@tonic-gate * Note that this pertains to the ACPI integer type only, not 4687c478bd9Sstevel@tonic-gate * other integers used in the implementation of the ACPI CA 4697c478bd9Sstevel@tonic-gate * subsystem. 4707c478bd9Sstevel@tonic-gate */ 4717c478bd9Sstevel@tonic-gate #ifdef ACPI_NO_INTEGER64_SUPPORT 4727c478bd9Sstevel@tonic-gate 4737c478bd9Sstevel@tonic-gate /* 32-bit integers only, no 64-bit support */ 4747c478bd9Sstevel@tonic-gate 4757c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_INTEGER; 4767c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_MAX ACPI_UINT32_MAX 4777c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE 32 4787c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */ 4797c478bd9Sstevel@tonic-gate 4807c478bd9Sstevel@tonic-gate #define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */ 4817c478bd9Sstevel@tonic-gate 4827c478bd9Sstevel@tonic-gate 4837c478bd9Sstevel@tonic-gate #else 4847c478bd9Sstevel@tonic-gate 4857c478bd9Sstevel@tonic-gate /* 64-bit integers */ 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 4927c478bd9Sstevel@tonic-gate 4937c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64 4947c478bd9Sstevel@tonic-gate #define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ 4957c478bd9Sstevel@tonic-gate #endif 4967c478bd9Sstevel@tonic-gate #endif 4977c478bd9Sstevel@tonic-gate 4987c478bd9Sstevel@tonic-gate #define ACPI_MAX64_DECIMAL_DIGITS 20 4997c478bd9Sstevel@tonic-gate #define ACPI_MAX32_DECIMAL_DIGITS 10 5007c478bd9Sstevel@tonic-gate #define ACPI_MAX16_DECIMAL_DIGITS 5 5017c478bd9Sstevel@tonic-gate #define ACPI_MAX8_DECIMAL_DIGITS 3 5027c478bd9Sstevel@tonic-gate 5037c478bd9Sstevel@tonic-gate /* 5047c478bd9Sstevel@tonic-gate * Constants with special meanings 5057c478bd9Sstevel@tonic-gate */ 506*30082d0cSmyers #define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 5077c478bd9Sstevel@tonic-gate 5087c478bd9Sstevel@tonic-gate 5097c478bd9Sstevel@tonic-gate /* 5107c478bd9Sstevel@tonic-gate * Initialization sequence 5117c478bd9Sstevel@tonic-gate */ 5127c478bd9Sstevel@tonic-gate #define ACPI_FULL_INITIALIZATION 0x00 5137c478bd9Sstevel@tonic-gate #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 5147c478bd9Sstevel@tonic-gate #define ACPI_NO_HARDWARE_INIT 0x02 5157c478bd9Sstevel@tonic-gate #define ACPI_NO_EVENT_INIT 0x04 5167c478bd9Sstevel@tonic-gate #define ACPI_NO_HANDLER_INIT 0x08 5177c478bd9Sstevel@tonic-gate #define ACPI_NO_ACPI_ENABLE 0x10 5187c478bd9Sstevel@tonic-gate #define ACPI_NO_DEVICE_INIT 0x20 5197c478bd9Sstevel@tonic-gate #define ACPI_NO_OBJECT_INIT 0x40 5207c478bd9Sstevel@tonic-gate 5217c478bd9Sstevel@tonic-gate /* 5227c478bd9Sstevel@tonic-gate * Initialization state 5237c478bd9Sstevel@tonic-gate */ 5247c478bd9Sstevel@tonic-gate #define ACPI_INITIALIZED_OK 0x01 5257c478bd9Sstevel@tonic-gate 5267c478bd9Sstevel@tonic-gate /* 5277c478bd9Sstevel@tonic-gate * Power state values 5287c478bd9Sstevel@tonic-gate */ 5297c478bd9Sstevel@tonic-gate #define ACPI_STATE_UNKNOWN (UINT8) 0xFF 5307c478bd9Sstevel@tonic-gate 5317c478bd9Sstevel@tonic-gate #define ACPI_STATE_S0 (UINT8) 0 5327c478bd9Sstevel@tonic-gate #define ACPI_STATE_S1 (UINT8) 1 5337c478bd9Sstevel@tonic-gate #define ACPI_STATE_S2 (UINT8) 2 5347c478bd9Sstevel@tonic-gate #define ACPI_STATE_S3 (UINT8) 3 5357c478bd9Sstevel@tonic-gate #define ACPI_STATE_S4 (UINT8) 4 5367c478bd9Sstevel@tonic-gate #define ACPI_STATE_S5 (UINT8) 5 5377c478bd9Sstevel@tonic-gate #define ACPI_S_STATES_MAX ACPI_STATE_S5 5387c478bd9Sstevel@tonic-gate #define ACPI_S_STATE_COUNT 6 5397c478bd9Sstevel@tonic-gate 5407c478bd9Sstevel@tonic-gate #define ACPI_STATE_D0 (UINT8) 0 5417c478bd9Sstevel@tonic-gate #define ACPI_STATE_D1 (UINT8) 1 5427c478bd9Sstevel@tonic-gate #define ACPI_STATE_D2 (UINT8) 2 5437c478bd9Sstevel@tonic-gate #define ACPI_STATE_D3 (UINT8) 3 5447c478bd9Sstevel@tonic-gate #define ACPI_D_STATES_MAX ACPI_STATE_D3 5457c478bd9Sstevel@tonic-gate #define ACPI_D_STATE_COUNT 4 5467c478bd9Sstevel@tonic-gate 5477c478bd9Sstevel@tonic-gate #define ACPI_STATE_C0 (UINT8) 0 5487c478bd9Sstevel@tonic-gate #define ACPI_STATE_C1 (UINT8) 1 5497c478bd9Sstevel@tonic-gate #define ACPI_STATE_C2 (UINT8) 2 5507c478bd9Sstevel@tonic-gate #define ACPI_STATE_C3 (UINT8) 3 5517c478bd9Sstevel@tonic-gate #define ACPI_C_STATES_MAX ACPI_STATE_C3 5527c478bd9Sstevel@tonic-gate #define ACPI_C_STATE_COUNT 4 5537c478bd9Sstevel@tonic-gate 5547c478bd9Sstevel@tonic-gate /* 5557c478bd9Sstevel@tonic-gate * Sleep type invalid value 5567c478bd9Sstevel@tonic-gate */ 5577c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_MAX 0x7 5587c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_INVALID 0xFF 5597c478bd9Sstevel@tonic-gate 5607c478bd9Sstevel@tonic-gate /* 5617c478bd9Sstevel@tonic-gate * Standard notify values 5627c478bd9Sstevel@tonic-gate */ 5637c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0 5647c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 1 5657c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 2 5667c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 3 5677c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 4 5687c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 5 5697c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 6 5707c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_POWER_FAULT (UINT8) 7 5717c478bd9Sstevel@tonic-gate 5727c478bd9Sstevel@tonic-gate /* 5737c478bd9Sstevel@tonic-gate * Table types. These values are passed to the table related APIs 5747c478bd9Sstevel@tonic-gate */ 5757c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_TABLE_TYPE; 5767c478bd9Sstevel@tonic-gate 5777c478bd9Sstevel@tonic-gate #define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0 5787c478bd9Sstevel@tonic-gate #define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1 5797c478bd9Sstevel@tonic-gate #define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2 5807c478bd9Sstevel@tonic-gate #define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3 5817c478bd9Sstevel@tonic-gate #define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4 5827c478bd9Sstevel@tonic-gate #define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5 5837c478bd9Sstevel@tonic-gate #define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6 5847c478bd9Sstevel@tonic-gate #define ACPI_TABLE_MAX 6 5857c478bd9Sstevel@tonic-gate #define NUM_ACPI_TABLE_TYPES (ACPI_TABLE_MAX+1) 5867c478bd9Sstevel@tonic-gate 5877c478bd9Sstevel@tonic-gate /* 5887c478bd9Sstevel@tonic-gate * Types associated with ACPI names and objects. The first group of 5897c478bd9Sstevel@tonic-gate * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 5907c478bd9Sstevel@tonic-gate * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 5917c478bd9Sstevel@tonic-gate * only add to the first group if the spec changes. 5927c478bd9Sstevel@tonic-gate * 5937c478bd9Sstevel@tonic-gate * NOTE: Types must be kept in sync with the global AcpiNsProperties 5947c478bd9Sstevel@tonic-gate * and AcpiNsTypeNames arrays. 5957c478bd9Sstevel@tonic-gate */ 5967c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_OBJECT_TYPE; 5977c478bd9Sstevel@tonic-gate 5987c478bd9Sstevel@tonic-gate #define ACPI_TYPE_ANY 0x00 5997c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 6007c478bd9Sstevel@tonic-gate #define ACPI_TYPE_STRING 0x02 6017c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER 0x03 6027c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 6037c478bd9Sstevel@tonic-gate #define ACPI_TYPE_FIELD_UNIT 0x05 6047c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 6057c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EVENT 0x07 6067c478bd9Sstevel@tonic-gate #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 6077c478bd9Sstevel@tonic-gate #define ACPI_TYPE_MUTEX 0x09 6087c478bd9Sstevel@tonic-gate #define ACPI_TYPE_REGION 0x0A 6097c478bd9Sstevel@tonic-gate #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 6107c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 6117c478bd9Sstevel@tonic-gate #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 6127c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER_FIELD 0x0E 6137c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DDB_HANDLE 0x0F 6147c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEBUG_OBJECT 0x10 6157c478bd9Sstevel@tonic-gate 6167c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EXTERNAL_MAX 0x10 6177c478bd9Sstevel@tonic-gate 6187c478bd9Sstevel@tonic-gate /* 6197c478bd9Sstevel@tonic-gate * These are object types that do not map directly to the ACPI 6207c478bd9Sstevel@tonic-gate * ObjectType() operator. They are used for various internal purposes only. 6217c478bd9Sstevel@tonic-gate * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 6227c478bd9Sstevel@tonic-gate * internal types must move upwards. (There is code that depends on these 6237c478bd9Sstevel@tonic-gate * values being contiguous with the external types above.) 6247c478bd9Sstevel@tonic-gate */ 6257c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 6267c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 6277c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 6287c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 6297c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ALIAS 0x15 6307c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 6317c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_NOTIFY 0x17 6327c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 6337c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE 0x19 6347c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 6357c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 6367c478bd9Sstevel@tonic-gate 6377c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 6387c478bd9Sstevel@tonic-gate 6397c478bd9Sstevel@tonic-gate /* 6407c478bd9Sstevel@tonic-gate * These are special object types that never appear in 6417c478bd9Sstevel@tonic-gate * a Namespace node, only in an ACPI_OPERAND_OBJECT 6427c478bd9Sstevel@tonic-gate */ 6437c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_EXTRA 0x1C 6447c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_DATA 0x1D 6457c478bd9Sstevel@tonic-gate 6467c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_MAX 0x1D 6477c478bd9Sstevel@tonic-gate 6487c478bd9Sstevel@tonic-gate /* All types above here are invalid */ 6497c478bd9Sstevel@tonic-gate 6507c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INVALID 0x1E 6517c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NOT_FOUND 0xFF 6527c478bd9Sstevel@tonic-gate 6537c478bd9Sstevel@tonic-gate /* 6547c478bd9Sstevel@tonic-gate * All I/O 6557c478bd9Sstevel@tonic-gate */ 6567c478bd9Sstevel@tonic-gate #define ACPI_READ 0 6577c478bd9Sstevel@tonic-gate #define ACPI_WRITE 1 6587c478bd9Sstevel@tonic-gate #define ACPI_IO_MASK 1 6597c478bd9Sstevel@tonic-gate 6607c478bd9Sstevel@tonic-gate /* 6617c478bd9Sstevel@tonic-gate * Event Types: Fixed & General Purpose 6627c478bd9Sstevel@tonic-gate */ 6637c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_TYPE; 6647c478bd9Sstevel@tonic-gate 6657c478bd9Sstevel@tonic-gate /* 6667c478bd9Sstevel@tonic-gate * Fixed events 6677c478bd9Sstevel@tonic-gate */ 6687c478bd9Sstevel@tonic-gate #define ACPI_EVENT_PMTIMER 0 6697c478bd9Sstevel@tonic-gate #define ACPI_EVENT_GLOBAL 1 6707c478bd9Sstevel@tonic-gate #define ACPI_EVENT_POWER_BUTTON 2 6717c478bd9Sstevel@tonic-gate #define ACPI_EVENT_SLEEP_BUTTON 3 6727c478bd9Sstevel@tonic-gate #define ACPI_EVENT_RTC 4 6737c478bd9Sstevel@tonic-gate #define ACPI_EVENT_MAX 4 6747c478bd9Sstevel@tonic-gate #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 6757c478bd9Sstevel@tonic-gate 6767c478bd9Sstevel@tonic-gate /* 6777c478bd9Sstevel@tonic-gate * Event Status - Per event 6787c478bd9Sstevel@tonic-gate * ------------- 6797c478bd9Sstevel@tonic-gate * The encoding of ACPI_EVENT_STATUS is illustrated below. 6807c478bd9Sstevel@tonic-gate * Note that a set bit (1) indicates the property is TRUE 6817c478bd9Sstevel@tonic-gate * (e.g. if bit 0 is set then the event is enabled). 6827c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 6837c478bd9Sstevel@tonic-gate * | Bits 31:3 |2|1|0| 6847c478bd9Sstevel@tonic-gate * +-------------+-+-+-+ 6857c478bd9Sstevel@tonic-gate * | | | | 6867c478bd9Sstevel@tonic-gate * | | | +- Enabled? 6877c478bd9Sstevel@tonic-gate * | | +--- Enabled for wake? 6887c478bd9Sstevel@tonic-gate * | +----- Set? 6897c478bd9Sstevel@tonic-gate * +----------- <Reserved> 6907c478bd9Sstevel@tonic-gate */ 6917c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_EVENT_STATUS; 6927c478bd9Sstevel@tonic-gate 6937c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 6947c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 6957c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 6967c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 6977c478bd9Sstevel@tonic-gate 6987c478bd9Sstevel@tonic-gate /* 6997c478bd9Sstevel@tonic-gate * General Purpose Events (GPE) 7007c478bd9Sstevel@tonic-gate */ 7017c478bd9Sstevel@tonic-gate #define ACPI_GPE_INVALID 0xFF 7027c478bd9Sstevel@tonic-gate #define ACPI_GPE_MAX 0xFF 7037c478bd9Sstevel@tonic-gate #define ACPI_NUM_GPE 256 7047c478bd9Sstevel@tonic-gate 7057c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE 0 7067c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISABLE 1 7077c478bd9Sstevel@tonic-gate 7087c478bd9Sstevel@tonic-gate 7097c478bd9Sstevel@tonic-gate /* 7107c478bd9Sstevel@tonic-gate * GPE info flags - Per GPE 7117c478bd9Sstevel@tonic-gate * +-+-+-+---+---+-+ 7127c478bd9Sstevel@tonic-gate * |7|6|5|4:3|2:1|0| 7137c478bd9Sstevel@tonic-gate * +-+-+-+---+---+-+ 7147c478bd9Sstevel@tonic-gate * | | | | | | 7157c478bd9Sstevel@tonic-gate * | | | | | +--- Interrupt type: Edge or Level Triggered 7167c478bd9Sstevel@tonic-gate * | | | | +--- Type: Wake-only, Runtime-only, or wake/runtime 7177c478bd9Sstevel@tonic-gate * | | | +--- Type of dispatch -- to method, handler, or none 7187c478bd9Sstevel@tonic-gate * | | +--- Enabled for runtime? 7197c478bd9Sstevel@tonic-gate * | +--- Enabled for wake? 7207c478bd9Sstevel@tonic-gate * +--- System state when GPE ocurred (running/waking) 7217c478bd9Sstevel@tonic-gate */ 7227c478bd9Sstevel@tonic-gate #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x01 7237c478bd9Sstevel@tonic-gate #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x01 7247c478bd9Sstevel@tonic-gate #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 7257c478bd9Sstevel@tonic-gate 7267c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_MASK (UINT8) 0x06 7277c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE_RUN (UINT8) 0x06 7287c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE (UINT8) 0x02 7297c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_RUNTIME (UINT8) 0x04 /* Default */ 7307c478bd9Sstevel@tonic-gate 7317c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x18 7327c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x08 7337c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x10 7347c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_NOT_USED (UINT8) 0x00 /* Default */ 7357c478bd9Sstevel@tonic-gate 7367c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLE_MASK (UINT8) 0x20 7377c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLED (UINT8) 0x20 7387c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_DISABLED (UINT8) 0x00 /* Default */ 7397c478bd9Sstevel@tonic-gate 7407c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLE_MASK (UINT8) 0x40 7417c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLED (UINT8) 0x40 7427c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_DISABLED (UINT8) 0x00 /* Default */ 7437c478bd9Sstevel@tonic-gate 7447c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE_MASK (UINT8) 0x60 /* Both run/wake */ 7457c478bd9Sstevel@tonic-gate 7467c478bd9Sstevel@tonic-gate #define ACPI_GPE_SYSTEM_MASK (UINT8) 0x80 7477c478bd9Sstevel@tonic-gate #define ACPI_GPE_SYSTEM_RUNNING (UINT8) 0x80 7487c478bd9Sstevel@tonic-gate #define ACPI_GPE_SYSTEM_WAKING (UINT8) 0x00 7497c478bd9Sstevel@tonic-gate 7507c478bd9Sstevel@tonic-gate /* 7517c478bd9Sstevel@tonic-gate * Flags for GPE and Lock interfaces 7527c478bd9Sstevel@tonic-gate */ 7537c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_ENABLE 0x2 /* AcpiGpeEnable */ 7547c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_DISABLE 0x2 /* AcpiGpeDisable */ 7557c478bd9Sstevel@tonic-gate 7567c478bd9Sstevel@tonic-gate #define ACPI_NOT_ISR 0x1 7577c478bd9Sstevel@tonic-gate #define ACPI_ISR 0x0 7587c478bd9Sstevel@tonic-gate 7597c478bd9Sstevel@tonic-gate 7607c478bd9Sstevel@tonic-gate /* Notify types */ 7617c478bd9Sstevel@tonic-gate 7627c478bd9Sstevel@tonic-gate #define ACPI_SYSTEM_NOTIFY 0x1 7637c478bd9Sstevel@tonic-gate #define ACPI_DEVICE_NOTIFY 0x2 7647c478bd9Sstevel@tonic-gate #define ACPI_ALL_NOTIFY 0x3 7657c478bd9Sstevel@tonic-gate #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 7667c478bd9Sstevel@tonic-gate 7677c478bd9Sstevel@tonic-gate #define ACPI_MAX_SYS_NOTIFY 0x7f 7687c478bd9Sstevel@tonic-gate 7697c478bd9Sstevel@tonic-gate 7707c478bd9Sstevel@tonic-gate /* Address Space (Operation Region) Types */ 7717c478bd9Sstevel@tonic-gate 7727c478bd9Sstevel@tonic-gate typedef UINT8 ACPI_ADR_SPACE_TYPE; 7737c478bd9Sstevel@tonic-gate 7747c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 7757c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 7767c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 7777c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 7787c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 7797c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 7807c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 7817c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7 7827c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127 7837c478bd9Sstevel@tonic-gate 7847c478bd9Sstevel@tonic-gate 7857c478bd9Sstevel@tonic-gate /* 7867c478bd9Sstevel@tonic-gate * BitRegister IDs 7877c478bd9Sstevel@tonic-gate * These are bitfields defined within the full ACPI registers 7887c478bd9Sstevel@tonic-gate */ 7897c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_STATUS 0x00 7907c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 7917c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 7927c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 7937c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 7947c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 7957c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_STATUS 0x06 7967c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 7977c478bd9Sstevel@tonic-gate 7987c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_ENABLE 0x08 7997c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 8007c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 8017c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 8027c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 8037c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_ENABLE 0x0D 8047c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0E 8057c478bd9Sstevel@tonic-gate 8067c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SCI_ENABLE 0x0F 8077c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_RLD 0x10 8087c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x11 8097c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_TYPE_A 0x12 8107c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_TYPE_B 0x13 8117c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_ENABLE 0x14 8127c478bd9Sstevel@tonic-gate 8137c478bd9Sstevel@tonic-gate #define ACPI_BITREG_ARB_DISABLE 0x15 8147c478bd9Sstevel@tonic-gate 8157c478bd9Sstevel@tonic-gate #define ACPI_BITREG_MAX 0x15 8167c478bd9Sstevel@tonic-gate #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 8177c478bd9Sstevel@tonic-gate 8187c478bd9Sstevel@tonic-gate 8197c478bd9Sstevel@tonic-gate /* 8207c478bd9Sstevel@tonic-gate * External ACPI object definition 8217c478bd9Sstevel@tonic-gate */ 8227c478bd9Sstevel@tonic-gate typedef union acpi_object 8237c478bd9Sstevel@tonic-gate { 8247c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 8257c478bd9Sstevel@tonic-gate struct 8267c478bd9Sstevel@tonic-gate { 8277c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8287c478bd9Sstevel@tonic-gate ACPI_INTEGER Value; /* The actual number */ 8297c478bd9Sstevel@tonic-gate } Integer; 8307c478bd9Sstevel@tonic-gate 8317c478bd9Sstevel@tonic-gate struct 8327c478bd9Sstevel@tonic-gate { 8337c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8347c478bd9Sstevel@tonic-gate UINT32 Length; /* # of bytes in string, excluding trailing null */ 8357c478bd9Sstevel@tonic-gate char *Pointer; /* points to the string value */ 8367c478bd9Sstevel@tonic-gate } String; 8377c478bd9Sstevel@tonic-gate 8387c478bd9Sstevel@tonic-gate struct 8397c478bd9Sstevel@tonic-gate { 8407c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8417c478bd9Sstevel@tonic-gate UINT32 Length; /* # of bytes in buffer */ 8427c478bd9Sstevel@tonic-gate UINT8 *Pointer; /* points to the buffer */ 8437c478bd9Sstevel@tonic-gate } Buffer; 8447c478bd9Sstevel@tonic-gate 8457c478bd9Sstevel@tonic-gate struct 8467c478bd9Sstevel@tonic-gate { 8477c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8487c478bd9Sstevel@tonic-gate UINT32 Fill1; 8497c478bd9Sstevel@tonic-gate ACPI_HANDLE Handle; /* object reference */ 8507c478bd9Sstevel@tonic-gate } Reference; 8517c478bd9Sstevel@tonic-gate 8527c478bd9Sstevel@tonic-gate struct 8537c478bd9Sstevel@tonic-gate { 8547c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8557c478bd9Sstevel@tonic-gate UINT32 Count; /* # of elements in package */ 8567c478bd9Sstevel@tonic-gate union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 8577c478bd9Sstevel@tonic-gate } Package; 8587c478bd9Sstevel@tonic-gate 8597c478bd9Sstevel@tonic-gate struct 8607c478bd9Sstevel@tonic-gate { 8617c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8627c478bd9Sstevel@tonic-gate UINT32 ProcId; 8637c478bd9Sstevel@tonic-gate ACPI_IO_ADDRESS PblkAddress; 8647c478bd9Sstevel@tonic-gate UINT32 PblkLength; 8657c478bd9Sstevel@tonic-gate } Processor; 8667c478bd9Sstevel@tonic-gate 8677c478bd9Sstevel@tonic-gate struct 8687c478bd9Sstevel@tonic-gate { 8697c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; 8707c478bd9Sstevel@tonic-gate UINT32 SystemLevel; 8717c478bd9Sstevel@tonic-gate UINT32 ResourceOrder; 8727c478bd9Sstevel@tonic-gate } PowerResource; 8737c478bd9Sstevel@tonic-gate 8747c478bd9Sstevel@tonic-gate } ACPI_OBJECT; 8757c478bd9Sstevel@tonic-gate 8767c478bd9Sstevel@tonic-gate 8777c478bd9Sstevel@tonic-gate /* 8787c478bd9Sstevel@tonic-gate * List of objects, used as a parameter list for control method evaluation 8797c478bd9Sstevel@tonic-gate */ 8807c478bd9Sstevel@tonic-gate typedef struct acpi_object_list 8817c478bd9Sstevel@tonic-gate { 8827c478bd9Sstevel@tonic-gate UINT32 Count; 8837c478bd9Sstevel@tonic-gate ACPI_OBJECT *Pointer; 8847c478bd9Sstevel@tonic-gate 8857c478bd9Sstevel@tonic-gate } ACPI_OBJECT_LIST; 8867c478bd9Sstevel@tonic-gate 8877c478bd9Sstevel@tonic-gate 8887c478bd9Sstevel@tonic-gate /* 8897c478bd9Sstevel@tonic-gate * Miscellaneous common Data Structures used by the interfaces 8907c478bd9Sstevel@tonic-gate */ 8917c478bd9Sstevel@tonic-gate #define ACPI_NO_BUFFER 0 8927c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) 8937c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) 8947c478bd9Sstevel@tonic-gate 8957c478bd9Sstevel@tonic-gate typedef struct acpi_buffer 8967c478bd9Sstevel@tonic-gate { 8977c478bd9Sstevel@tonic-gate ACPI_SIZE Length; /* Length in bytes of the buffer */ 8987c478bd9Sstevel@tonic-gate void *Pointer; /* pointer to buffer */ 8997c478bd9Sstevel@tonic-gate 9007c478bd9Sstevel@tonic-gate } ACPI_BUFFER; 9017c478bd9Sstevel@tonic-gate 9027c478bd9Sstevel@tonic-gate 9037c478bd9Sstevel@tonic-gate /* 9047c478bd9Sstevel@tonic-gate * NameType for AcpiGetName 9057c478bd9Sstevel@tonic-gate */ 9067c478bd9Sstevel@tonic-gate #define ACPI_FULL_PATHNAME 0 9077c478bd9Sstevel@tonic-gate #define ACPI_SINGLE_NAME 1 9087c478bd9Sstevel@tonic-gate #define ACPI_NAME_TYPE_MAX 1 9097c478bd9Sstevel@tonic-gate 9107c478bd9Sstevel@tonic-gate 9117c478bd9Sstevel@tonic-gate /* 9127c478bd9Sstevel@tonic-gate * Structure and flags for AcpiGetSystemInfo 9137c478bd9Sstevel@tonic-gate */ 9147c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_UNKNOWN 0x0000 9157c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_ACPI 0x0001 9167c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_LEGACY 0x0002 9177c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODES_MASK 0x0003 9187c478bd9Sstevel@tonic-gate 9197c478bd9Sstevel@tonic-gate 9207c478bd9Sstevel@tonic-gate /* 9217c478bd9Sstevel@tonic-gate * ACPI Table Info. One per ACPI table _type_ 9227c478bd9Sstevel@tonic-gate */ 9237c478bd9Sstevel@tonic-gate typedef struct acpi_table_info 9247c478bd9Sstevel@tonic-gate { 9257c478bd9Sstevel@tonic-gate UINT32 Count; 9267c478bd9Sstevel@tonic-gate 9277c478bd9Sstevel@tonic-gate } ACPI_TABLE_INFO; 9287c478bd9Sstevel@tonic-gate 9297c478bd9Sstevel@tonic-gate 9307c478bd9Sstevel@tonic-gate /* 9317c478bd9Sstevel@tonic-gate * System info returned by AcpiGetSystemInfo() 9327c478bd9Sstevel@tonic-gate */ 9337c478bd9Sstevel@tonic-gate typedef struct acpi_system_info 9347c478bd9Sstevel@tonic-gate { 9357c478bd9Sstevel@tonic-gate UINT32 AcpiCaVersion; 9367c478bd9Sstevel@tonic-gate UINT32 Flags; 9377c478bd9Sstevel@tonic-gate UINT32 TimerResolution; 9387c478bd9Sstevel@tonic-gate UINT32 Reserved1; 9397c478bd9Sstevel@tonic-gate UINT32 Reserved2; 9407c478bd9Sstevel@tonic-gate UINT32 DebugLevel; 9417c478bd9Sstevel@tonic-gate UINT32 DebugLayer; 9427c478bd9Sstevel@tonic-gate UINT32 NumTableTypes; 9437c478bd9Sstevel@tonic-gate ACPI_TABLE_INFO TableInfo [NUM_ACPI_TABLE_TYPES]; 9447c478bd9Sstevel@tonic-gate 9457c478bd9Sstevel@tonic-gate } ACPI_SYSTEM_INFO; 9467c478bd9Sstevel@tonic-gate 9477c478bd9Sstevel@tonic-gate 9487c478bd9Sstevel@tonic-gate /* 9497c478bd9Sstevel@tonic-gate * Types specific to the OS service interfaces 9507c478bd9Sstevel@tonic-gate */ 9517c478bd9Sstevel@tonic-gate typedef UINT32 9527c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 9537c478bd9Sstevel@tonic-gate void *Context); 9547c478bd9Sstevel@tonic-gate 9557c478bd9Sstevel@tonic-gate typedef void 9567c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 9577c478bd9Sstevel@tonic-gate void *Context); 9587c478bd9Sstevel@tonic-gate 9597c478bd9Sstevel@tonic-gate /* 9607c478bd9Sstevel@tonic-gate * Various handlers and callback procedures 9617c478bd9Sstevel@tonic-gate */ 9627c478bd9Sstevel@tonic-gate typedef 9637c478bd9Sstevel@tonic-gate UINT32 (*ACPI_EVENT_HANDLER) ( 9647c478bd9Sstevel@tonic-gate void *Context); 9657c478bd9Sstevel@tonic-gate 9667c478bd9Sstevel@tonic-gate typedef 9677c478bd9Sstevel@tonic-gate void (*ACPI_NOTIFY_HANDLER) ( 9687c478bd9Sstevel@tonic-gate ACPI_HANDLE Device, 9697c478bd9Sstevel@tonic-gate UINT32 Value, 9707c478bd9Sstevel@tonic-gate void *Context); 9717c478bd9Sstevel@tonic-gate 9727c478bd9Sstevel@tonic-gate typedef 9737c478bd9Sstevel@tonic-gate void (*ACPI_OBJECT_HANDLER) ( 9747c478bd9Sstevel@tonic-gate ACPI_HANDLE Object, 9757c478bd9Sstevel@tonic-gate UINT32 Function, 9767c478bd9Sstevel@tonic-gate void *Data); 9777c478bd9Sstevel@tonic-gate 9787c478bd9Sstevel@tonic-gate typedef 9797c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_INIT_HANDLER) ( 9807c478bd9Sstevel@tonic-gate ACPI_HANDLE Object, 9817c478bd9Sstevel@tonic-gate UINT32 Function); 9827c478bd9Sstevel@tonic-gate 9837c478bd9Sstevel@tonic-gate #define ACPI_INIT_DEVICE_INI 1 9847c478bd9Sstevel@tonic-gate 9857c478bd9Sstevel@tonic-gate typedef 9867c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 9877c478bd9Sstevel@tonic-gate ACPI_STATUS AmlStatus, 9887c478bd9Sstevel@tonic-gate ACPI_NAME Name, 9897c478bd9Sstevel@tonic-gate UINT16 Opcode, 9907c478bd9Sstevel@tonic-gate UINT32 AmlOffset, 9917c478bd9Sstevel@tonic-gate void *Context); 9927c478bd9Sstevel@tonic-gate 9937c478bd9Sstevel@tonic-gate 9947c478bd9Sstevel@tonic-gate /* Address Spaces (For Operation Regions) */ 9957c478bd9Sstevel@tonic-gate 9967c478bd9Sstevel@tonic-gate typedef 9977c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 9987c478bd9Sstevel@tonic-gate UINT32 Function, 9997c478bd9Sstevel@tonic-gate ACPI_PHYSICAL_ADDRESS Address, 10007c478bd9Sstevel@tonic-gate UINT32 BitWidth, 10017c478bd9Sstevel@tonic-gate ACPI_INTEGER *Value, 10027c478bd9Sstevel@tonic-gate void *HandlerContext, 10037c478bd9Sstevel@tonic-gate void *RegionContext); 10047c478bd9Sstevel@tonic-gate 10057c478bd9Sstevel@tonic-gate #define ACPI_DEFAULT_HANDLER NULL 10067c478bd9Sstevel@tonic-gate 10077c478bd9Sstevel@tonic-gate 10087c478bd9Sstevel@tonic-gate typedef 10097c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 10107c478bd9Sstevel@tonic-gate ACPI_HANDLE RegionHandle, 10117c478bd9Sstevel@tonic-gate UINT32 Function, 10127c478bd9Sstevel@tonic-gate void *HandlerContext, 10137c478bd9Sstevel@tonic-gate void **RegionContext); 10147c478bd9Sstevel@tonic-gate 10157c478bd9Sstevel@tonic-gate #define ACPI_REGION_ACTIVATE 0 10167c478bd9Sstevel@tonic-gate #define ACPI_REGION_DEACTIVATE 1 10177c478bd9Sstevel@tonic-gate 10187c478bd9Sstevel@tonic-gate typedef 10197c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_WALK_CALLBACK) ( 10207c478bd9Sstevel@tonic-gate ACPI_HANDLE ObjHandle, 10217c478bd9Sstevel@tonic-gate UINT32 NestingLevel, 10227c478bd9Sstevel@tonic-gate void *Context, 10237c478bd9Sstevel@tonic-gate void **ReturnValue); 10247c478bd9Sstevel@tonic-gate 10257c478bd9Sstevel@tonic-gate 10267c478bd9Sstevel@tonic-gate /* Interrupt handler return values */ 10277c478bd9Sstevel@tonic-gate 10287c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_NOT_HANDLED 0x00 10297c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_HANDLED 0x01 10307c478bd9Sstevel@tonic-gate 10317c478bd9Sstevel@tonic-gate 10327c478bd9Sstevel@tonic-gate /* Common string version of device HIDs and UIDs */ 10337c478bd9Sstevel@tonic-gate 10347c478bd9Sstevel@tonic-gate typedef struct acpi_device_id 10357c478bd9Sstevel@tonic-gate { 10367c478bd9Sstevel@tonic-gate char Value[ACPI_DEVICE_ID_LENGTH]; 10377c478bd9Sstevel@tonic-gate 10387c478bd9Sstevel@tonic-gate } ACPI_DEVICE_ID; 10397c478bd9Sstevel@tonic-gate 10407c478bd9Sstevel@tonic-gate /* Common string version of device CIDs */ 10417c478bd9Sstevel@tonic-gate 10427c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id 10437c478bd9Sstevel@tonic-gate { 10447c478bd9Sstevel@tonic-gate char Value[ACPI_MAX_CID_LENGTH]; 10457c478bd9Sstevel@tonic-gate 10467c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID; 10477c478bd9Sstevel@tonic-gate 10487c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id_list 10497c478bd9Sstevel@tonic-gate { 10507c478bd9Sstevel@tonic-gate UINT32 Count; 10517c478bd9Sstevel@tonic-gate UINT32 Size; 10527c478bd9Sstevel@tonic-gate ACPI_COMPATIBLE_ID Id[1]; 10537c478bd9Sstevel@tonic-gate 10547c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID_LIST; 10557c478bd9Sstevel@tonic-gate 10567c478bd9Sstevel@tonic-gate 10577c478bd9Sstevel@tonic-gate /* Structure and flags for AcpiGetObjectInfo */ 10587c478bd9Sstevel@tonic-gate 10597c478bd9Sstevel@tonic-gate #define ACPI_VALID_STA 0x0001 10607c478bd9Sstevel@tonic-gate #define ACPI_VALID_ADR 0x0002 10617c478bd9Sstevel@tonic-gate #define ACPI_VALID_HID 0x0004 10627c478bd9Sstevel@tonic-gate #define ACPI_VALID_UID 0x0008 10637c478bd9Sstevel@tonic-gate #define ACPI_VALID_CID 0x0010 10647c478bd9Sstevel@tonic-gate #define ACPI_VALID_SXDS 0x0020 10657c478bd9Sstevel@tonic-gate 1066*30082d0cSmyers /* Flags for _STA method */ 1067*30082d0cSmyers 1068*30082d0cSmyers #define ACPI_STA_DEVICE_PRESENT 0x01 1069*30082d0cSmyers #define ACPI_STA_DEVICE_ENABLED 0x02 1070*30082d0cSmyers #define ACPI_STA_DEVICE_UI 0x04 1071*30082d0cSmyers #define ACPI_STA_DEVICE_OK 0x08 1072*30082d0cSmyers #define ACPI_STA_BATTERY_PRESENT 0x10 1073*30082d0cSmyers 10747c478bd9Sstevel@tonic-gate 10757c478bd9Sstevel@tonic-gate #define ACPI_COMMON_OBJ_INFO \ 10767c478bd9Sstevel@tonic-gate ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ 10777c478bd9Sstevel@tonic-gate ACPI_NAME Name /* ACPI object Name */ 10787c478bd9Sstevel@tonic-gate 10797c478bd9Sstevel@tonic-gate 10807c478bd9Sstevel@tonic-gate typedef struct acpi_obj_info_header 10817c478bd9Sstevel@tonic-gate { 10827c478bd9Sstevel@tonic-gate ACPI_COMMON_OBJ_INFO; 10837c478bd9Sstevel@tonic-gate 10847c478bd9Sstevel@tonic-gate } ACPI_OBJ_INFO_HEADER; 10857c478bd9Sstevel@tonic-gate 10867c478bd9Sstevel@tonic-gate 10877c478bd9Sstevel@tonic-gate /* Structure returned from Get Object Info */ 10887c478bd9Sstevel@tonic-gate 10897c478bd9Sstevel@tonic-gate typedef struct acpi_device_info 10907c478bd9Sstevel@tonic-gate { 10917c478bd9Sstevel@tonic-gate ACPI_COMMON_OBJ_INFO; 10927c478bd9Sstevel@tonic-gate 10937c478bd9Sstevel@tonic-gate UINT32 Valid; /* Indicates which fields below are valid */ 10947c478bd9Sstevel@tonic-gate UINT32 CurrentStatus; /* _STA value */ 10957c478bd9Sstevel@tonic-gate ACPI_INTEGER Address; /* _ADR value if any */ 10967c478bd9Sstevel@tonic-gate ACPI_DEVICE_ID HardwareId; /* _HID value if any */ 10977c478bd9Sstevel@tonic-gate ACPI_DEVICE_ID UniqueId; /* _UID value if any */ 10987c478bd9Sstevel@tonic-gate UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 10997c478bd9Sstevel@tonic-gate ACPI_COMPATIBLE_ID_LIST CompatibilityId; /* List of _CIDs if any */ 11007c478bd9Sstevel@tonic-gate 11017c478bd9Sstevel@tonic-gate } ACPI_DEVICE_INFO; 11027c478bd9Sstevel@tonic-gate 11037c478bd9Sstevel@tonic-gate 11047c478bd9Sstevel@tonic-gate /* Context structs for address space handlers */ 11057c478bd9Sstevel@tonic-gate 11067c478bd9Sstevel@tonic-gate typedef struct acpi_pci_id 11077c478bd9Sstevel@tonic-gate { 11087c478bd9Sstevel@tonic-gate UINT16 Segment; 11097c478bd9Sstevel@tonic-gate UINT16 Bus; 11107c478bd9Sstevel@tonic-gate UINT16 Device; 11117c478bd9Sstevel@tonic-gate UINT16 Function; 11127c478bd9Sstevel@tonic-gate 11137c478bd9Sstevel@tonic-gate } ACPI_PCI_ID; 11147c478bd9Sstevel@tonic-gate 11157c478bd9Sstevel@tonic-gate 11167c478bd9Sstevel@tonic-gate typedef struct acpi_mem_space_context 11177c478bd9Sstevel@tonic-gate { 11187c478bd9Sstevel@tonic-gate UINT32 Length; 11197c478bd9Sstevel@tonic-gate ACPI_PHYSICAL_ADDRESS Address; 11207c478bd9Sstevel@tonic-gate ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 11217c478bd9Sstevel@tonic-gate UINT8 *MappedLogicalAddress; 11227c478bd9Sstevel@tonic-gate ACPI_SIZE MappedLength; 11237c478bd9Sstevel@tonic-gate 11247c478bd9Sstevel@tonic-gate } ACPI_MEM_SPACE_CONTEXT; 11257c478bd9Sstevel@tonic-gate 11267c478bd9Sstevel@tonic-gate 11277c478bd9Sstevel@tonic-gate /* 11287c478bd9Sstevel@tonic-gate * Definitions for Resource Attributes 11297c478bd9Sstevel@tonic-gate */ 1130*30082d0cSmyers typedef UINT16 ACPI_RS_LENGTH; /* Resource Length field is fixed at 16 bits */ 1131*30082d0cSmyers typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ 11327c478bd9Sstevel@tonic-gate 11337c478bd9Sstevel@tonic-gate /* 11347c478bd9Sstevel@tonic-gate * Memory Attributes 11357c478bd9Sstevel@tonic-gate */ 11367c478bd9Sstevel@tonic-gate #define ACPI_READ_ONLY_MEMORY (UINT8) 0x00 11377c478bd9Sstevel@tonic-gate #define ACPI_READ_WRITE_MEMORY (UINT8) 0x01 11387c478bd9Sstevel@tonic-gate 11397c478bd9Sstevel@tonic-gate #define ACPI_NON_CACHEABLE_MEMORY (UINT8) 0x00 11407c478bd9Sstevel@tonic-gate #define ACPI_CACHABLE_MEMORY (UINT8) 0x01 11417c478bd9Sstevel@tonic-gate #define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02 11427c478bd9Sstevel@tonic-gate #define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03 11437c478bd9Sstevel@tonic-gate 11447c478bd9Sstevel@tonic-gate /* 11457c478bd9Sstevel@tonic-gate * IO Attributes 11467c478bd9Sstevel@tonic-gate * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. 11477c478bd9Sstevel@tonic-gate * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. 11487c478bd9Sstevel@tonic-gate */ 11497c478bd9Sstevel@tonic-gate #define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01 11507c478bd9Sstevel@tonic-gate #define ACPI_ISA_ONLY_RANGES (UINT8) 0x02 11517c478bd9Sstevel@tonic-gate #define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) 11527c478bd9Sstevel@tonic-gate 1153*30082d0cSmyers /* Type of translation - 1=Sparse, 0=Dense */ 1154*30082d0cSmyers 1155*30082d0cSmyers #define ACPI_SPARSE_TRANSLATION (UINT8) 0x01 11567c478bd9Sstevel@tonic-gate 11577c478bd9Sstevel@tonic-gate /* 11587c478bd9Sstevel@tonic-gate * IO Port Descriptor Decode 11597c478bd9Sstevel@tonic-gate */ 11607c478bd9Sstevel@tonic-gate #define ACPI_DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ 11617c478bd9Sstevel@tonic-gate #define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ 11627c478bd9Sstevel@tonic-gate 11637c478bd9Sstevel@tonic-gate /* 11647c478bd9Sstevel@tonic-gate * IRQ Attributes 11657c478bd9Sstevel@tonic-gate */ 1166*30082d0cSmyers #define ACPI_LEVEL_SENSITIVE (UINT8) 0x00 1167*30082d0cSmyers #define ACPI_EDGE_SENSITIVE (UINT8) 0x01 11687c478bd9Sstevel@tonic-gate 11697c478bd9Sstevel@tonic-gate #define ACPI_ACTIVE_HIGH (UINT8) 0x00 11707c478bd9Sstevel@tonic-gate #define ACPI_ACTIVE_LOW (UINT8) 0x01 11717c478bd9Sstevel@tonic-gate 11727c478bd9Sstevel@tonic-gate #define ACPI_EXCLUSIVE (UINT8) 0x00 11737c478bd9Sstevel@tonic-gate #define ACPI_SHARED (UINT8) 0x01 11747c478bd9Sstevel@tonic-gate 11757c478bd9Sstevel@tonic-gate /* 11767c478bd9Sstevel@tonic-gate * DMA Attributes 11777c478bd9Sstevel@tonic-gate */ 11787c478bd9Sstevel@tonic-gate #define ACPI_COMPATIBILITY (UINT8) 0x00 11797c478bd9Sstevel@tonic-gate #define ACPI_TYPE_A (UINT8) 0x01 11807c478bd9Sstevel@tonic-gate #define ACPI_TYPE_B (UINT8) 0x02 11817c478bd9Sstevel@tonic-gate #define ACPI_TYPE_F (UINT8) 0x03 11827c478bd9Sstevel@tonic-gate 11837c478bd9Sstevel@tonic-gate #define ACPI_NOT_BUS_MASTER (UINT8) 0x00 11847c478bd9Sstevel@tonic-gate #define ACPI_BUS_MASTER (UINT8) 0x01 11857c478bd9Sstevel@tonic-gate 11867c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_8 (UINT8) 0x00 11877c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_8_16 (UINT8) 0x01 11887c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_16 (UINT8) 0x02 11897c478bd9Sstevel@tonic-gate 11907c478bd9Sstevel@tonic-gate /* 11917c478bd9Sstevel@tonic-gate * Start Dependent Functions Priority definitions 11927c478bd9Sstevel@tonic-gate */ 11937c478bd9Sstevel@tonic-gate #define ACPI_GOOD_CONFIGURATION (UINT8) 0x00 11947c478bd9Sstevel@tonic-gate #define ACPI_ACCEPTABLE_CONFIGURATION (UINT8) 0x01 11957c478bd9Sstevel@tonic-gate #define ACPI_SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 11967c478bd9Sstevel@tonic-gate 11977c478bd9Sstevel@tonic-gate /* 11987c478bd9Sstevel@tonic-gate * 16, 32 and 64-bit Address Descriptor resource types 11997c478bd9Sstevel@tonic-gate */ 12007c478bd9Sstevel@tonic-gate #define ACPI_MEMORY_RANGE (UINT8) 0x00 12017c478bd9Sstevel@tonic-gate #define ACPI_IO_RANGE (UINT8) 0x01 12027c478bd9Sstevel@tonic-gate #define ACPI_BUS_NUMBER_RANGE (UINT8) 0x02 12037c478bd9Sstevel@tonic-gate 12047c478bd9Sstevel@tonic-gate #define ACPI_ADDRESS_NOT_FIXED (UINT8) 0x00 12057c478bd9Sstevel@tonic-gate #define ACPI_ADDRESS_FIXED (UINT8) 0x01 12067c478bd9Sstevel@tonic-gate 12077c478bd9Sstevel@tonic-gate #define ACPI_POS_DECODE (UINT8) 0x00 12087c478bd9Sstevel@tonic-gate #define ACPI_SUB_DECODE (UINT8) 0x01 12097c478bd9Sstevel@tonic-gate 12107c478bd9Sstevel@tonic-gate #define ACPI_PRODUCER (UINT8) 0x00 12117c478bd9Sstevel@tonic-gate #define ACPI_CONSUMER (UINT8) 0x01 12127c478bd9Sstevel@tonic-gate 12137c478bd9Sstevel@tonic-gate 1214*30082d0cSmyers /* 1215*30082d0cSmyers * If possible, pack the following structures to byte alignment 1216*30082d0cSmyers */ 1217*30082d0cSmyers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 1218*30082d0cSmyers #pragma pack(1) 1219*30082d0cSmyers #endif 1220*30082d0cSmyers 1221*30082d0cSmyers /* UUID data structures for use in vendor-defined resource descriptors */ 1222*30082d0cSmyers 1223*30082d0cSmyers typedef struct acpi_uuid 1224*30082d0cSmyers { 1225*30082d0cSmyers UINT8 Data[ACPI_UUID_LENGTH]; 1226*30082d0cSmyers } ACPI_UUID; 1227*30082d0cSmyers 1228*30082d0cSmyers typedef struct acpi_vendor_uuid 1229*30082d0cSmyers { 1230*30082d0cSmyers UINT8 Subtype; 1231*30082d0cSmyers UINT8 Data[ACPI_UUID_LENGTH]; 1232*30082d0cSmyers 1233*30082d0cSmyers } ACPI_VENDOR_UUID; 1234*30082d0cSmyers 12357c478bd9Sstevel@tonic-gate /* 12367c478bd9Sstevel@tonic-gate * Structures used to describe device resources 12377c478bd9Sstevel@tonic-gate */ 12387c478bd9Sstevel@tonic-gate typedef struct acpi_resource_irq 12397c478bd9Sstevel@tonic-gate { 1240*30082d0cSmyers UINT8 Triggering; 1241*30082d0cSmyers UINT8 Polarity; 1242*30082d0cSmyers UINT8 Sharable; 1243*30082d0cSmyers UINT8 InterruptCount; 1244*30082d0cSmyers UINT8 Interrupts[1]; 12457c478bd9Sstevel@tonic-gate 12467c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_IRQ; 12477c478bd9Sstevel@tonic-gate 1248186507a7Smyers 12497c478bd9Sstevel@tonic-gate typedef struct ACPI_RESOURCE_DMA 12507c478bd9Sstevel@tonic-gate { 1251*30082d0cSmyers UINT8 Type; 1252*30082d0cSmyers UINT8 BusMaster; 1253*30082d0cSmyers UINT8 Transfer; 1254*30082d0cSmyers UINT8 ChannelCount; 1255*30082d0cSmyers UINT8 Channels[1]; 12567c478bd9Sstevel@tonic-gate 12577c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_DMA; 12587c478bd9Sstevel@tonic-gate 1259186507a7Smyers 1260186507a7Smyers typedef struct acpi_resource_start_dependent 12617c478bd9Sstevel@tonic-gate { 1262*30082d0cSmyers UINT8 CompatibilityPriority; 1263*30082d0cSmyers UINT8 PerformanceRobustness; 12647c478bd9Sstevel@tonic-gate 1265186507a7Smyers } ACPI_RESOURCE_START_DEPENDENT; 1266186507a7Smyers 12677c478bd9Sstevel@tonic-gate 12687c478bd9Sstevel@tonic-gate /* 12697c478bd9Sstevel@tonic-gate * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not 12707c478bd9Sstevel@tonic-gate * needed because it has no fields 12717c478bd9Sstevel@tonic-gate */ 12727c478bd9Sstevel@tonic-gate 1273186507a7Smyers 12747c478bd9Sstevel@tonic-gate typedef struct acpi_resource_io 12757c478bd9Sstevel@tonic-gate { 1276*30082d0cSmyers UINT8 IoDecode; 1277*30082d0cSmyers UINT8 Alignment; 1278*30082d0cSmyers UINT8 AddressLength; 1279*30082d0cSmyers UINT16 Minimum; 1280*30082d0cSmyers UINT16 Maximum; 12817c478bd9Sstevel@tonic-gate 12827c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_IO; 12837c478bd9Sstevel@tonic-gate 12847c478bd9Sstevel@tonic-gate typedef struct acpi_resource_fixed_io 12857c478bd9Sstevel@tonic-gate { 1286*30082d0cSmyers UINT16 Address; 1287*30082d0cSmyers UINT8 AddressLength; 12887c478bd9Sstevel@tonic-gate 12897c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_FIXED_IO; 12907c478bd9Sstevel@tonic-gate 12917c478bd9Sstevel@tonic-gate typedef struct acpi_resource_vendor 12927c478bd9Sstevel@tonic-gate { 1293*30082d0cSmyers UINT16 ByteLength; 1294186507a7Smyers UINT8 ByteData[1]; 12957c478bd9Sstevel@tonic-gate 12967c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_VENDOR; 12977c478bd9Sstevel@tonic-gate 1298*30082d0cSmyers /* Vendor resource with UUID info (introduced in ACPI 3.0) */ 1299*30082d0cSmyers 1300*30082d0cSmyers typedef struct acpi_resource_vendor_typed 1301*30082d0cSmyers { 1302*30082d0cSmyers UINT16 ByteLength; 1303*30082d0cSmyers UINT8 UuidSubtype; 1304*30082d0cSmyers UINT8 Uuid[ACPI_UUID_LENGTH]; 1305*30082d0cSmyers UINT8 ByteData[1]; 1306*30082d0cSmyers 1307*30082d0cSmyers } ACPI_RESOURCE_VENDOR_TYPED; 1308*30082d0cSmyers 13097c478bd9Sstevel@tonic-gate typedef struct acpi_resource_end_tag 13107c478bd9Sstevel@tonic-gate { 13117c478bd9Sstevel@tonic-gate UINT8 Checksum; 13127c478bd9Sstevel@tonic-gate 13137c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_END_TAG; 13147c478bd9Sstevel@tonic-gate 1315186507a7Smyers typedef struct acpi_resource_memory24 13167c478bd9Sstevel@tonic-gate { 1317*30082d0cSmyers UINT8 WriteProtect; 1318*30082d0cSmyers UINT16 Minimum; 1319*30082d0cSmyers UINT16 Maximum; 1320*30082d0cSmyers UINT16 Alignment; 1321*30082d0cSmyers UINT16 AddressLength; 13227c478bd9Sstevel@tonic-gate 1323186507a7Smyers } ACPI_RESOURCE_MEMORY24; 13247c478bd9Sstevel@tonic-gate 1325186507a7Smyers typedef struct acpi_resource_memory32 13267c478bd9Sstevel@tonic-gate { 1327*30082d0cSmyers UINT8 WriteProtect; 1328186507a7Smyers UINT32 Minimum; 1329186507a7Smyers UINT32 Maximum; 13307c478bd9Sstevel@tonic-gate UINT32 Alignment; 1331186507a7Smyers UINT32 AddressLength; 13327c478bd9Sstevel@tonic-gate 1333186507a7Smyers } ACPI_RESOURCE_MEMORY32; 13347c478bd9Sstevel@tonic-gate 1335186507a7Smyers typedef struct acpi_resource_fixed_memory32 13367c478bd9Sstevel@tonic-gate { 1337*30082d0cSmyers UINT8 WriteProtect; 1338186507a7Smyers UINT32 Address; 1339186507a7Smyers UINT32 AddressLength; 13407c478bd9Sstevel@tonic-gate 1341186507a7Smyers } ACPI_RESOURCE_FIXED_MEMORY32; 13427c478bd9Sstevel@tonic-gate 13437c478bd9Sstevel@tonic-gate typedef struct acpi_memory_attribute 13447c478bd9Sstevel@tonic-gate { 1345*30082d0cSmyers UINT8 WriteProtect; 1346*30082d0cSmyers UINT8 Caching; 1347*30082d0cSmyers UINT8 RangeType; 1348*30082d0cSmyers UINT8 Translation; 13497c478bd9Sstevel@tonic-gate 13507c478bd9Sstevel@tonic-gate } ACPI_MEMORY_ATTRIBUTE; 13517c478bd9Sstevel@tonic-gate 13527c478bd9Sstevel@tonic-gate typedef struct acpi_io_attribute 13537c478bd9Sstevel@tonic-gate { 1354*30082d0cSmyers UINT8 RangeType; 1355*30082d0cSmyers UINT8 Translation; 1356*30082d0cSmyers UINT8 TranslationType; 1357*30082d0cSmyers UINT8 Reserved1; 13587c478bd9Sstevel@tonic-gate 13597c478bd9Sstevel@tonic-gate } ACPI_IO_ATTRIBUTE; 13607c478bd9Sstevel@tonic-gate 13617c478bd9Sstevel@tonic-gate typedef union acpi_resource_attribute 13627c478bd9Sstevel@tonic-gate { 1363*30082d0cSmyers ACPI_MEMORY_ATTRIBUTE Mem; 13647c478bd9Sstevel@tonic-gate ACPI_IO_ATTRIBUTE Io; 1365*30082d0cSmyers 1366*30082d0cSmyers /* Used for the *WordSpace macros */ 1367*30082d0cSmyers 1368*30082d0cSmyers UINT8 TypeSpecific; 13697c478bd9Sstevel@tonic-gate 13707c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ATTRIBUTE; 13717c478bd9Sstevel@tonic-gate 13727c478bd9Sstevel@tonic-gate typedef struct acpi_resource_source 13737c478bd9Sstevel@tonic-gate { 1374*30082d0cSmyers UINT8 Index; 1375*30082d0cSmyers UINT16 StringLength; 13767c478bd9Sstevel@tonic-gate char *StringPtr; 13777c478bd9Sstevel@tonic-gate 13787c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_SOURCE; 13797c478bd9Sstevel@tonic-gate 1380186507a7Smyers /* Fields common to all address descriptors, 16/32/64 bit */ 1381186507a7Smyers 1382186507a7Smyers #define ACPI_RESOURCE_ADDRESS_COMMON \ 1383*30082d0cSmyers UINT8 ResourceType; \ 1384*30082d0cSmyers UINT8 ProducerConsumer; \ 1385*30082d0cSmyers UINT8 Decode; \ 1386*30082d0cSmyers UINT8 MinAddressFixed; \ 1387*30082d0cSmyers UINT8 MaxAddressFixed; \ 1388*30082d0cSmyers ACPI_RESOURCE_ATTRIBUTE Info; 1389186507a7Smyers 1390186507a7Smyers typedef struct acpi_resource_address 1391186507a7Smyers { 1392186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 1393186507a7Smyers 1394186507a7Smyers } ACPI_RESOURCE_ADDRESS; 1395186507a7Smyers 13967c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address16 13977c478bd9Sstevel@tonic-gate { 1398186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 1399*30082d0cSmyers UINT16 Granularity; 1400*30082d0cSmyers UINT16 Minimum; 1401*30082d0cSmyers UINT16 Maximum; 1402*30082d0cSmyers UINT16 TranslationOffset; 1403*30082d0cSmyers UINT16 AddressLength; 14047c478bd9Sstevel@tonic-gate ACPI_RESOURCE_SOURCE ResourceSource; 14057c478bd9Sstevel@tonic-gate 14067c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS16; 14077c478bd9Sstevel@tonic-gate 14087c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address32 14097c478bd9Sstevel@tonic-gate { 1410186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 14117c478bd9Sstevel@tonic-gate UINT32 Granularity; 1412186507a7Smyers UINT32 Minimum; 1413186507a7Smyers UINT32 Maximum; 1414186507a7Smyers UINT32 TranslationOffset; 14157c478bd9Sstevel@tonic-gate UINT32 AddressLength; 14167c478bd9Sstevel@tonic-gate ACPI_RESOURCE_SOURCE ResourceSource; 14177c478bd9Sstevel@tonic-gate 14187c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS32; 14197c478bd9Sstevel@tonic-gate 14207c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address64 14217c478bd9Sstevel@tonic-gate { 1422186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 14237c478bd9Sstevel@tonic-gate UINT64 Granularity; 1424186507a7Smyers UINT64 Minimum; 1425186507a7Smyers UINT64 Maximum; 1426186507a7Smyers UINT64 TranslationOffset; 14277c478bd9Sstevel@tonic-gate UINT64 AddressLength; 14287c478bd9Sstevel@tonic-gate ACPI_RESOURCE_SOURCE ResourceSource; 14297c478bd9Sstevel@tonic-gate 14307c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS64; 14317c478bd9Sstevel@tonic-gate 1432186507a7Smyers typedef struct acpi_resource_extended_address64 1433186507a7Smyers { 1434186507a7Smyers ACPI_RESOURCE_ADDRESS_COMMON 1435*30082d0cSmyers UINT8 RevisionID; 1436186507a7Smyers UINT64 Granularity; 1437186507a7Smyers UINT64 Minimum; 1438186507a7Smyers UINT64 Maximum; 1439186507a7Smyers UINT64 TranslationOffset; 1440186507a7Smyers UINT64 AddressLength; 1441*30082d0cSmyers UINT64 TypeSpecific; 1442186507a7Smyers 1443186507a7Smyers } ACPI_RESOURCE_EXTENDED_ADDRESS64; 1444186507a7Smyers 1445186507a7Smyers typedef struct acpi_resource_extended_irq 14467c478bd9Sstevel@tonic-gate { 1447*30082d0cSmyers UINT8 ProducerConsumer; 1448*30082d0cSmyers UINT8 Triggering; 1449*30082d0cSmyers UINT8 Polarity; 1450*30082d0cSmyers UINT8 Sharable; 1451*30082d0cSmyers UINT8 InterruptCount; 14527c478bd9Sstevel@tonic-gate ACPI_RESOURCE_SOURCE ResourceSource; 14537c478bd9Sstevel@tonic-gate UINT32 Interrupts[1]; 14547c478bd9Sstevel@tonic-gate 1455186507a7Smyers } ACPI_RESOURCE_EXTENDED_IRQ; 1456186507a7Smyers 1457186507a7Smyers typedef struct acpi_resource_generic_register 1458186507a7Smyers { 1459*30082d0cSmyers UINT8 SpaceId; 1460*30082d0cSmyers UINT8 BitWidth; 1461*30082d0cSmyers UINT8 BitOffset; 1462*30082d0cSmyers UINT8 AccessSize; 1463186507a7Smyers UINT64 Address; 1464186507a7Smyers 1465186507a7Smyers } ACPI_RESOURCE_GENERIC_REGISTER; 14667c478bd9Sstevel@tonic-gate 14677c478bd9Sstevel@tonic-gate 14687c478bd9Sstevel@tonic-gate /* ACPI_RESOURCE_TYPEs */ 14697c478bd9Sstevel@tonic-gate 1470186507a7Smyers #define ACPI_RESOURCE_TYPE_IRQ 0 1471186507a7Smyers #define ACPI_RESOURCE_TYPE_DMA 1 1472186507a7Smyers #define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 1473186507a7Smyers #define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 1474186507a7Smyers #define ACPI_RESOURCE_TYPE_IO 4 1475186507a7Smyers #define ACPI_RESOURCE_TYPE_FIXED_IO 5 1476186507a7Smyers #define ACPI_RESOURCE_TYPE_VENDOR 6 1477186507a7Smyers #define ACPI_RESOURCE_TYPE_END_TAG 7 1478186507a7Smyers #define ACPI_RESOURCE_TYPE_MEMORY24 8 1479186507a7Smyers #define ACPI_RESOURCE_TYPE_MEMORY32 9 1480186507a7Smyers #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 1481186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS16 11 1482186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS32 12 1483186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS64 13 1484186507a7Smyers #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ 1485186507a7Smyers #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 1486186507a7Smyers #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 1487186507a7Smyers #define ACPI_RESOURCE_TYPE_MAX 16 1488186507a7Smyers 14897c478bd9Sstevel@tonic-gate 14907c478bd9Sstevel@tonic-gate typedef union acpi_resource_data 14917c478bd9Sstevel@tonic-gate { 1492186507a7Smyers ACPI_RESOURCE_IRQ Irq; 1493186507a7Smyers ACPI_RESOURCE_DMA Dma; 1494186507a7Smyers ACPI_RESOURCE_START_DEPENDENT StartDpf; 1495186507a7Smyers ACPI_RESOURCE_IO Io; 1496186507a7Smyers ACPI_RESOURCE_FIXED_IO FixedIo; 1497186507a7Smyers ACPI_RESOURCE_VENDOR Vendor; 1498*30082d0cSmyers ACPI_RESOURCE_VENDOR_TYPED VendorTyped; 1499186507a7Smyers ACPI_RESOURCE_END_TAG EndTag; 1500186507a7Smyers ACPI_RESOURCE_MEMORY24 Memory24; 1501186507a7Smyers ACPI_RESOURCE_MEMORY32 Memory32; 1502186507a7Smyers ACPI_RESOURCE_FIXED_MEMORY32 FixedMemory32; 1503186507a7Smyers ACPI_RESOURCE_ADDRESS16 Address16; 1504186507a7Smyers ACPI_RESOURCE_ADDRESS32 Address32; 1505186507a7Smyers ACPI_RESOURCE_ADDRESS64 Address64; 1506186507a7Smyers ACPI_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 1507186507a7Smyers ACPI_RESOURCE_EXTENDED_IRQ ExtendedIrq; 1508186507a7Smyers ACPI_RESOURCE_GENERIC_REGISTER GenericReg; 1509186507a7Smyers 1510186507a7Smyers /* Common fields */ 1511186507a7Smyers 1512186507a7Smyers ACPI_RESOURCE_ADDRESS Address; /* Common 16/32/64 address fields */ 15137c478bd9Sstevel@tonic-gate 15147c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_DATA; 15157c478bd9Sstevel@tonic-gate 1516186507a7Smyers 15177c478bd9Sstevel@tonic-gate typedef struct acpi_resource 15187c478bd9Sstevel@tonic-gate { 1519186507a7Smyers UINT32 Type; 15207c478bd9Sstevel@tonic-gate UINT32 Length; 15217c478bd9Sstevel@tonic-gate ACPI_RESOURCE_DATA Data; 15227c478bd9Sstevel@tonic-gate 15237c478bd9Sstevel@tonic-gate } ACPI_RESOURCE; 15247c478bd9Sstevel@tonic-gate 1525*30082d0cSmyers /* restore default alignment */ 1526186507a7Smyers 1527*30082d0cSmyers #pragma pack() 15287c478bd9Sstevel@tonic-gate 15297c478bd9Sstevel@tonic-gate 1530*30082d0cSmyers #define ACPI_RS_SIZE_MIN 12 1531*30082d0cSmyers #define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ 1532*30082d0cSmyers #define ACPI_RS_SIZE(Type) (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type)) 15337c478bd9Sstevel@tonic-gate 1534*30082d0cSmyers #define ACPI_NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->Length) 15357c478bd9Sstevel@tonic-gate 15367c478bd9Sstevel@tonic-gate /* 15377c478bd9Sstevel@tonic-gate * END: of definitions for Resource Attributes 15387c478bd9Sstevel@tonic-gate */ 15397c478bd9Sstevel@tonic-gate 15407c478bd9Sstevel@tonic-gate 15417c478bd9Sstevel@tonic-gate typedef struct acpi_pci_routing_table 15427c478bd9Sstevel@tonic-gate { 15437c478bd9Sstevel@tonic-gate UINT32 Length; 15447c478bd9Sstevel@tonic-gate UINT32 Pin; 15457c478bd9Sstevel@tonic-gate ACPI_INTEGER Address; /* here for 64-bit alignment */ 15467c478bd9Sstevel@tonic-gate UINT32 SourceIndex; 15477c478bd9Sstevel@tonic-gate char Source[4]; /* pad to 64 bits so sizeof() works in all cases */ 15487c478bd9Sstevel@tonic-gate 15497c478bd9Sstevel@tonic-gate } ACPI_PCI_ROUTING_TABLE; 15507c478bd9Sstevel@tonic-gate 15517c478bd9Sstevel@tonic-gate /* 15527c478bd9Sstevel@tonic-gate * END: of definitions for PCI Routing tables 15537c478bd9Sstevel@tonic-gate */ 15547c478bd9Sstevel@tonic-gate 15557c478bd9Sstevel@tonic-gate 15567c478bd9Sstevel@tonic-gate #endif /* __ACTYPES_H__ */ 1557