actypes.h revision 192384
146283Sdfr/****************************************************************************** 2130803Smarcel * 398944Sobrien * Name: actypes.h - Common data types for the entire ACPI subsystem 446283Sdfr * $Revision: 1.316 $ 598944Sobrien * 646283Sdfr *****************************************************************************/ 798944Sobrien 898944Sobrien/****************************************************************************** 998944Sobrien * 1098944Sobrien * 1. Copyright Notice 1146283Sdfr * 1298944Sobrien * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp. 1398944Sobrien * All rights reserved. 1498944Sobrien * 1598944Sobrien * 2. License 1646283Sdfr * 1798944Sobrien * 2.1. This is your license from Intel Corp. under its intellectual property 1898944Sobrien * rights. You may have additional license terms from the party that provided 1998944Sobrien * you this software, covering your right to use that party's intellectual 2098944Sobrien * property rights. 2146283Sdfr * 2246283Sdfr * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 2346283Sdfr * copy of the source code appearing in this file ("Covered Code") an 2446283Sdfr * irrevocable, perpetual, worldwide license under Intel's copyrights in the 2546283Sdfr * base code distributed originally by Intel ("Original Intel Code") to copy, 2646283Sdfr * make derivatives, distribute, use and display any portion of the Covered 2746283Sdfr * Code in any form, with the right to sublicense such rights; and 2846283Sdfr * 2946283Sdfr * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 3046283Sdfr * license (with the right to sublicense), under only those claims of Intel 3146283Sdfr * patents that are infringed by the Original Intel Code, to make, use, sell, 3246283Sdfr * offer to sell, and import the Covered Code and derivative works thereof 3346283Sdfr * solely to the minimum extent necessary to exercise the above copyright 3446283Sdfr * license, and in no event shall the patent license extend to any additions 3546283Sdfr * to or modifications of the Original Intel Code. No other license or right 3646283Sdfr * is granted directly or by implication, estoppel or otherwise; 3746283Sdfr * 3846283Sdfr * The above copyright and patent license is granted only if the following 3946283Sdfr * conditions are met: 4046283Sdfr * 4146283Sdfr * 3. Conditions 4246283Sdfr * 4346283Sdfr * 3.1. Redistribution of Source with Rights to Further Distribute Source. 4446283Sdfr * Redistribution of source code of any substantial portion of the Covered 4546283Sdfr * Code or modification with rights to further distribute source must include 4646283Sdfr * the above Copyright Notice, the above License, this list of Conditions, 4746283Sdfr * and the following Disclaimer and Export Compliance provision. In addition, 4846283Sdfr * Licensee must cause all Covered Code to which Licensee contributes to 4946283Sdfr * contain a file documenting the changes Licensee made to create that Covered 5046283Sdfr * Code and the date of any change. Licensee must include in that file the 5146283Sdfr * documentation of any changes made by any predecessor Licensee. Licensee 5246283Sdfr * must include a prominent statement that the modification is derived, 5346283Sdfr * directly or indirectly, from Original Intel Code. 5446283Sdfr * 5546283Sdfr * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 5646283Sdfr * Redistribution of source code of any substantial portion of the Covered 5746283Sdfr * Code or modification without rights to further distribute source must 58130803Smarcel * include the following Disclaimer and Export Compliance provision in the 5946283Sdfr * documentation and/or other materials provided with distribution. In 6046283Sdfr * addition, Licensee may not authorize further sublicense of source of any 6198944Sobrien * portion of the Covered Code, and must include terms to the effect that the 6298944Sobrien * license from Licensee to its licensee is limited to the intellectual 6398944Sobrien * property embodied in the software Licensee provides to its licensee, and 6446283Sdfr * not to intellectual property embodied in modifications its licensee may 65130803Smarcel * make. 66130803Smarcel * 6798944Sobrien * 3.3. Redistribution of Executable. Redistribution in executable form of any 6898944Sobrien * substantial portion of the Covered Code or modification must reproduce the 6946283Sdfr * above Copyright Notice, and the following Disclaimer and Export Compliance 7046283Sdfr * provision in the documentation and/or other materials provided with the 7146283Sdfr * distribution. 7246283Sdfr * 7346283Sdfr * 3.4. Intel retains all right, title, and interest in and to the Original 7446283Sdfr * Intel Code. 7546283Sdfr * 7646283Sdfr * 3.5. Neither the name Intel nor any other trademark owned or controlled by 7798944Sobrien * Intel shall be used in advertising or otherwise to promote the sale, use or 7898944Sobrien * other dealings in products derived from or relating to the Covered Code 7998944Sobrien * without prior written authorization from Intel. 8046283Sdfr * 8198944Sobrien * 4. Disclaimer and Export Compliance 8298944Sobrien * 8346283Sdfr * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 8446283Sdfr * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 8546283Sdfr * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 8646283Sdfr * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 8746283Sdfr * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 8846283Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 8998944Sobrien * PARTICULAR PURPOSE. 9098944Sobrien * 9198944Sobrien * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 9246283Sdfr * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 9346283Sdfr * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 9498944Sobrien * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 9598944Sobrien * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 9698944Sobrien * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 9798944Sobrien * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 9846283Sdfr * LIMITED REMEDY. 9946283Sdfr * 10046283Sdfr * 4.3. Licensee shall not export, either directly or indirectly, any of this 10146283Sdfr * software or system incorporating such software without first obtaining any 10246283Sdfr * required license or other approval from the U. S. Department of Commerce or 10398944Sobrien * any other agency or department of the United States Government. In the 10498944Sobrien * event Licensee exports any such software from the United States or 10598944Sobrien * re-exports any such software from a foreign destination, Licensee shall 10698944Sobrien * ensure that the distribution and export/re-export of the software is in 10798944Sobrien * compliance with all laws, regulations, orders, or other restrictions of the 10898944Sobrien * U.S. Export Administration Regulations. Licensee agrees that neither it nor 10998944Sobrien * any of its subsidiaries will export/re-export any technical data, process, 11046283Sdfr * software, or service, directly or indirectly, to any country for which the 11198944Sobrien * United States government or any agency thereof requires an export license, 11298944Sobrien * other governmental approval, or letter of assurance, without first obtaining 11346283Sdfr * such license, approval or letter. 114130803Smarcel * 11598944Sobrien *****************************************************************************/ 11646283Sdfr 11798944Sobrien#ifndef __ACTYPES_H__ 11898944Sobrien#define __ACTYPES_H__ 11998944Sobrien 12098944Sobrien/* acpisrc:StructDefs -- for acpisrc conversion */ 12198944Sobrien 12298944Sobrien/* 12398944Sobrien * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header 12498944Sobrien * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of 12598944Sobrien * 12/2006. 12698944Sobrien */ 12746283Sdfr#ifndef ACPI_MACHINE_WIDTH 12846283Sdfr#error ACPI_MACHINE_WIDTH not defined 12998944Sobrien#endif 130130803Smarcel 13198944Sobrien/*! [Begin] no source code translation */ 13298944Sobrien 13398944Sobrien/* 134130803Smarcel * Data type ranges 13598944Sobrien * Note: These macros are designed to be compiler independent as well as 136130803Smarcel * working around problems that some 32-bit compilers have with 64-bit 13798944Sobrien * constants. 138130803Smarcel */ 139130803Smarcel#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 14098944Sobrien#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 141130803Smarcel#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 142130803Smarcel#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 143130803Smarcel#define ACPI_ASCII_MAX 0x7F 14498944Sobrien 145130803Smarcel 146130803Smarcel/* 14798944Sobrien * Architecture-specific ACPICA Subsystem Data Types 14898944Sobrien * 149130803Smarcel * The goal of these types is to provide source code portability across 150130803Smarcel * 16-bit, 32-bit, and 64-bit targets. 15198944Sobrien * 152130803Smarcel * 1) The following types are of fixed size for all targets (16/32/64): 15398944Sobrien * 154130803Smarcel * BOOLEAN Logical boolean 15598944Sobrien * 156130803Smarcel * UINT8 8-bit (1 byte) unsigned value 15798944Sobrien * UINT16 16-bit (2 byte) unsigned value 158130803Smarcel * UINT32 32-bit (4 byte) unsigned value 15998944Sobrien * UINT64 64-bit (8 byte) unsigned value 160130803Smarcel * 16198944Sobrien * INT16 16-bit (2 byte) signed value 162130803Smarcel * INT32 32-bit (4 byte) signed value 16398944Sobrien * INT64 64-bit (8 byte) signed value 164130803Smarcel * 165130803Smarcel * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 16698944Sobrien * compiler-dependent header(s) and were introduced because there is no common 167130803Smarcel * 64-bit integer type across the various compilation models, as shown in 16898944Sobrien * the table below. 169130803Smarcel * 17098944Sobrien * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 171130803Smarcel * char 8 8 8 8 8 8 172130803Smarcel * short 16 16 16 16 16 16 17398944Sobrien * _int32 32 174130803Smarcel * int 32 64 32 32 16 16 175130803Smarcel * long 64 64 32 32 32 32 17698944Sobrien * long long 64 64 177130803Smarcel * pointer 64 64 64 32 32 32 17898944Sobrien * 179130803Smarcel * Note: ILP64 and LP32 are currently not supported. 18098944Sobrien * 18198944Sobrien * 18246283Sdfr * 2) These types represent the native word size of the target mode of the 18346283Sdfr * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 18498944Sobrien * usually used for memory allocation, efficient loop counters, and array 18546283Sdfr * indexes. The types are similar to the size_t type in the C library and are 18698944Sobrien * required because there is no C type that consistently represents the native 18746283Sdfr * data width. 18898944Sobrien * 18946283Sdfr * ACPI_SIZE 16/32/64-bit unsigned value 19098944Sobrien * ACPI_NATIVE_UINT 16/32/64-bit unsigned value 19146283Sdfr * ACPI_NATIVE_INT 16/32/64-bit signed value 19298944Sobrien * 19346283Sdfr */ 19498944Sobrien 19598944Sobrien/******************************************************************************* 19646283Sdfr * 19746283Sdfr * Common types for all compilers, all targets 19846283Sdfr * 19946283Sdfr ******************************************************************************/ 20098944Sobrien 20146283Sdfrtypedef unsigned char BOOLEAN; 20246283Sdfrtypedef unsigned char UINT8; 20398944Sobrientypedef unsigned short UINT16; 20498944Sobrientypedef COMPILER_DEPENDENT_UINT64 UINT64; 20598944Sobrientypedef COMPILER_DEPENDENT_INT64 INT64; 20698944Sobrien 20798944Sobrien/*! [End] no source code translation !*/ 20898944Sobrien 20998944Sobrien 21098944Sobrien/******************************************************************************* 21198944Sobrien * 21298944Sobrien * Types specific to 64-bit targets 21398944Sobrien * 21498944Sobrien ******************************************************************************/ 21598944Sobrien 21698944Sobrien#if ACPI_MACHINE_WIDTH == 64 21798944Sobrien 21898944Sobrien/*! [Begin] no source code translation (keep the typedefs as-is) */ 21998944Sobrien 22098944Sobrientypedef unsigned int UINT32; 22198944Sobrientypedef int INT32; 22298944Sobrien 22398944Sobrien/*! [End] no source code translation !*/ 22498944Sobrien 22598944Sobrien 22698944Sobrientypedef UINT64 ACPI_NATIVE_UINT; 22746283Sdfrtypedef INT64 ACPI_NATIVE_INT; 22846283Sdfr 22946283Sdfrtypedef UINT64 ACPI_IO_ADDRESS; 23046283Sdfrtypedef UINT64 ACPI_PHYSICAL_ADDRESS; 23146283Sdfr 23246283Sdfr#define ACPI_MAX_PTR ACPI_UINT64_MAX 23346283Sdfr#define ACPI_SIZE_MAX ACPI_UINT64_MAX 23498944Sobrien 23546283Sdfr#define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 23646283Sdfr 23746283Sdfr/* 23846283Sdfr * In the case of the Itanium Processor Family (IPF), the hardware does not 23946283Sdfr * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 24046283Sdfr * to indicate that special precautions must be taken to avoid alignment faults. 24146283Sdfr * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 24298944Sobrien * 24346283Sdfr * Note: EM64T and other X86-64 processors support misaligned transfers, 24498944Sobrien * so there is no need to define this flag. 24546283Sdfr */ 24698944Sobrien#if defined (__IA64__) || defined (__ia64__) 24746283Sdfr#define ACPI_MISALIGNMENT_NOT_SUPPORTED 24898944Sobrien#endif 24946283Sdfr 25098944Sobrien 25146283Sdfr/******************************************************************************* 25298944Sobrien * 25398944Sobrien * Types specific to 32-bit targets 25446283Sdfr * 25546283Sdfr ******************************************************************************/ 25646283Sdfr 25746283Sdfr#elif ACPI_MACHINE_WIDTH == 32 25898944Sobrien 25946283Sdfr/*! [Begin] no source code translation (keep the typedefs as-is) */ 26046283Sdfr 26198944Sobrientypedef unsigned int UINT32; 26298944Sobrientypedef int INT32; 26398944Sobrien 26498944Sobrien/*! [End] no source code translation !*/ 26598944Sobrien 26698944Sobrien 26798944Sobrientypedef UINT32 ACPI_NATIVE_UINT; 26898944Sobrientypedef INT32 ACPI_NATIVE_INT; 26998944Sobrien 27098944Sobrientypedef UINT32 ACPI_IO_ADDRESS; 27198944Sobrientypedef UINT32 ACPI_PHYSICAL_ADDRESS; 27246283Sdfr 27346283Sdfr#define ACPI_MAX_PTR ACPI_UINT32_MAX 27446283Sdfr#define ACPI_SIZE_MAX ACPI_UINT32_MAX 27546283Sdfr 27646283Sdfr#else 27746283Sdfr 27846283Sdfr/* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 27998944Sobrien 28046283Sdfr#error unknown ACPI_MACHINE_WIDTH 28146283Sdfr#endif 28246283Sdfr 28346283Sdfr 28446283Sdfr/* Variable-width type, used instead of clib size_t */ 28546283Sdfr 28646283Sdfrtypedef ACPI_NATIVE_UINT ACPI_SIZE; 28798944Sobrien 28846283Sdfr 28998944Sobrien/******************************************************************************* 29046283Sdfr * 29198944Sobrien * OS-dependent and compiler-dependent types 29246283Sdfr * 29398944Sobrien * If the defaults below are not appropriate for the host system, they can 29446283Sdfr * be defined in the compiler-specific or OS-specific header, and this will 29598944Sobrien * take precedence. 29646283Sdfr * 29798944Sobrien ******************************************************************************/ 29898944Sobrien 29998944Sobrien 30046283Sdfr/* Value returned by AcpiOsGetThreadId */ 30198944Sobrien 30246283Sdfr#ifndef ACPI_THREAD_ID 30398944Sobrien#define ACPI_THREAD_ID ACPI_NATIVE_UINT 30446283Sdfr#endif 30546283Sdfr 30646283Sdfr/* Object returned from AcpiOsCreateLock */ 30798944Sobrien 30898944Sobrien#ifndef ACPI_SPINLOCK 30946283Sdfr#define ACPI_SPINLOCK void * 31046283Sdfr#endif 31146283Sdfr 31246283Sdfr/* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 31346283Sdfr 31446283Sdfr#ifndef ACPI_CPU_FLAGS 31598944Sobrien#define ACPI_CPU_FLAGS ACPI_NATIVE_UINT 31646283Sdfr#endif 31746283Sdfr 31846283Sdfr/* Object returned from AcpiOsCreateCache */ 31946283Sdfr 32046283Sdfr#ifndef ACPI_CACHE_T 32198944Sobrien#define ACPI_CACHE_T ACPI_MEMORY_LIST 32246283Sdfr#endif 32346283Sdfr 32446283Sdfr/* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 32546283Sdfr 32646283Sdfr#ifndef ACPI_UINTPTR_T 32798944Sobrien#define ACPI_UINTPTR_T void * 32846283Sdfr#endif 32946283Sdfr 33046283Sdfr/* 33146283Sdfr * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 33246283Sdfr * some compilers can catch printf format string problems 33346283Sdfr */ 33498944Sobrien#ifndef ACPI_PRINTF_LIKE 33546283Sdfr#define ACPI_PRINTF_LIKE(c) 33646283Sdfr#endif 33746283Sdfr 33846283Sdfr/* 33946283Sdfr * Some compilers complain about unused variables. Sometimes we don't want to 34046283Sdfr * use all the variables (for example, _AcpiModuleName). This allows us 34146283Sdfr * to to tell the compiler in a per-variable manner that a variable 34246283Sdfr * is unused 34346283Sdfr */ 34498944Sobrien#ifndef ACPI_UNUSED_VAR 34546283Sdfr#define ACPI_UNUSED_VAR 34698944Sobrien#endif 34746283Sdfr 34898944Sobrien/* 34946283Sdfr * All ACPICA functions that are available to the rest of the kernel are 35098944Sobrien * tagged with this macro which can be defined as appropriate for the host. 35146283Sdfr */ 35298944Sobrien#ifndef ACPI_EXPORT_SYMBOL 35346283Sdfr#define ACPI_EXPORT_SYMBOL(Symbol) 35498944Sobrien#endif 35598944Sobrien 35646283Sdfr 35798944Sobrien/******************************************************************************* 35846283Sdfr * 35998944Sobrien * Independent types 36046283Sdfr * 36146283Sdfr ******************************************************************************/ 36246283Sdfr 36398944Sobrien/* Logical defines and NULL */ 36498944Sobrien 36546283Sdfr#ifdef FALSE 36646283Sdfr#undef FALSE 36746283Sdfr#endif 36846283Sdfr#define FALSE (1 == 0) 36946283Sdfr 37046283Sdfr#ifdef TRUE 37146283Sdfr#undef TRUE 37246283Sdfr#endif 37346283Sdfr#define TRUE (1 == 1) 37446283Sdfr 37546283Sdfr#ifndef NULL 37698944Sobrien#define NULL (void *) 0 37746283Sdfr#endif 37846283Sdfr 37946283Sdfr 38098944Sobrien/* 38146283Sdfr * Mescellaneous types 38246283Sdfr */ 38346283Sdfrtypedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 38446283Sdfrtypedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 38546283Sdfrtypedef char * ACPI_STRING; /* Null terminated ASCII string */ 38698944Sobrientypedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 38798944Sobrien 38846283Sdfrtypedef struct uint64_struct 38946283Sdfr{ 39046283Sdfr UINT32 Lo; 39146283Sdfr UINT32 Hi; 39246283Sdfr 39398944Sobrien} UINT64_STRUCT; 39446283Sdfr 39546283Sdfrtypedef union uint64_overlay 39646283Sdfr{ 39746283Sdfr UINT64 Full; 39846283Sdfr UINT64_STRUCT Part; 39946283Sdfr 40046283Sdfr} UINT64_OVERLAY; 40146283Sdfr 40246283Sdfrtypedef struct uint32_struct 40346283Sdfr{ 40446283Sdfr UINT32 Lo; 40598944Sobrien UINT32 Hi; 40646283Sdfr 40746283Sdfr} UINT32_STRUCT; 40846283Sdfr 40946283Sdfr 41046283Sdfr/* Synchronization objects */ 41146283Sdfr 41246283Sdfr#define ACPI_MUTEX void * 41346283Sdfr#define ACPI_SEMAPHORE void * 41498944Sobrien 41546283Sdfr 41646283Sdfr/* 41798944Sobrien * Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI 41846283Sdfr * version 2, integers are 64 bits. Note that this pertains to the ACPI integer 41998944Sobrien * type only, not other integers used in the implementation of the ACPI CA 42098944Sobrien * subsystem. 42146283Sdfr */ 42246283Sdfrtypedef UINT64 ACPI_INTEGER; 42346283Sdfr#define ACPI_INTEGER_MAX ACPI_UINT64_MAX 42498944Sobrien#define ACPI_INTEGER_BIT_SIZE 64 42546283Sdfr#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 42698944Sobrien 42798944Sobrien 42898944Sobrien#if ACPI_MACHINE_WIDTH == 64 42946283Sdfr#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ 43098944Sobrien#endif 43146283Sdfr 43246283Sdfr#define ACPI_MAX64_DECIMAL_DIGITS 20 43346283Sdfr#define ACPI_MAX32_DECIMAL_DIGITS 10 43446283Sdfr#define ACPI_MAX16_DECIMAL_DIGITS 5 43546283Sdfr#define ACPI_MAX8_DECIMAL_DIGITS 3 43646283Sdfr 43746283Sdfr/* 43846283Sdfr * Constants with special meanings 43946283Sdfr */ 44046283Sdfr#define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 44146283Sdfr 44246283Sdfr 44346283Sdfr/* 44498944Sobrien * Initialization sequence 44546283Sdfr */ 44698944Sobrien#define ACPI_FULL_INITIALIZATION 0x00 44746283Sdfr#define ACPI_NO_ADDRESS_SPACE_INIT 0x01 44846283Sdfr#define ACPI_NO_HARDWARE_INIT 0x02 44946283Sdfr#define ACPI_NO_EVENT_INIT 0x04 45046283Sdfr#define ACPI_NO_HANDLER_INIT 0x08 45146283Sdfr#define ACPI_NO_ACPI_ENABLE 0x10 45246283Sdfr#define ACPI_NO_DEVICE_INIT 0x20 45346283Sdfr#define ACPI_NO_OBJECT_INIT 0x40 45446283Sdfr 45546283Sdfr/* 45646283Sdfr * Initialization state 45798944Sobrien */ 45846283Sdfr#define ACPI_SUBSYSTEM_INITIALIZE 0x01 45946283Sdfr#define ACPI_INITIALIZED_OK 0x02 46046283Sdfr 46198944Sobrien/* 46246283Sdfr * Power state values 46398944Sobrien */ 46498944Sobrien#define ACPI_STATE_UNKNOWN (UINT8) 0xFF 46598944Sobrien 46646283Sdfr#define ACPI_STATE_S0 (UINT8) 0 46798944Sobrien#define ACPI_STATE_S1 (UINT8) 1 46846283Sdfr#define ACPI_STATE_S2 (UINT8) 2 46998944Sobrien#define ACPI_STATE_S3 (UINT8) 3 47046283Sdfr#define ACPI_STATE_S4 (UINT8) 4 47198944Sobrien#define ACPI_STATE_S5 (UINT8) 5 47298944Sobrien#define ACPI_S_STATES_MAX ACPI_STATE_S5 47346283Sdfr#define ACPI_S_STATE_COUNT 6 47498944Sobrien 47598944Sobrien#define ACPI_STATE_D0 (UINT8) 0 47698944Sobrien#define ACPI_STATE_D1 (UINT8) 1 47746283Sdfr#define ACPI_STATE_D2 (UINT8) 2 47846283Sdfr#define ACPI_STATE_D3 (UINT8) 3 47998944Sobrien#define ACPI_D_STATES_MAX ACPI_STATE_D3 48046283Sdfr#define ACPI_D_STATE_COUNT 4 48146283Sdfr 48246283Sdfr#define ACPI_STATE_C0 (UINT8) 0 48346283Sdfr#define ACPI_STATE_C1 (UINT8) 1 48446283Sdfr#define ACPI_STATE_C2 (UINT8) 2 48546283Sdfr#define ACPI_STATE_C3 (UINT8) 3 48646283Sdfr#define ACPI_C_STATES_MAX ACPI_STATE_C3 48798944Sobrien#define ACPI_C_STATE_COUNT 4 48898944Sobrien 48946283Sdfr/* 49098944Sobrien * Sleep type invalid value 49198944Sobrien */ 49246283Sdfr#define ACPI_SLEEP_TYPE_MAX 0x7 49346283Sdfr#define ACPI_SLEEP_TYPE_INVALID 0xFF 49498944Sobrien 49598944Sobrien/* 49646283Sdfr * Standard notify values 49798944Sobrien */ 49898944Sobrien#define ACPI_NOTIFY_BUS_CHECK (UINT8) 0 49998944Sobrien#define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 1 50046283Sdfr#define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 2 50198944Sobrien#define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 3 50246283Sdfr#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 4 50398944Sobrien#define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 5 50446283Sdfr#define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 6 50598944Sobrien#define ACPI_NOTIFY_POWER_FAULT (UINT8) 7 50698944Sobrien 50746283Sdfr/* 50898944Sobrien * Types associated with ACPI names and objects. The first group of 50998944Sobrien * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 51098944Sobrien * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 51146283Sdfr * only add to the first group if the spec changes. 51246283Sdfr * 51398944Sobrien * NOTE: Types must be kept in sync with the global AcpiNsProperties 51446283Sdfr * and AcpiNsTypeNames arrays. 51546283Sdfr */ 51646283Sdfrtypedef UINT32 ACPI_OBJECT_TYPE; 51746283Sdfr 51846283Sdfr#define ACPI_TYPE_ANY 0x00 51998944Sobrien#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 52098944Sobrien#define ACPI_TYPE_STRING 0x02 52146283Sdfr#define ACPI_TYPE_BUFFER 0x03 52246283Sdfr#define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 52346283Sdfr#define ACPI_TYPE_FIELD_UNIT 0x05 52498944Sobrien#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 52546283Sdfr#define ACPI_TYPE_EVENT 0x07 52646283Sdfr#define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 52746283Sdfr#define ACPI_TYPE_MUTEX 0x09 52846283Sdfr#define ACPI_TYPE_REGION 0x0A 52946283Sdfr#define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 53046283Sdfr#define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 53146283Sdfr#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 53246283Sdfr#define ACPI_TYPE_BUFFER_FIELD 0x0E 53346283Sdfr#define ACPI_TYPE_DDB_HANDLE 0x0F 53446283Sdfr#define ACPI_TYPE_DEBUG_OBJECT 0x10 53546283Sdfr 53646283Sdfr#define ACPI_TYPE_EXTERNAL_MAX 0x10 53746283Sdfr 53846283Sdfr/* 53946283Sdfr * These are object types that do not map directly to the ACPI 54046283Sdfr * ObjectType() operator. They are used for various internal purposes only. 54146283Sdfr * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 54298944Sobrien * internal types must move upwards. (There is code that depends on these 54346283Sdfr * values being contiguous with the external types above.) 54446283Sdfr */ 54546283Sdfr#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 54646283Sdfr#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 54746283Sdfr#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 54846283Sdfr#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 54946283Sdfr#define ACPI_TYPE_LOCAL_ALIAS 0x15 55046283Sdfr#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 55146283Sdfr#define ACPI_TYPE_LOCAL_NOTIFY 0x17 55246283Sdfr#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 55346283Sdfr#define ACPI_TYPE_LOCAL_RESOURCE 0x19 55498944Sobrien#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 55598944Sobrien#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 55646283Sdfr 55746283Sdfr#define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 55846283Sdfr 55946283Sdfr/* 56046283Sdfr * These are special object types that never appear in 56146283Sdfr * a Namespace node, only in an ACPI_OPERAND_OBJECT 56246283Sdfr */ 56398944Sobrien#define ACPI_TYPE_LOCAL_EXTRA 0x1C 56446283Sdfr#define ACPI_TYPE_LOCAL_DATA 0x1D 56598944Sobrien 56646283Sdfr#define ACPI_TYPE_LOCAL_MAX 0x1D 56746283Sdfr 56846283Sdfr/* All types above here are invalid */ 56946283Sdfr 57046283Sdfr#define ACPI_TYPE_INVALID 0x1E 57146283Sdfr#define ACPI_TYPE_NOT_FOUND 0xFF 57246283Sdfr 57346283Sdfr/* 57446283Sdfr * All I/O 57546283Sdfr */ 57646283Sdfr#define ACPI_READ 0 57746283Sdfr#define ACPI_WRITE 1 57846283Sdfr#define ACPI_IO_MASK 1 57946283Sdfr 58046283Sdfr/* 58146283Sdfr * Event Types: Fixed & General Purpose 58246283Sdfr */ 58346283Sdfrtypedef UINT32 ACPI_EVENT_TYPE; 58446283Sdfr 58546283Sdfr/* 58646283Sdfr * Fixed events 58746283Sdfr */ 58846283Sdfr#define ACPI_EVENT_PMTIMER 0 58946283Sdfr#define ACPI_EVENT_GLOBAL 1 59046283Sdfr#define ACPI_EVENT_POWER_BUTTON 2 59146283Sdfr#define ACPI_EVENT_SLEEP_BUTTON 3 59246283Sdfr#define ACPI_EVENT_RTC 4 59346283Sdfr#define ACPI_EVENT_MAX 4 59446283Sdfr#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 59546283Sdfr 59646283Sdfr/* 59746283Sdfr * Event Status - Per event 59898944Sobrien * ------------- 59998944Sobrien * The encoding of ACPI_EVENT_STATUS is illustrated below. 60046283Sdfr * Note that a set bit (1) indicates the property is TRUE 60146283Sdfr * (e.g. if bit 0 is set then the event is enabled). 60246283Sdfr * +-------------+-+-+-+ 60346283Sdfr * | Bits 31:3 |2|1|0| 60446283Sdfr * +-------------+-+-+-+ 60546283Sdfr * | | | | 60646283Sdfr * | | | +- Enabled? 60746283Sdfr * | | +--- Enabled for wake? 60846283Sdfr * | +----- Set? 60946283Sdfr * +----------- <Reserved> 61046283Sdfr */ 61146283Sdfrtypedef UINT32 ACPI_EVENT_STATUS; 61246283Sdfr 61346283Sdfr#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 61446283Sdfr#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 61546283Sdfr#define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 61646283Sdfr#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 61746283Sdfr 61846283Sdfr/* 61946283Sdfr * General Purpose Events (GPE) 62098944Sobrien */ 62146283Sdfr#define ACPI_GPE_INVALID 0xFF 62246283Sdfr#define ACPI_GPE_MAX 0xFF 62346283Sdfr#define ACPI_NUM_GPE 256 62446283Sdfr 62598944Sobrien#define ACPI_GPE_ENABLE 0 62646283Sdfr#define ACPI_GPE_DISABLE 1 62746283Sdfr 62846283Sdfr 62946283Sdfr/* 63046283Sdfr * GPE info flags - Per GPE 63146283Sdfr * +-+-+-+---+---+-+ 63298944Sobrien * |7|6|5|4:3|2:1|0| 63398944Sobrien * +-+-+-+---+---+-+ 63446283Sdfr * | | | | | | 63546283Sdfr * | | | | | +--- Interrupt type: Edge or Level Triggered 63646283Sdfr * | | | | +--- Type: Wake-only, Runtime-only, or wake/runtime 63746283Sdfr * | | | +--- Type of dispatch -- to method, handler, or none 63898944Sobrien * | | +--- Enabled for runtime? 63946283Sdfr * | +--- Enabled for wake? 64098944Sobrien * +--- Unused 64146283Sdfr */ 64246283Sdfr#define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x01 64346283Sdfr#define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x01 64446283Sdfr#define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 64546283Sdfr 64646283Sdfr#define ACPI_GPE_TYPE_MASK (UINT8) 0x06 64746283Sdfr#define ACPI_GPE_TYPE_WAKE_RUN (UINT8) 0x06 64846283Sdfr#define ACPI_GPE_TYPE_WAKE (UINT8) 0x02 649130803Smarcel#define ACPI_GPE_TYPE_RUNTIME (UINT8) 0x04 /* Default */ 65046283Sdfr 651130803Smarcel#define ACPI_GPE_DISPATCH_MASK (UINT8) 0x18 652130803Smarcel#define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x08 653130803Smarcel#define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x10 65498944Sobrien#define ACPI_GPE_DISPATCH_NOT_USED (UINT8) 0x00 /* Default */ 65546283Sdfr 65646283Sdfr#define ACPI_GPE_RUN_ENABLE_MASK (UINT8) 0x20 65746283Sdfr#define ACPI_GPE_RUN_ENABLED (UINT8) 0x20 65846283Sdfr#define ACPI_GPE_RUN_DISABLED (UINT8) 0x00 /* Default */ 65946283Sdfr 66046283Sdfr#define ACPI_GPE_WAKE_ENABLE_MASK (UINT8) 0x40 66146283Sdfr#define ACPI_GPE_WAKE_ENABLED (UINT8) 0x40 66246283Sdfr#define ACPI_GPE_WAKE_DISABLED (UINT8) 0x00 /* Default */ 663130803Smarcel 664130803Smarcel#define ACPI_GPE_ENABLE_MASK (UINT8) 0x60 /* Both run/wake */ 66546283Sdfr 66646283Sdfr/* 66746283Sdfr * Flags for GPE and Lock interfaces 66846283Sdfr */ 66946283Sdfr#define ACPI_EVENT_WAKE_ENABLE 0x2 /* AcpiGpeEnable */ 67046283Sdfr#define ACPI_EVENT_WAKE_DISABLE 0x2 /* AcpiGpeDisable */ 67146283Sdfr 67246283Sdfr#define ACPI_NOT_ISR 0x1 67346283Sdfr#define ACPI_ISR 0x0 67446283Sdfr 67546283Sdfr 67646283Sdfr/* Notify types */ 67746283Sdfr 67846283Sdfr#define ACPI_SYSTEM_NOTIFY 0x1 67946283Sdfr#define ACPI_DEVICE_NOTIFY 0x2 68046283Sdfr#define ACPI_ALL_NOTIFY 0x3 68146283Sdfr#define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 68246283Sdfr 68346283Sdfr#define ACPI_MAX_SYS_NOTIFY 0x7f 68498944Sobrien 68598944Sobrien 68646283Sdfr/* Address Space (Operation Region) Types */ 68798944Sobrien 68846283Sdfrtypedef UINT8 ACPI_ADR_SPACE_TYPE; 68946283Sdfr 69046283Sdfr#define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 69146283Sdfr#define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 69246283Sdfr#define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 69346283Sdfr#define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 69446283Sdfr#define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 69546283Sdfr#define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 69646283Sdfr#define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 69746283Sdfr#define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7 69846283Sdfr#define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127 69946283Sdfr 70046283Sdfr 70146283Sdfr/* 70246283Sdfr * BitRegister IDs 70346283Sdfr * These are bitfields defined within the full ACPI registers 70446283Sdfr */ 70546283Sdfr#define ACPI_BITREG_TIMER_STATUS 0x00 70646283Sdfr#define ACPI_BITREG_BUS_MASTER_STATUS 0x01 70746283Sdfr#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 70846283Sdfr#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 70946283Sdfr#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 71046283Sdfr#define ACPI_BITREG_RT_CLOCK_STATUS 0x05 71146283Sdfr#define ACPI_BITREG_WAKE_STATUS 0x06 71246283Sdfr#define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 71346283Sdfr 71446283Sdfr#define ACPI_BITREG_TIMER_ENABLE 0x08 71598944Sobrien#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 71646283Sdfr#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 71746283Sdfr#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 71846283Sdfr#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 71946283Sdfr#define ACPI_BITREG_WAKE_ENABLE 0x0D 72098944Sobrien#define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0E 72198944Sobrien 72298944Sobrien#define ACPI_BITREG_SCI_ENABLE 0x0F 72398944Sobrien#define ACPI_BITREG_BUS_MASTER_RLD 0x10 72498944Sobrien#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x11 72598944Sobrien#define ACPI_BITREG_SLEEP_TYPE_A 0x12 72646283Sdfr#define ACPI_BITREG_SLEEP_TYPE_B 0x13 72798944Sobrien#define ACPI_BITREG_SLEEP_ENABLE 0x14 72898944Sobrien 72998944Sobrien#define ACPI_BITREG_ARB_DISABLE 0x15 73046283Sdfr 73146283Sdfr#define ACPI_BITREG_MAX 0x15 73246283Sdfr#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 73346283Sdfr 73498944Sobrien 73546283Sdfr/* 73698944Sobrien * External ACPI object definition 73798944Sobrien */ 73898944Sobrientypedef union acpi_object 73946283Sdfr{ 74046283Sdfr ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 74146283Sdfr struct 742130803Smarcel { 74398944Sobrien ACPI_OBJECT_TYPE Type; 74446283Sdfr ACPI_INTEGER Value; /* The actual number */ 74546283Sdfr } Integer; 74698944Sobrien 74746283Sdfr struct 74846283Sdfr { 74946283Sdfr ACPI_OBJECT_TYPE Type; 75046283Sdfr UINT32 Length; /* # of bytes in string, excluding trailing null */ 75146283Sdfr char *Pointer; /* points to the string value */ 75246283Sdfr } String; 753130803Smarcel 754130803Smarcel struct 755130803Smarcel { 756130803Smarcel ACPI_OBJECT_TYPE Type; 757130803Smarcel UINT32 Length; /* # of bytes in buffer */ 758130803Smarcel UINT8 *Pointer; /* points to the buffer */ 759130803Smarcel } Buffer; 760130803Smarcel 761130803Smarcel struct 762130803Smarcel { 763130803Smarcel ACPI_OBJECT_TYPE Type; 764130803Smarcel UINT32 Fill1; 765130803Smarcel ACPI_HANDLE Handle; /* object reference */ 766130803Smarcel } Reference; 767130803Smarcel 768130803Smarcel struct 769130803Smarcel { 770130803Smarcel ACPI_OBJECT_TYPE Type; 771130803Smarcel UINT32 Count; /* # of elements in package */ 772130803Smarcel union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 773130803Smarcel } Package; 774130803Smarcel 775130803Smarcel struct 776130803Smarcel { 777130803Smarcel ACPI_OBJECT_TYPE Type; 778130803Smarcel UINT32 ProcId; 779130803Smarcel ACPI_IO_ADDRESS PblkAddress; 780130803Smarcel UINT32 PblkLength; 781130803Smarcel } Processor; 782130803Smarcel 783130803Smarcel struct 78446283Sdfr { 78546283Sdfr ACPI_OBJECT_TYPE Type; 78646283Sdfr UINT32 SystemLevel; 78798944Sobrien UINT32 ResourceOrder; 78846283Sdfr } PowerResource; 78946283Sdfr 79046283Sdfr} ACPI_OBJECT; 79146283Sdfr 79246283Sdfr 79398944Sobrien/* 79446283Sdfr * List of objects, used as a parameter list for control method evaluation 79546283Sdfr */ 79646283Sdfrtypedef struct acpi_object_list 79746283Sdfr{ 79846283Sdfr UINT32 Count; 79998944Sobrien ACPI_OBJECT *Pointer; 80046283Sdfr 80198944Sobrien} ACPI_OBJECT_LIST; 80246283Sdfr 80346283Sdfr 80446283Sdfr/* 80546283Sdfr * Miscellaneous common Data Structures used by the interfaces 80646283Sdfr */ 80798944Sobrien#define ACPI_NO_BUFFER 0 80846283Sdfr#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) 80946283Sdfr#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) 81046283Sdfr 81198944Sobrientypedef struct acpi_buffer 81246283Sdfr{ 81398944Sobrien ACPI_SIZE Length; /* Length in bytes of the buffer */ 81446283Sdfr void *Pointer; /* pointer to buffer */ 81546283Sdfr 81646283Sdfr} ACPI_BUFFER; 81798944Sobrien 81898944Sobrien 81998944Sobrien/* 82046283Sdfr * NameType for AcpiGetName 82198944Sobrien */ 82298944Sobrien#define ACPI_FULL_PATHNAME 0 82346283Sdfr#define ACPI_SINGLE_NAME 1 82446283Sdfr#define ACPI_NAME_TYPE_MAX 1 82546283Sdfr 82646283Sdfr 82746283Sdfr/* 82846283Sdfr * Structure and flags for AcpiGetSystemInfo 82946283Sdfr */ 83046283Sdfr#define ACPI_SYS_MODE_UNKNOWN 0x0000 83146283Sdfr#define ACPI_SYS_MODE_ACPI 0x0001 832130803Smarcel#define ACPI_SYS_MODE_LEGACY 0x0002 83398944Sobrien#define ACPI_SYS_MODES_MASK 0x0003 83498944Sobrien 83598944Sobrien 83698944Sobrien/* 83798944Sobrien * System info returned by AcpiGetSystemInfo() 83898944Sobrien */ 83946283Sdfrtypedef struct acpi_system_info 84098944Sobrien{ 84146283Sdfr UINT32 AcpiCaVersion; 84246283Sdfr UINT32 Flags; 84346283Sdfr UINT32 TimerResolution; 84446283Sdfr UINT32 Reserved1; 84546283Sdfr UINT32 Reserved2; 84646283Sdfr UINT32 DebugLevel; 84798944Sobrien UINT32 DebugLayer; 84846283Sdfr 84946283Sdfr} ACPI_SYSTEM_INFO; 85046283Sdfr 85146283Sdfr 85298944Sobrien/* 85346283Sdfr * Types specific to the OS service interfaces 85446283Sdfr */ 85546283Sdfrtypedef UINT32 85646283Sdfr(ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 85746283Sdfr void *Context); 85846283Sdfr 85946283Sdfrtypedef void 86098944Sobrien(ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 86198944Sobrien void *Context); 86298944Sobrien 86398944Sobrien/* 86446283Sdfr * Various handlers and callback procedures 86546283Sdfr */ 86646283Sdfrtypedef 86798944SobrienUINT32 (*ACPI_EVENT_HANDLER) ( 86846283Sdfr void *Context); 86998944Sobrien 87098944Sobrientypedef 87198944Sobrienvoid (*ACPI_NOTIFY_HANDLER) ( 87298944Sobrien ACPI_HANDLE Device, 87346283Sdfr UINT32 Value, 87446283Sdfr void *Context); 87598944Sobrien 87698944Sobrientypedef 87798944Sobrienvoid (*ACPI_OBJECT_HANDLER) ( 87898944Sobrien ACPI_HANDLE Object, 87946283Sdfr UINT32 Function, 88046283Sdfr void *Data); 88146283Sdfr 88246283Sdfrtypedef 88346283SdfrACPI_STATUS (*ACPI_INIT_HANDLER) ( 88498944Sobrien ACPI_HANDLE Object, 88546283Sdfr UINT32 Function); 88646283Sdfr 88746283Sdfr#define ACPI_INIT_DEVICE_INI 1 88846283Sdfr 88946283Sdfrtypedef 89046283SdfrACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 89146283Sdfr ACPI_STATUS AmlStatus, 89246283Sdfr ACPI_NAME Name, 89398944Sobrien UINT16 Opcode, 89446283Sdfr UINT32 AmlOffset, 89546283Sdfr void *Context); 89646283Sdfr 89746283Sdfr 898130803Smarcel/* Address Spaces (For Operation Regions) */ 89946283Sdfr 90098944Sobrientypedef 90146283SdfrACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 90298944Sobrien UINT32 Function, 90346283Sdfr ACPI_PHYSICAL_ADDRESS Address, 90498944Sobrien UINT32 BitWidth, 90546283Sdfr ACPI_INTEGER *Value, 90698944Sobrien void *HandlerContext, 90746283Sdfr void *RegionContext); 90898944Sobrien 90946283Sdfr#define ACPI_DEFAULT_HANDLER NULL 91098944Sobrien 91146283Sdfr 91246283Sdfrtypedef 91346283SdfrACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 91446283Sdfr ACPI_HANDLE RegionHandle, 91598944Sobrien UINT32 Function, 91646283Sdfr void *HandlerContext, 91798944Sobrien void **RegionContext); 91846283Sdfr 91946283Sdfr#define ACPI_REGION_ACTIVATE 0 92046283Sdfr#define ACPI_REGION_DEACTIVATE 1 92198944Sobrien 92246283Sdfrtypedef 92398944SobrienACPI_STATUS (*ACPI_WALK_CALLBACK) ( 92446283Sdfr ACPI_HANDLE ObjHandle, 92598944Sobrien UINT32 NestingLevel, 92646283Sdfr void *Context, 92798944Sobrien void **ReturnValue); 92898944Sobrien 92946283Sdfr 93098944Sobrien/* Interrupt handler return values */ 93198944Sobrien 93246283Sdfr#define ACPI_INTERRUPT_NOT_HANDLED 0x00 93346283Sdfr#define ACPI_INTERRUPT_HANDLED 0x01 93498944Sobrien 93546283Sdfr 93698944Sobrien/* Common string version of device HIDs and UIDs */ 93746283Sdfr 93846283Sdfrtypedef struct acpi_device_id 93946283Sdfr{ 94046283Sdfr char Value[ACPI_DEVICE_ID_LENGTH]; 94198944Sobrien 94246283Sdfr} ACPI_DEVICE_ID; 94346283Sdfr 94446283Sdfr/* Common string version of device CIDs */ 94546283Sdfr 94646283Sdfrtypedef struct acpi_compatible_id 94746283Sdfr{ 94846283Sdfr char Value[ACPI_MAX_CID_LENGTH]; 94946283Sdfr 95046283Sdfr} ACPI_COMPATIBLE_ID; 95146283Sdfr 95298944Sobrientypedef struct acpi_compatible_id_list 95398944Sobrien{ 95498944Sobrien UINT32 Count; 95598944Sobrien UINT32 Size; 95698944Sobrien ACPI_COMPATIBLE_ID Id[1]; 95746283Sdfr 95846283Sdfr} ACPI_COMPATIBLE_ID_LIST; 95946283Sdfr 96046283Sdfr 96146283Sdfr/* Structure and flags for AcpiGetObjectInfo */ 96246283Sdfr 96346283Sdfr#define ACPI_VALID_STA 0x0001 96446283Sdfr#define ACPI_VALID_ADR 0x0002 96598944Sobrien#define ACPI_VALID_HID 0x0004 96698944Sobrien#define ACPI_VALID_UID 0x0008 96798944Sobrien#define ACPI_VALID_CID 0x0010 96846283Sdfr#define ACPI_VALID_SXDS 0x0020 96998944Sobrien 97046283Sdfr/* Flags for _STA method */ 97198944Sobrien 97298944Sobrien#define ACPI_STA_DEVICE_PRESENT 0x01 97398944Sobrien#define ACPI_STA_DEVICE_ENABLED 0x02 97446283Sdfr#define ACPI_STA_DEVICE_UI 0x04 97598944Sobrien#define ACPI_STA_DEVICE_FUNCTIONING 0x08 97646283Sdfr#define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 97746283Sdfr#define ACPI_STA_BATTERY_PRESENT 0x10 97846283Sdfr 97946283Sdfr 98046283Sdfr#define ACPI_COMMON_OBJ_INFO \ 98146283Sdfr ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ 98246283Sdfr ACPI_NAME Name /* ACPI object Name */ 98346283Sdfr 98498944Sobrien 98598944Sobrientypedef struct acpi_obj_info_header 98646283Sdfr{ 98746283Sdfr ACPI_COMMON_OBJ_INFO; 98846283Sdfr 98946283Sdfr} ACPI_OBJ_INFO_HEADER; 99046283Sdfr 99146283Sdfr 99298944Sobrien/* Structure returned from Get Object Info */ 99398944Sobrien 99446283Sdfrtypedef struct acpi_device_info 99546283Sdfr{ 99646283Sdfr ACPI_COMMON_OBJ_INFO; 99746283Sdfr 99846283Sdfr UINT32 Valid; /* Indicates which fields below are valid */ 99946283Sdfr UINT32 CurrentStatus; /* _STA value */ 100098944Sobrien ACPI_INTEGER Address; /* _ADR value if any */ 100198944Sobrien ACPI_DEVICE_ID HardwareId; /* _HID value if any */ 100246283Sdfr ACPI_DEVICE_ID UniqueId; /* _UID value if any */ 100346283Sdfr UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 100446283Sdfr ACPI_COMPATIBLE_ID_LIST CompatibilityId; /* List of _CIDs if any */ 100546283Sdfr 100646283Sdfr} ACPI_DEVICE_INFO; 100746283Sdfr 100898944Sobrien 100998944Sobrien/* Context structs for address space handlers */ 101046283Sdfr 101146283Sdfrtypedef struct acpi_pci_id 101246283Sdfr{ 101346283Sdfr UINT16 Segment; 101446283Sdfr UINT16 Bus; 101546283Sdfr UINT16 Device; 101698944Sobrien UINT16 Function; 101798944Sobrien 101846283Sdfr} ACPI_PCI_ID; 101946283Sdfr 102098944Sobrien 102146283Sdfrtypedef struct acpi_mem_space_context 102246283Sdfr{ 102346283Sdfr UINT32 Length; 102446283Sdfr ACPI_PHYSICAL_ADDRESS Address; 102546283Sdfr ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 102646283Sdfr UINT8 *MappedLogicalAddress; 102746283Sdfr ACPI_SIZE MappedLength; 102846283Sdfr 102946283Sdfr} ACPI_MEM_SPACE_CONTEXT; 103046283Sdfr 103146283Sdfr 103246283Sdfr/* 103346283Sdfr * Definitions for Resource Attributes 103446283Sdfr */ 103546283Sdfrtypedef UINT16 ACPI_RS_LENGTH; /* Resource Length field is fixed at 16 bits */ 103646283Sdfrtypedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ 103798944Sobrien 103846283Sdfr/* 103946283Sdfr * Memory Attributes 104046283Sdfr */ 104146283Sdfr#define ACPI_READ_ONLY_MEMORY (UINT8) 0x00 104298944Sobrien#define ACPI_READ_WRITE_MEMORY (UINT8) 0x01 104346283Sdfr 104498944Sobrien#define ACPI_NON_CACHEABLE_MEMORY (UINT8) 0x00 104598944Sobrien#define ACPI_CACHABLE_MEMORY (UINT8) 0x01 104698944Sobrien#define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02 104746283Sdfr#define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03 104846283Sdfr 104998944Sobrien/* 105098944Sobrien * IO Attributes 105198944Sobrien * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. 105298944Sobrien * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. 105398944Sobrien */ 105498944Sobrien#define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01 105598944Sobrien#define ACPI_ISA_ONLY_RANGES (UINT8) 0x02 105646283Sdfr#define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) 105746283Sdfr 105846283Sdfr/* Type of translation - 1=Sparse, 0=Dense */ 105946283Sdfr 106098944Sobrien#define ACPI_SPARSE_TRANSLATION (UINT8) 0x01 106146283Sdfr 1062130803Smarcel/* 106398944Sobrien * IO Port Descriptor Decode 106446283Sdfr */ 1065130803Smarcel#define ACPI_DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ 106698944Sobrien#define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ 106746283Sdfr 106846283Sdfr/* 106946283Sdfr * IRQ Attributes 107046283Sdfr */ 107146283Sdfr#define ACPI_LEVEL_SENSITIVE (UINT8) 0x00 107246283Sdfr#define ACPI_EDGE_SENSITIVE (UINT8) 0x01 107346283Sdfr 107446283Sdfr#define ACPI_ACTIVE_HIGH (UINT8) 0x00 107546283Sdfr#define ACPI_ACTIVE_LOW (UINT8) 0x01 107646283Sdfr 107746283Sdfr#define ACPI_EXCLUSIVE (UINT8) 0x00 107846283Sdfr#define ACPI_SHARED (UINT8) 0x01 107998944Sobrien 108098944Sobrien/* 108198944Sobrien * DMA Attributes 1082130803Smarcel */ 108398944Sobrien#define ACPI_COMPATIBILITY (UINT8) 0x00 108498944Sobrien#define ACPI_TYPE_A (UINT8) 0x01 1085130803Smarcel#define ACPI_TYPE_B (UINT8) 0x02 108698944Sobrien#define ACPI_TYPE_F (UINT8) 0x03 108798944Sobrien 108898944Sobrien#define ACPI_NOT_BUS_MASTER (UINT8) 0x00 108998944Sobrien#define ACPI_BUS_MASTER (UINT8) 0x01 109098944Sobrien 109198944Sobrien#define ACPI_TRANSFER_8 (UINT8) 0x00 109298944Sobrien#define ACPI_TRANSFER_8_16 (UINT8) 0x01 109346283Sdfr#define ACPI_TRANSFER_16 (UINT8) 0x02 109446283Sdfr 109546283Sdfr/* 109646283Sdfr * Start Dependent Functions Priority definitions 109746283Sdfr */ 109846283Sdfr#define ACPI_GOOD_CONFIGURATION (UINT8) 0x00 109946283Sdfr#define ACPI_ACCEPTABLE_CONFIGURATION (UINT8) 0x01 110046283Sdfr#define ACPI_SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 110146283Sdfr 110298944Sobrien/* 110398944Sobrien * 16, 32 and 64-bit Address Descriptor resource types 110446283Sdfr */ 110598944Sobrien#define ACPI_MEMORY_RANGE (UINT8) 0x00 110646283Sdfr#define ACPI_IO_RANGE (UINT8) 0x01 110746283Sdfr#define ACPI_BUS_NUMBER_RANGE (UINT8) 0x02 110846283Sdfr 110946283Sdfr#define ACPI_ADDRESS_NOT_FIXED (UINT8) 0x00 111046283Sdfr#define ACPI_ADDRESS_FIXED (UINT8) 0x01 111198944Sobrien 111298944Sobrien#define ACPI_POS_DECODE (UINT8) 0x00 111346283Sdfr#define ACPI_SUB_DECODE (UINT8) 0x01 111498944Sobrien 111546283Sdfr#define ACPI_PRODUCER (UINT8) 0x00 111646283Sdfr#define ACPI_CONSUMER (UINT8) 0x01 111798944Sobrien 111846283Sdfr 111946283Sdfr/* 112098944Sobrien * If possible, pack the following structures to byte alignment 112198944Sobrien */ 112246283Sdfr#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 112398944Sobrien#pragma pack(1) 112446283Sdfr#endif 112546283Sdfr 112646283Sdfr/* UUID data structures for use in vendor-defined resource descriptors */ 112746283Sdfr 112846283Sdfrtypedef struct acpi_uuid 112998944Sobrien{ 113098944Sobrien UINT8 Data[ACPI_UUID_LENGTH]; 113146283Sdfr} ACPI_UUID; 113298944Sobrien 113346283Sdfrtypedef struct acpi_vendor_uuid 113446283Sdfr{ 113598944Sobrien UINT8 Subtype; 113646283Sdfr UINT8 Data[ACPI_UUID_LENGTH]; 113746283Sdfr 113898944Sobrien} ACPI_VENDOR_UUID; 113946283Sdfr 114046283Sdfr/* 114146283Sdfr * Structures used to describe device resources 114246283Sdfr */ 114346283Sdfrtypedef struct acpi_resource_irq 114446283Sdfr{ 114546283Sdfr UINT8 Triggering; 114698944Sobrien UINT8 Polarity; 114746283Sdfr UINT8 Sharable; 114898944Sobrien UINT8 InterruptCount; 114998944Sobrien UINT8 Interrupts[1]; 115046283Sdfr 115146283Sdfr} ACPI_RESOURCE_IRQ; 115246283Sdfr 115346283Sdfr 115498944Sobrientypedef struct ACPI_RESOURCE_DMA 115546283Sdfr{ 115646283Sdfr UINT8 Type; 115746283Sdfr UINT8 BusMaster; 115846283Sdfr UINT8 Transfer; 115946283Sdfr UINT8 ChannelCount; 116046283Sdfr UINT8 Channels[1]; 116198944Sobrien 116246283Sdfr} ACPI_RESOURCE_DMA; 116346283Sdfr 116446283Sdfr 116546283Sdfrtypedef struct acpi_resource_start_dependent 116646283Sdfr{ 116746283Sdfr UINT8 CompatibilityPriority; 116846283Sdfr UINT8 PerformanceRobustness; 116998944Sobrien 117046283Sdfr} ACPI_RESOURCE_START_DEPENDENT; 117198944Sobrien 117298944Sobrien 117398944Sobrien/* 117446283Sdfr * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not 117546283Sdfr * needed because it has no fields 117646283Sdfr */ 117746283Sdfr 117846283Sdfr 117946283Sdfrtypedef struct acpi_resource_io 118046283Sdfr{ 118146283Sdfr UINT8 IoDecode; 118246283Sdfr UINT8 Alignment; 118346283Sdfr UINT8 AddressLength; 118498944Sobrien UINT16 Minimum; 118598944Sobrien UINT16 Maximum; 118646283Sdfr 118798944Sobrien} ACPI_RESOURCE_IO; 118846283Sdfr 118946283Sdfrtypedef struct acpi_resource_fixed_io 119046283Sdfr{ 119146283Sdfr UINT16 Address; 119246283Sdfr UINT8 AddressLength; 119346283Sdfr 119446283Sdfr} ACPI_RESOURCE_FIXED_IO; 119546283Sdfr 119646283Sdfrtypedef struct acpi_resource_vendor 119746283Sdfr{ 119846283Sdfr UINT16 ByteLength; 119946283Sdfr UINT8 ByteData[1]; 120046283Sdfr 120146283Sdfr} ACPI_RESOURCE_VENDOR; 120246283Sdfr 120346283Sdfr/* Vendor resource with UUID info (introduced in ACPI 3.0) */ 120446283Sdfr 120546283Sdfrtypedef struct acpi_resource_vendor_typed 120646283Sdfr{ 120746283Sdfr UINT16 ByteLength; 120846283Sdfr UINT8 UuidSubtype; 120946283Sdfr UINT8 Uuid[ACPI_UUID_LENGTH]; 121046283Sdfr UINT8 ByteData[1]; 121146283Sdfr 121246283Sdfr} ACPI_RESOURCE_VENDOR_TYPED; 121346283Sdfr 121446283Sdfrtypedef struct acpi_resource_end_tag 121546283Sdfr{ 121646283Sdfr UINT8 Checksum; 121746283Sdfr 121846283Sdfr} ACPI_RESOURCE_END_TAG; 121946283Sdfr 122046283Sdfrtypedef struct acpi_resource_memory24 122146283Sdfr{ 122246283Sdfr UINT8 WriteProtect; 122346283Sdfr UINT16 Minimum; 122446283Sdfr UINT16 Maximum; 122546283Sdfr UINT16 Alignment; 122646283Sdfr UINT16 AddressLength; 122746283Sdfr 122846283Sdfr} ACPI_RESOURCE_MEMORY24; 122946283Sdfr 123046283Sdfrtypedef struct acpi_resource_memory32 123146283Sdfr{ 123246283Sdfr UINT8 WriteProtect; 123346283Sdfr UINT32 Minimum; 123446283Sdfr UINT32 Maximum; 123546283Sdfr UINT32 Alignment; 123646283Sdfr UINT32 AddressLength; 123746283Sdfr 123846283Sdfr} ACPI_RESOURCE_MEMORY32; 123946283Sdfr 124046283Sdfrtypedef struct acpi_resource_fixed_memory32 124146283Sdfr{ 124246283Sdfr UINT8 WriteProtect; 124346283Sdfr UINT32 Address; 124446283Sdfr UINT32 AddressLength; 124546283Sdfr 124646283Sdfr} ACPI_RESOURCE_FIXED_MEMORY32; 124746283Sdfr 124846283Sdfrtypedef struct acpi_memory_attribute 124946283Sdfr{ 125046283Sdfr UINT8 WriteProtect; 125146283Sdfr UINT8 Caching; 125246283Sdfr UINT8 RangeType; 125346283Sdfr UINT8 Translation; 125446283Sdfr 125546283Sdfr} ACPI_MEMORY_ATTRIBUTE; 125646283Sdfr 125746283Sdfrtypedef struct acpi_io_attribute 125846283Sdfr{ 125946283Sdfr UINT8 RangeType; 126046283Sdfr UINT8 Translation; 126146283Sdfr UINT8 TranslationType; 126246283Sdfr UINT8 Reserved1; 126346283Sdfr 126446283Sdfr} ACPI_IO_ATTRIBUTE; 126546283Sdfr 126646283Sdfrtypedef union acpi_resource_attribute 126746283Sdfr{ 126846283Sdfr ACPI_MEMORY_ATTRIBUTE Mem; 126946283Sdfr ACPI_IO_ATTRIBUTE Io; 127098944Sobrien 127146283Sdfr /* Used for the *WordSpace macros */ 127246283Sdfr 127346283Sdfr UINT8 TypeSpecific; 127498944Sobrien 127546283Sdfr} ACPI_RESOURCE_ATTRIBUTE; 127646283Sdfr 127746283Sdfrtypedef struct acpi_resource_source 127898944Sobrien{ 127946283Sdfr UINT8 Index; 128098944Sobrien UINT16 StringLength; 128146283Sdfr char *StringPtr; 128246283Sdfr 128346283Sdfr} ACPI_RESOURCE_SOURCE; 128446283Sdfr 128546283Sdfr/* Fields common to all address descriptors, 16/32/64 bit */ 128698944Sobrien 128746283Sdfr#define ACPI_RESOURCE_ADDRESS_COMMON \ 128846283Sdfr UINT8 ResourceType; \ 128946283Sdfr UINT8 ProducerConsumer; \ 129046283Sdfr UINT8 Decode; \ 129146283Sdfr UINT8 MinAddressFixed; \ 129246283Sdfr UINT8 MaxAddressFixed; \ 129398944Sobrien ACPI_RESOURCE_ATTRIBUTE Info; 129446283Sdfr 129546283Sdfrtypedef struct acpi_resource_address 129646283Sdfr{ 129798944Sobrien ACPI_RESOURCE_ADDRESS_COMMON 129846283Sdfr 129946283Sdfr} ACPI_RESOURCE_ADDRESS; 130046283Sdfr 130198944Sobrientypedef struct acpi_resource_address16 130246283Sdfr{ 130398944Sobrien ACPI_RESOURCE_ADDRESS_COMMON 130498944Sobrien UINT16 Granularity; 130598944Sobrien UINT16 Minimum; 130646283Sdfr UINT16 Maximum; 130746283Sdfr UINT16 TranslationOffset; 130846283Sdfr UINT16 AddressLength; 130946283Sdfr ACPI_RESOURCE_SOURCE ResourceSource; 131046283Sdfr 131146283Sdfr} ACPI_RESOURCE_ADDRESS16; 131246283Sdfr 131346283Sdfrtypedef struct acpi_resource_address32 131446283Sdfr{ 131546283Sdfr ACPI_RESOURCE_ADDRESS_COMMON 131698944Sobrien UINT32 Granularity; 131798944Sobrien UINT32 Minimum; 131898944Sobrien UINT32 Maximum; 131998944Sobrien UINT32 TranslationOffset; 132098944Sobrien UINT32 AddressLength; 132146283Sdfr ACPI_RESOURCE_SOURCE ResourceSource; 132298944Sobrien 132398944Sobrien} ACPI_RESOURCE_ADDRESS32; 132498944Sobrien 132598944Sobrientypedef struct acpi_resource_address64 132698944Sobrien{ 132798944Sobrien ACPI_RESOURCE_ADDRESS_COMMON 132898944Sobrien UINT64 Granularity; 132998944Sobrien UINT64 Minimum; 133098944Sobrien UINT64 Maximum; 133146283Sdfr UINT64 TranslationOffset; 133298944Sobrien UINT64 AddressLength; 133398944Sobrien ACPI_RESOURCE_SOURCE ResourceSource; 133498944Sobrien 133546283Sdfr} ACPI_RESOURCE_ADDRESS64; 133698944Sobrien 133746283Sdfrtypedef struct acpi_resource_extended_address64 133898944Sobrien{ 133998944Sobrien ACPI_RESOURCE_ADDRESS_COMMON 134046283Sdfr UINT8 RevisionID; 134146283Sdfr UINT64 Granularity; 134246283Sdfr UINT64 Minimum; 134346283Sdfr UINT64 Maximum; 134498944Sobrien UINT64 TranslationOffset; 134598944Sobrien UINT64 AddressLength; 134698944Sobrien UINT64 TypeSpecific; 134746283Sdfr 134898944Sobrien} ACPI_RESOURCE_EXTENDED_ADDRESS64; 134998944Sobrien 135098944Sobrientypedef struct acpi_resource_extended_irq 135198944Sobrien{ 135246283Sdfr UINT8 ProducerConsumer; 135346283Sdfr UINT8 Triggering; 135498944Sobrien UINT8 Polarity; 135598944Sobrien UINT8 Sharable; 135646283Sdfr UINT8 InterruptCount; 135798944Sobrien ACPI_RESOURCE_SOURCE ResourceSource; 135898944Sobrien UINT32 Interrupts[1]; 135946283Sdfr 136098944Sobrien} ACPI_RESOURCE_EXTENDED_IRQ; 136146283Sdfr 136298944Sobrientypedef struct acpi_resource_generic_register 136346283Sdfr{ 136446283Sdfr UINT8 SpaceId; 136546283Sdfr UINT8 BitWidth; 136646283Sdfr UINT8 BitOffset; 136746283Sdfr UINT8 AccessSize; 136898944Sobrien UINT64 Address; 136946283Sdfr 137046283Sdfr} ACPI_RESOURCE_GENERIC_REGISTER; 137146283Sdfr 137246283Sdfr 137346283Sdfr/* ACPI_RESOURCE_TYPEs */ 137498944Sobrien 137546283Sdfr#define ACPI_RESOURCE_TYPE_IRQ 0 137698944Sobrien#define ACPI_RESOURCE_TYPE_DMA 1 137746283Sdfr#define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 137898944Sobrien#define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 137946283Sdfr#define ACPI_RESOURCE_TYPE_IO 4 138098944Sobrien#define ACPI_RESOURCE_TYPE_FIXED_IO 5 138146283Sdfr#define ACPI_RESOURCE_TYPE_VENDOR 6 138298944Sobrien#define ACPI_RESOURCE_TYPE_END_TAG 7 138398944Sobrien#define ACPI_RESOURCE_TYPE_MEMORY24 8 138498944Sobrien#define ACPI_RESOURCE_TYPE_MEMORY32 9 138598944Sobrien#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 138646283Sdfr#define ACPI_RESOURCE_TYPE_ADDRESS16 11 138798944Sobrien#define ACPI_RESOURCE_TYPE_ADDRESS32 12 138846283Sdfr#define ACPI_RESOURCE_TYPE_ADDRESS64 13 138998944Sobrien#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ 139098944Sobrien#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 139146283Sdfr#define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 139298944Sobrien#define ACPI_RESOURCE_TYPE_MAX 16 139346283Sdfr 139446283Sdfr 139546283Sdfrtypedef union acpi_resource_data 139646283Sdfr{ 139746283Sdfr ACPI_RESOURCE_IRQ Irq; 139846283Sdfr ACPI_RESOURCE_DMA Dma; 139946283Sdfr ACPI_RESOURCE_START_DEPENDENT StartDpf; 140046283Sdfr ACPI_RESOURCE_IO Io; 140146283Sdfr ACPI_RESOURCE_FIXED_IO FixedIo; 140246283Sdfr ACPI_RESOURCE_VENDOR Vendor; 140398944Sobrien ACPI_RESOURCE_VENDOR_TYPED VendorTyped; 140446283Sdfr ACPI_RESOURCE_END_TAG EndTag; 140546283Sdfr ACPI_RESOURCE_MEMORY24 Memory24; 140646283Sdfr ACPI_RESOURCE_MEMORY32 Memory32; 140798944Sobrien ACPI_RESOURCE_FIXED_MEMORY32 FixedMemory32; 140846283Sdfr ACPI_RESOURCE_ADDRESS16 Address16; 140998944Sobrien ACPI_RESOURCE_ADDRESS32 Address32; 141046283Sdfr ACPI_RESOURCE_ADDRESS64 Address64; 141146283Sdfr ACPI_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 141246283Sdfr ACPI_RESOURCE_EXTENDED_IRQ ExtendedIrq; 141398944Sobrien ACPI_RESOURCE_GENERIC_REGISTER GenericReg; 141498944Sobrien 141598944Sobrien /* Common fields */ 141646283Sdfr 141746283Sdfr ACPI_RESOURCE_ADDRESS Address; /* Common 16/32/64 address fields */ 141846283Sdfr 141946283Sdfr} ACPI_RESOURCE_DATA; 142098944Sobrien 142198944Sobrien 142246283Sdfrtypedef struct acpi_resource 142346283Sdfr{ 142446283Sdfr UINT32 Type; 142546283Sdfr UINT32 Length; 142646283Sdfr ACPI_RESOURCE_DATA Data; 142798944Sobrien 142846283Sdfr} ACPI_RESOURCE; 142998944Sobrien 143046283Sdfr/* restore default alignment */ 143146283Sdfr 143298944Sobrien#pragma pack() 143398944Sobrien 143446283Sdfr 143546283Sdfr#define ACPI_RS_SIZE_MIN 12 143646283Sdfr#define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ 143746283Sdfr#define ACPI_RS_SIZE(Type) (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type)) 143846283Sdfr 143998944Sobrien#define ACPI_NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->Length) 144046283Sdfr 144146283Sdfr 144246283Sdfrtypedef struct acpi_pci_routing_table 144346283Sdfr{ 144446283Sdfr UINT32 Length; 144598944Sobrien UINT32 Pin; 144646283Sdfr ACPI_INTEGER Address; /* here for 64-bit alignment */ 144746283Sdfr UINT32 SourceIndex; 144846283Sdfr char Source[4]; /* pad to 64 bits so sizeof() works in all cases */ 144946283Sdfr 145046283Sdfr} ACPI_PCI_ROUTING_TABLE; 145198944Sobrien 145246283Sdfr 145346283Sdfr#endif /* __ACTYPES_H__ */ 145446283Sdfr