actypes.h revision 87031
1169689Skan/****************************************************************************** 2169689Skan * 3169689Skan * Name: actypes.h - Common data types for the entire ACPI subsystem 4169689Skan * $Revision: 199 $ 5169689Skan * 6169689Skan *****************************************************************************/ 7169689Skan 8169689Skan/****************************************************************************** 9169689Skan * 10169689Skan * 1. Copyright Notice 11169689Skan * 12169689Skan * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. 13169689Skan * All rights reserved. 14169689Skan * 15169689Skan * 2. License 16169689Skan * 17169689Skan * 2.1. This is your license from Intel Corp. under its intellectual property 18169689Skan * rights. You may have additional license terms from the party that provided 19169689Skan * you this software, covering your right to use that party's intellectual 20169689Skan * property rights. 21169689Skan * 22169689Skan * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 23169689Skan * copy of the source code appearing in this file ("Covered Code") an 24169689Skan * irrevocable, perpetual, worldwide license under Intel's copyrights in the 25169689Skan * base code distributed originally by Intel ("Original Intel Code") to copy, 26169689Skan * make derivatives, distribute, use and display any portion of the Covered 27169689Skan * Code in any form, with the right to sublicense such rights; and 28169689Skan * 29169689Skan * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 30169689Skan * license (with the right to sublicense), under only those claims of Intel 31169689Skan * patents that are infringed by the Original Intel Code, to make, use, sell, 32169689Skan * offer to sell, and import the Covered Code and derivative works thereof 33169689Skan * solely to the minimum extent necessary to exercise the above copyright 34169689Skan * license, and in no event shall the patent license extend to any additions 35169689Skan * to or modifications of the Original Intel Code. No other license or right 36169689Skan * is granted directly or by implication, estoppel or otherwise; 37169689Skan * 38169689Skan * The above copyright and patent license is granted only if the following 39169689Skan * conditions are met: 40169689Skan * 41169689Skan * 3. Conditions 42169689Skan * 43169689Skan * 3.1. Redistribution of Source with Rights to Further Distribute Source. 44169689Skan * Redistribution of source code of any substantial portion of the Covered 45169689Skan * Code or modification with rights to further distribute source must include 46169689Skan * the above Copyright Notice, the above License, this list of Conditions, 47169689Skan * and the following Disclaimer and Export Compliance provision. In addition, 48169689Skan * Licensee must cause all Covered Code to which Licensee contributes to 49169689Skan * contain a file documenting the changes Licensee made to create that Covered 50169689Skan * Code and the date of any change. Licensee must include in that file the 51169689Skan * documentation of any changes made by any predecessor Licensee. Licensee 52169689Skan * must include a prominent statement that the modification is derived, 53169689Skan * directly or indirectly, from Original Intel Code. 54169689Skan * 55169689Skan * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 56169689Skan * Redistribution of source code of any substantial portion of the Covered 57169689Skan * Code or modification without rights to further distribute source must 58169689Skan * include the following Disclaimer and Export Compliance provision in the 59169689Skan * documentation and/or other materials provided with distribution. In 60169689Skan * addition, Licensee may not authorize further sublicense of source of any 61169689Skan * portion of the Covered Code, and must include terms to the effect that the 62169689Skan * license from Licensee to its licensee is limited to the intellectual 63169689Skan * property embodied in the software Licensee provides to its licensee, and 64169689Skan * not to intellectual property embodied in modifications its licensee may 65169689Skan * make. 66169689Skan * 67169689Skan * 3.3. Redistribution of Executable. Redistribution in executable form of any 68169689Skan * substantial portion of the Covered Code or modification must reproduce the 69169689Skan * above Copyright Notice, and the following Disclaimer and Export Compliance 70169689Skan * provision in the documentation and/or other materials provided with the 71169689Skan * distribution. 72169689Skan * 73169689Skan * 3.4. Intel retains all right, title, and interest in and to the Original 74169689Skan * Intel Code. 75169689Skan * 76169689Skan * 3.5. Neither the name Intel nor any other trademark owned or controlled by 77169689Skan * Intel shall be used in advertising or otherwise to promote the sale, use or 78169689Skan * other dealings in products derived from or relating to the Covered Code 79169689Skan * without prior written authorization from Intel. 80169689Skan * 81169689Skan * 4. Disclaimer and Export Compliance 82169689Skan * 83169689Skan * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 84169689Skan * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 85169689Skan * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 86169689Skan * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 87169689Skan * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 88169689Skan * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 89169689Skan * PARTICULAR PURPOSE. 90169689Skan * 91169689Skan * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 92169689Skan * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 93169689Skan * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 94169689Skan * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 95169689Skan * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 96169689Skan * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 97169689Skan * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 98169689Skan * LIMITED REMEDY. 99169689Skan * 100169689Skan * 4.3. Licensee shall not export, either directly or indirectly, any of this 101169689Skan * software or system incorporating such software without first obtaining any 102169689Skan * required license or other approval from the U. S. Department of Commerce or 103169689Skan * any other agency or department of the United States Government. In the 104169689Skan * event Licensee exports any such software from the United States or 105169689Skan * re-exports any such software from a foreign destination, Licensee shall 106169689Skan * ensure that the distribution and export/re-export of the software is in 107169689Skan * compliance with all laws, regulations, orders, or other restrictions of the 108169689Skan * U.S. Export Administration Regulations. Licensee agrees that neither it nor 109169689Skan * any of its subsidiaries will export/re-export any technical data, process, 110169689Skan * software, or service, directly or indirectly, to any country for which the 111169689Skan * United States government or any agency thereof requires an export license, 112169689Skan * other governmental approval, or letter of assurance, without first obtaining 113169689Skan * such license, approval or letter. 114169689Skan * 115169689Skan *****************************************************************************/ 116169689Skan 117169689Skan#ifndef __ACTYPES_H__ 118169689Skan#define __ACTYPES_H__ 119169689Skan 120169689Skan/*! [Begin] no source code translation (keep the typedefs) */ 121169689Skan 122169689Skan/* 123169689Skan * Data types - Fixed across all compilation models 124169689Skan * 125169689Skan * BOOLEAN Logical Boolean. 126169689Skan * 1 byte value containing a 0 for FALSE or a 1 for TRUE. 127169689Skan * Other values are undefined. 128169689Skan * 129169689Skan * INT8 8-bit (1 byte) signed value 130169689Skan * UINT8 8-bit (1 byte) unsigned value 131169689Skan * INT16 16-bit (2 byte) signed value 132169689Skan * UINT16 16-bit (2 byte) unsigned value 133169689Skan * INT32 32-bit (4 byte) signed value 134169689Skan * UINT32 32-bit (4 byte) unsigned value 135169689Skan * INT64 64-bit (8 byte) signed value 136169689Skan * UINT64 64-bit (8 byte) unsigned value 137169689Skan * NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value 138169689Skan * NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value 139169689Skan * UCHAR Character. 1 byte unsigned value. 140169689Skan */ 141169689Skan 142169689Skan 143169689Skan#ifdef _IA64 144169689Skan/* 145169689Skan * 64-bit type definitions 146169689Skan */ 147169689Skantypedef unsigned char UINT8; 148169689Skantypedef unsigned char BOOLEAN; 149169689Skantypedef unsigned char UCHAR; 150169689Skantypedef unsigned short UINT16; 151169689Skantypedef int INT32; 152169689Skantypedef unsigned int UINT32; 153169689Skantypedef COMPILER_DEPENDENT_UINT64 UINT64; 154169689Skan 155169689Skantypedef UINT64 NATIVE_UINT; 156169689Skantypedef INT64 NATIVE_INT; 157169689Skan 158169689Skantypedef NATIVE_UINT ACPI_TBLPTR; 159169689Skantypedef UINT64 ACPI_IO_ADDRESS; 160169689Skantypedef UINT64 ACPI_PHYSICAL_ADDRESS; 161169689Skan 162169689Skan#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */ 163169689Skan#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */ 164169689Skan 165169689Skan 166169689Skan#elif _IA16 167169689Skan/* 168169689Skan * 16-bit type definitions 169169689Skan */ 170169689Skantypedef unsigned char UINT8; 171169689Skantypedef unsigned char BOOLEAN; 172169689Skantypedef unsigned char UCHAR; 173169689Skantypedef unsigned int UINT16; 174169689Skantypedef long INT32; 175169689Skantypedef int INT16; 176169689Skantypedef unsigned long UINT32; 177169689Skan 178169689Skantypedef struct 179169689Skan{ 180169689Skan UINT32 Lo; 181169689Skan UINT32 Hi; 182169689Skan 183169689Skan} UINT64; 184169689Skan 185169689Skantypedef UINT16 NATIVE_UINT; 186169689Skantypedef INT16 NATIVE_INT; 187169689Skan 188169689Skantypedef UINT32 ACPI_TBLPTR; 189169689Skantypedef UINT32 ACPI_IO_ADDRESS; 190169689Skantypedef char *ACPI_PHYSICAL_ADDRESS; 191169689Skan 192169689Skan#define ALIGNED_ADDRESS_BOUNDARY 0x00000002 193169689Skan#define _HW_ALIGNMENT_SUPPORT 194169689Skan#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ 195169689Skan 196169689Skan/* 197169689Skan * (16-bit only) internal integers must be 32-bits, so 198169689Skan * 64-bit integers cannot be supported 199169689Skan */ 200169689Skan#define ACPI_NO_INTEGER64_SUPPORT 201169689Skan 202169689Skan 203169689Skan#else 204169689Skan/* 205169689Skan * 32-bit type definitions (default) 206169689Skan */ 207169689Skantypedef unsigned char UINT8; 208169689Skantypedef unsigned char BOOLEAN; 209169689Skantypedef unsigned char UCHAR; 210169689Skantypedef unsigned short UINT16; 211169689Skantypedef int INT32; 212169689Skantypedef unsigned int UINT32; 213169689Skantypedef COMPILER_DEPENDENT_UINT64 UINT64; 214169689Skan 215169689Skantypedef UINT32 NATIVE_UINT; 216169689Skantypedef INT32 NATIVE_INT; 217169689Skan 218169689Skantypedef NATIVE_UINT ACPI_TBLPTR; 219169689Skantypedef UINT32 ACPI_IO_ADDRESS; 220169689Skantypedef UINT64 ACPI_PHYSICAL_ADDRESS; 221169689Skan 222169689Skan#define ALIGNED_ADDRESS_BOUNDARY 0x00000004 223169689Skan#define _HW_ALIGNMENT_SUPPORT 224169689Skan#endif 225169689Skan 226169689Skan 227169689Skan 228169689Skan/* 229169689Skan * Miscellaneous common types 230169689Skan */ 231169689Skan 232169689Skantypedef UINT32 UINT32_BIT; 233169689Skantypedef NATIVE_UINT ACPI_PTRDIFF; 234169689Skantypedef char NATIVE_CHAR; 235169689Skan 236169689Skan 237169689Skan/* 238169689Skan * Data type ranges 239169689Skan */ 240169689Skan 241169689Skan#define ACPI_UINT8_MAX (UINT8) 0xFF 242169689Skan#define ACPI_UINT16_MAX (UINT16) 0xFFFF 243169689Skan#define ACPI_UINT32_MAX (UINT32) 0xFFFFFFFF 244169689Skan#define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFF 245169689Skan 246169689Skan 247169689Skan#ifdef DEFINE_ALTERNATE_TYPES 248169689Skan/* 249169689Skan * Types used only in translated source 250169689Skan */ 251169689Skantypedef INT32 s32; 252169689Skantypedef UINT8 u8; 253169689Skantypedef UINT16 u16; 254169689Skantypedef UINT32 u32; 255169689Skantypedef UINT64 u64; 256169689Skan#endif 257169689Skan/*! [End] no source code translation !*/ 258169689Skan 259169689Skan 260169689Skan/* 261169689Skan * Useful defines 262169689Skan */ 263169689Skan 264169689Skan#ifdef FALSE 265169689Skan#undef FALSE 266169689Skan#endif 267169689Skan#define FALSE (1 == 0) 268169689Skan 269169689Skan#ifdef TRUE 270169689Skan#undef TRUE 271169689Skan#endif 272169689Skan#define TRUE (1 == 1) 273169689Skan 274169689Skan#ifndef NULL 275169689Skan#define NULL (void *) 0 276169689Skan#endif 277169689Skan 278169689Skan 279169689Skan/* 280169689Skan * Local datatypes 281169689Skan */ 282169689Skan 283169689Skantypedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 284169689Skantypedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 285169689Skantypedef char* ACPI_STRING; /* Null terminated ASCII string */ 286169689Skantypedef void* ACPI_HANDLE; /* Actually a ptr to an Node */ 287169689Skan 288169689Skantypedef struct 289169689Skan{ 290169689Skan UINT32 Lo; 291169689Skan UINT32 Hi; 292169689Skan 293169689Skan} UINT64_STRUCT; 294169689Skan 295169689Skantypedef union 296169689Skan{ 297169689Skan UINT64 Full; 298169689Skan UINT64_STRUCT Part; 299169689Skan 300169689Skan} UINT64_OVERLAY; 301169689Skan 302169689Skan 303169689Skan/* 304169689Skan * Acpi integer width. In ACPI version 1, integers are 305169689Skan * 32 bits. In ACPI version 2, integers are 64 bits. 306169689Skan * Note that this pertains to the ACPI integer type only, not 307169689Skan * other integers used in the implementation of the ACPI CA 308169689Skan * subsystem. 309169689Skan */ 310169689Skan#ifdef ACPI_NO_INTEGER64_SUPPORT 311169689Skan 312169689Skan/* 32-bit integers only, no 64-bit support */ 313169689Skan 314169689Skantypedef UINT32 ACPI_INTEGER; 315169689Skan#define ACPI_INTEGER_MAX ACPI_UINT32_MAX 316169689Skan#define ACPI_INTEGER_BIT_SIZE 32 317169689Skan#define ACPI_MAX_BCD_VALUE 99999999 318169689Skan#define ACPI_MAX_BCD_DIGITS 8 319169689Skan#define ACPI_MAX_DECIMAL_DIGITS 10 320169689Skan 321169689Skan#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */ 322169689Skan 323169689Skan 324169689Skan#else 325169689Skan 326169689Skan/* 64-bit integers */ 327169689Skan 328169689Skantypedef UINT64 ACPI_INTEGER; 329169689Skan#define ACPI_INTEGER_MAX ACPI_UINT64_MAX 330169689Skan#define ACPI_INTEGER_BIT_SIZE 64 331169689Skan#define ACPI_MAX_BCD_VALUE 9999999999999999 332169689Skan#define ACPI_MAX_BCD_DIGITS 16 333169689Skan#define ACPI_MAX_DECIMAL_DIGITS 19 334169689Skan 335169689Skan#ifdef _IA64 336169689Skan#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ 337169689Skan#endif 338169689Skan#endif 339169689Skan 340169689Skan 341169689Skan/* 342169689Skan * Constants with special meanings 343169689Skan */ 344169689Skan 345169689Skan#define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1) 346169689Skan 347169689Skan 348169689Skan/* 349169689Skan * Initialization sequence 350169689Skan */ 351169689Skan#define ACPI_FULL_INITIALIZATION 0x00 352169689Skan#define ACPI_NO_ADDRESS_SPACE_INIT 0x01 353169689Skan#define ACPI_NO_HARDWARE_INIT 0x02 354169689Skan#define ACPI_NO_EVENT_INIT 0x04 355169689Skan#define ACPI_NO_ACPI_ENABLE 0x08 356169689Skan#define ACPI_NO_DEVICE_INIT 0x10 357169689Skan#define ACPI_NO_OBJECT_INIT 0x20 358169689Skan 359169689Skan/* 360169689Skan * Initialization state 361169689Skan */ 362169689Skan#define ACPI_INITIALIZED_OK 0x01 363169689Skan 364169689Skan/* 365169689Skan * Power state values 366169689Skan */ 367169689Skan 368169689Skan#define ACPI_STATE_UNKNOWN (UINT8) 0xFF 369169689Skan 370169689Skan#define ACPI_STATE_S0 (UINT8) 0 371169689Skan#define ACPI_STATE_S1 (UINT8) 1 372169689Skan#define ACPI_STATE_S2 (UINT8) 2 373169689Skan#define ACPI_STATE_S3 (UINT8) 3 374169689Skan#define ACPI_STATE_S4 (UINT8) 4 375169689Skan#define ACPI_STATE_S5 (UINT8) 5 376169689Skan#define ACPI_S_STATES_MAX ACPI_STATE_S5 377169689Skan#define ACPI_S_STATE_COUNT 6 378169689Skan 379169689Skan#define ACPI_STATE_D0 (UINT8) 0 380169689Skan#define ACPI_STATE_D1 (UINT8) 1 381169689Skan#define ACPI_STATE_D2 (UINT8) 2 382169689Skan#define ACPI_STATE_D3 (UINT8) 3 383169689Skan#define ACPI_D_STATES_MAX ACPI_STATE_D3 384169689Skan#define ACPI_D_STATE_COUNT 4 385169689Skan 386169689Skan/* 387169689Skan * Sleep type invalid value 388169689Skan */ 389169689Skan#define ACPI_SLEEP_TYPE_MAX 0x7 390169689Skan#define ACPI_SLEEP_TYPE_INVALID 0xFF 391169689Skan 392169689Skan/* 393169689Skan * Standard notify values 394169689Skan */ 395169689Skan#define ACPI_NOTIFY_BUS_CHECK (UINT8) 0 396169689Skan#define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 1 397169689Skan#define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 2 398169689Skan#define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 3 399169689Skan#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 4 400169689Skan#define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 5 401169689Skan#define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 6 402169689Skan#define ACPI_NOTIFY_POWER_FAULT (UINT8) 7 403169689Skan 404169689Skan 405169689Skan/* 406169689Skan * Table types. These values are passed to the table related APIs 407169689Skan */ 408169689Skan 409169689Skantypedef UINT32 ACPI_TABLE_TYPE; 410169689Skan 411169689Skan#define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0 412169689Skan#define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1 413169689Skan#define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2 414169689Skan#define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3 415169689Skan#define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4 416169689Skan#define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5 417169689Skan#define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6 418169689Skan#define ACPI_TABLE_MAX 6 419169689Skan#define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1) 420169689Skan 421169689Skan 422169689Skan/* 423169689Skan * Types associated with names. The first group of 424169689Skan * values correspond to the definition of the ACPI 425169689Skan * ObjectType operator (See the ACPI Spec). Therefore, 426169689Skan * only add to the first group if the spec changes! 427169689Skan * 428169689Skan * Types must be kept in sync with the AcpiNsProperties 429169689Skan * and AcpiNsTypeNames arrays 430169689Skan */ 431169689Skan 432169689Skantypedef UINT32 ACPI_OBJECT_TYPE; 433169689Skantypedef UINT8 ACPI_OBJECT_TYPE8; 434169689Skan 435169689Skan 436169689Skan#define ACPI_TYPE_ANY 0x00 437169689Skan#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 438169689Skan#define ACPI_TYPE_STRING 0x02 439169689Skan#define ACPI_TYPE_BUFFER 0x03 440169689Skan#define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 441169689Skan#define ACPI_TYPE_FIELD_UNIT 0x05 442169689Skan#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 443169689Skan#define ACPI_TYPE_EVENT 0x07 444169689Skan#define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 445169689Skan#define ACPI_TYPE_MUTEX 0x09 446169689Skan#define ACPI_TYPE_REGION 0x0A 447169689Skan#define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 448169689Skan#define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 449169689Skan#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 450169689Skan#define ACPI_TYPE_BUFFER_FIELD 0x0E 451169689Skan#define ACPI_TYPE_DDB_HANDLE 0x0F 452169689Skan#define ACPI_TYPE_DEBUG_OBJECT 0x10 453169689Skan 454169689Skan#define ACPI_TYPE_MAX 0x10 455169689Skan 456169689Skan/* 457169689Skan * This section contains object types that do not relate to the ACPI ObjectType operator. 458169689Skan * They are used for various internal purposes only. If new predefined ACPI_TYPEs are 459169689Skan * added (via the ACPI specification), these internal types must move upwards. 460169689Skan * Also, values exceeding the largest official ACPI ObjectType must not overlap with 461169689Skan * defined AML opcodes. 462169689Skan */ 463169689Skan#define INTERNAL_TYPE_BEGIN 0x11 464169689Skan 465169689Skan#define INTERNAL_TYPE_REGION_FIELD 0x11 466169689Skan#define INTERNAL_TYPE_BANK_FIELD 0x12 467169689Skan#define INTERNAL_TYPE_INDEX_FIELD 0x13 468169689Skan#define INTERNAL_TYPE_REFERENCE 0x14 /* Arg#, Local#, Name, Debug; used only in descriptors */ 469169689Skan#define INTERNAL_TYPE_ALIAS 0x15 470169689Skan#define INTERNAL_TYPE_NOTIFY 0x16 471169689Skan#define INTERNAL_TYPE_ADDRESS_HANDLER 0x17 472169689Skan#define INTERNAL_TYPE_RESOURCE 0x18 473169689Skan#define INTERNAL_TYPE_RESOURCE_FIELD 0x19 474169689Skan 475169689Skan 476169689Skan#define INTERNAL_TYPE_NODE_MAX 0x19 477169689Skan 478169689Skan/* These are pseudo-types because there are never any namespace nodes with these types */ 479169689Skan 480169689Skan#define INTERNAL_TYPE_FIELD_DEFN 0x1A /* Name, ByteConst, multiple FieldElement */ 481169689Skan#define INTERNAL_TYPE_BANK_FIELD_DEFN 0x1B /* 2 Name,DWordConst,ByteConst,multi FieldElement */ 482169689Skan#define INTERNAL_TYPE_INDEX_FIELD_DEFN 0x1C /* 2 Name, ByteConst, multiple FieldElement */ 483169689Skan#define INTERNAL_TYPE_IF 0x1D 484169689Skan#define INTERNAL_TYPE_ELSE 0x1E 485169689Skan#define INTERNAL_TYPE_WHILE 0x1F 486169689Skan#define INTERNAL_TYPE_SCOPE 0x20 /* Name, multiple Node */ 487169689Skan#define INTERNAL_TYPE_DEF_ANY 0x21 /* type is Any, suppress search of enclosing scopes */ 488169689Skan#define INTERNAL_TYPE_EXTRA 0x22 489169689Skan#define INTERNAL_TYPE_DATA 0x23 490169689Skan 491169689Skan#define INTERNAL_TYPE_MAX 0x23 492169689Skan 493169689Skan#define INTERNAL_TYPE_INVALID 0x24 494169689Skan#define ACPI_TYPE_NOT_FOUND 0xFF 495169689Skan 496169689Skan 497169689Skan/* 498169689Skan * Bitmapped ACPI types 499169689Skan * Used internally only 500169689Skan */ 501169689Skan#define ACPI_BTYPE_ANY 0x00000000 502169689Skan#define ACPI_BTYPE_INTEGER 0x00000001 503169689Skan#define ACPI_BTYPE_STRING 0x00000002 504169689Skan#define ACPI_BTYPE_BUFFER 0x00000004 505169689Skan#define ACPI_BTYPE_PACKAGE 0x00000008 506169689Skan#define ACPI_BTYPE_FIELD_UNIT 0x00000010 507169689Skan#define ACPI_BTYPE_DEVICE 0x00000020 508169689Skan#define ACPI_BTYPE_EVENT 0x00000040 509169689Skan#define ACPI_BTYPE_METHOD 0x00000080 510169689Skan#define ACPI_BTYPE_MUTEX 0x00000100 511169689Skan#define ACPI_BTYPE_REGION 0x00000200 512169689Skan#define ACPI_BTYPE_POWER 0x00000400 513169689Skan#define ACPI_BTYPE_PROCESSOR 0x00000800 514169689Skan#define ACPI_BTYPE_THERMAL 0x00001000 515169689Skan#define ACPI_BTYPE_BUFFER_FIELD 0x00002000 516169689Skan#define ACPI_BTYPE_DDB_HANDLE 0x00004000 517169689Skan#define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 518169689Skan#define ACPI_BTYPE_REFERENCE 0x00010000 519169689Skan#define ACPI_BTYPE_RESOURCE 0x00020000 520169689Skan 521169689Skan#define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) 522169689Skan 523169689Skan#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) 524169689Skan#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) 525169689Skan#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) 526169689Skan#define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ 527169689Skan#define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF 528169689Skan 529169689Skan/* 530169689Skan * All I/O 531169689Skan */ 532169689Skan#define ACPI_READ 0 533169689Skan#define ACPI_WRITE 1 534169689Skan 535169689Skan 536169689Skan/* 537169689Skan * AcpiEvent Types: 538169689Skan * ------------ 539169689Skan * Fixed & general purpose... 540169689Skan */ 541169689Skan 542169689Skantypedef UINT32 ACPI_EVENT_TYPE; 543169689Skan 544169689Skan#define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0 545169689Skan#define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1 546169689Skan 547169689Skan/* 548169689Skan * Fixed events 549169689Skan */ 550169689Skan 551169689Skan#define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0 552169689Skan /* 553169689Skan * There's no bus master event so index 1 is used for IRQ's that are not 554169689Skan * handled by the SCI handler 555169689Skan */ 556169689Skan#define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1 557169689Skan#define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2 558169689Skan#define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3 559169689Skan#define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4 560169689Skan#define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5 561169689Skan#define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6 562169689Skan#define ACPI_EVENT_MAX 6 563169689Skan#define ACPI_NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7 564169689Skan 565169689Skan#define ACPI_GPE_INVALID 0xFF 566169689Skan#define ACPI_GPE_MAX 0xFF 567169689Skan#define ACPI_NUM_GPE 256 568169689Skan 569169689Skan#define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1 570169689Skan#define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2 571169689Skan 572169689Skan/* 573169689Skan * GPEs 574169689Skan */ 575169689Skan#define ACPI_EVENT_ENABLE 0x1 576169689Skan#define ACPI_EVENT_WAKE_ENABLE 0x2 577169689Skan 578169689Skan#define ACPI_EVENT_DISABLE 0x1 579169689Skan#define ACPI_EVENT_WAKE_DISABLE 0x2 580169689Skan 581169689Skan 582169689Skan/* 583169689Skan * AcpiEvent Status: 584169689Skan * ------------- 585169689Skan * The encoding of ACPI_EVENT_STATUS is illustrated below. 586169689Skan * Note that a set bit (1) indicates the property is TRUE 587169689Skan * (e.g. if bit 0 is set then the event is enabled). 588169689Skan * +-------------+-+-+-+ 589169689Skan * | Bits 31:3 |2|1|0| 590169689Skan * +-------------+-+-+-+ 591169689Skan * | | | | 592169689Skan * | | | +- Enabled? 593169689Skan * | | +--- Enabled for wake? 594169689Skan * | +----- Set? 595169689Skan * +----------- <Reserved> 596169689Skan */ 597169689Skantypedef UINT32 ACPI_EVENT_STATUS; 598169689Skan 599169689Skan#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 600169689Skan#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 601169689Skan#define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 602169689Skan#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 603169689Skan 604169689Skan 605169689Skan/* Notify types */ 606169689Skan 607169689Skan#define ACPI_SYSTEM_NOTIFY 0 608169689Skan#define ACPI_DEVICE_NOTIFY 1 609169689Skan#define ACPI_MAX_NOTIFY_HANDLER_TYPE 1 610169689Skan 611169689Skan#define MAX_SYS_NOTIFY 0x7f 612169689Skan 613169689Skan 614169689Skan/* Address Space (Operation Region) Types */ 615169689Skan 616169689Skantypedef UINT8 ACPI_ADR_SPACE_TYPE; 617169689Skan 618169689Skan#define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 619169689Skan#define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 620169689Skan#define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 621169689Skan#define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 622169689Skan#define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 623169689Skan#define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 624169689Skan#define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 625169689Skan 626169689Skan 627169689Skan/* 628169689Skan * External ACPI object definition 629169689Skan */ 630169689Skan 631169689Skantypedef union AcpiObj 632169689Skan{ 633169689Skan ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 634169689Skan struct 635169689Skan { 636169689Skan ACPI_OBJECT_TYPE Type; 637169689Skan ACPI_INTEGER Value; /* The actual number */ 638169689Skan } Integer; 639169689Skan 640169689Skan struct 641169689Skan { 642169689Skan ACPI_OBJECT_TYPE Type; 643169689Skan UINT32 Length; /* # of bytes in string, excluding trailing null */ 644169689Skan NATIVE_CHAR *Pointer; /* points to the string value */ 645169689Skan } String; 646169689Skan 647169689Skan struct 648169689Skan { 649169689Skan ACPI_OBJECT_TYPE Type; 650169689Skan UINT32 Length; /* # of bytes in buffer */ 651169689Skan UINT8 *Pointer; /* points to the buffer */ 652169689Skan } Buffer; 653169689Skan 654169689Skan struct 655169689Skan { 656169689Skan ACPI_OBJECT_TYPE Type; 657169689Skan UINT32 Fill1; 658169689Skan ACPI_HANDLE Handle; /* object reference */ 659169689Skan } Reference; 660169689Skan 661169689Skan struct 662169689Skan { 663169689Skan ACPI_OBJECT_TYPE Type; 664169689Skan UINT32 Count; /* # of elements in package */ 665169689Skan union AcpiObj *Elements; /* Pointer to an array of ACPI_OBJECTs */ 666169689Skan } Package; 667169689Skan 668169689Skan struct 669169689Skan { 670169689Skan ACPI_OBJECT_TYPE Type; 671169689Skan UINT32 ProcId; 672169689Skan ACPI_IO_ADDRESS PblkAddress; 673169689Skan UINT32 PblkLength; 674169689Skan } Processor; 675169689Skan 676169689Skan struct 677169689Skan { 678169689Skan ACPI_OBJECT_TYPE Type; 679169689Skan UINT32 SystemLevel; 680169689Skan UINT32 ResourceOrder; 681169689Skan } PowerResource; 682169689Skan 683169689Skan} ACPI_OBJECT, *PACPI_OBJECT; 684169689Skan 685169689Skan 686169689Skan/* 687169689Skan * List of objects, used as a parameter list for control method evaluation 688169689Skan */ 689169689Skan 690169689Skantypedef struct AcpiObjList 691169689Skan{ 692169689Skan UINT32 Count; 693169689Skan ACPI_OBJECT *Pointer; 694169689Skan 695169689Skan} ACPI_OBJECT_LIST, *PACPI_OBJECT_LIST; 696169689Skan 697169689Skan 698169689Skan/* 699169689Skan * Miscellaneous common Data Structures used by the interfaces 700169689Skan */ 701169689Skan 702169689Skantypedef struct 703169689Skan{ 704169689Skan UINT32 Length; /* Length in bytes of the buffer */ 705169689Skan void *Pointer; /* pointer to buffer */ 706169689Skan 707169689Skan} ACPI_BUFFER; 708169689Skan 709169689Skan 710169689Skan/* 711169689Skan * NameType for AcpiGetName 712169689Skan */ 713169689Skan 714169689Skan#define ACPI_FULL_PATHNAME 0 715169689Skan#define ACPI_SINGLE_NAME 1 716169689Skan#define ACPI_NAME_TYPE_MAX 1 717169689Skan 718169689Skan 719169689Skan/* 720169689Skan * Structure and flags for AcpiGetSystemInfo 721169689Skan */ 722169689Skan 723169689Skan#define SYS_MODE_UNKNOWN 0x0000 724169689Skan#define SYS_MODE_ACPI 0x0001 725169689Skan#define SYS_MODE_LEGACY 0x0002 726169689Skan#define SYS_MODES_MASK 0x0003 727169689Skan 728169689Skan 729169689Skan/* 730169689Skan * ACPI Table Info. One per ACPI table _type_ 731169689Skan */ 732169689Skantypedef struct AcpiTableInfo 733169689Skan{ 734169689Skan UINT32 Count; 735169689Skan 736169689Skan} ACPI_TABLE_INFO; 737169689Skan 738169689Skan 739169689Skan/* 740169689Skan * System info returned by AcpiGetSystemInfo() 741169689Skan */ 742169689Skan 743169689Skantypedef struct _AcpiSysInfo 744169689Skan{ 745169689Skan UINT32 AcpiCaVersion; 746169689Skan UINT32 Flags; 747169689Skan UINT32 TimerResolution; 748169689Skan UINT32 Reserved1; 749169689Skan UINT32 Reserved2; 750169689Skan UINT32 DebugLevel; 751169689Skan UINT32 DebugLayer; 752169689Skan UINT32 NumTableTypes; 753169689Skan ACPI_TABLE_INFO TableInfo [NUM_ACPI_TABLES]; 754169689Skan 755169689Skan} ACPI_SYSTEM_INFO; 756169689Skan 757169689Skan 758169689Skan/* 759169689Skan * Various handlers and callback procedures 760169689Skan */ 761169689Skan 762169689Skantypedef 763169689SkanUINT32 (*ACPI_EVENT_HANDLER) ( 764169689Skan void *Context); 765169689Skan 766169689Skantypedef 767169689Skanvoid (*ACPI_GPE_HANDLER) ( 768169689Skan void *Context); 769169689Skan 770169689Skantypedef 771169689Skanvoid (*ACPI_NOTIFY_HANDLER) ( 772169689Skan ACPI_HANDLE Device, 773169689Skan UINT32 Value, 774169689Skan void *Context); 775169689Skan 776169689Skantypedef 777169689Skanvoid (*ACPI_OBJECT_HANDLER) ( 778169689Skan ACPI_HANDLE Object, 779169689Skan UINT32 Function, 780169689Skan void *Data); 781169689Skan 782169689Skan 783169689Skan/* Address Spaces (Operation Regions */ 784169689Skan 785169689Skantypedef 786169689SkanACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 787169689Skan UINT32 Function, 788169689Skan ACPI_PHYSICAL_ADDRESS Address, 789169689Skan UINT32 BitWidth, 790169689Skan ACPI_INTEGER *Value, 791169689Skan void *HandlerContext, 792169689Skan void *RegionContext); 793169689Skan 794169689Skan#define ACPI_DEFAULT_HANDLER ((ACPI_ADR_SPACE_HANDLER) NULL) 795169689Skan 796169689Skan 797169689Skantypedef 798169689SkanACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 799169689Skan ACPI_HANDLE RegionHandle, 800169689Skan UINT32 Function, 801169689Skan void *HandlerContext, 802169689Skan void **RegionContext); 803169689Skan 804169689Skan#define ACPI_REGION_ACTIVATE 0 805169689Skan#define ACPI_REGION_DEACTIVATE 1 806169689Skan 807169689Skantypedef 808169689SkanACPI_STATUS (*ACPI_WALK_CALLBACK) ( 809169689Skan ACPI_HANDLE ObjHandle, 810169689Skan UINT32 NestingLevel, 811169689Skan void *Context, 812169689Skan void **ReturnValue); 813169689Skan 814169689Skan 815169689Skan/* Interrupt handler return values */ 816169689Skan 817169689Skan#define INTERRUPT_NOT_HANDLED 0x00 818169689Skan#define INTERRUPT_HANDLED 0x01 819169689Skan 820169689Skan 821169689Skan/* Structure and flags for AcpiGetDeviceInfo */ 822169689Skan 823169689Skan#define ACPI_VALID_HID 0x1 824169689Skan#define ACPI_VALID_UID 0x2 825169689Skan#define ACPI_VALID_ADR 0x4 826169689Skan#define ACPI_VALID_STA 0x8 827169689Skan 828169689Skan 829169689Skan#define ACPI_COMMON_OBJ_INFO \ 830169689Skan ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ 831169689Skan ACPI_NAME Name /* ACPI object Name */ 832169689Skan 833169689Skan 834169689Skantypedef struct 835169689Skan{ 836169689Skan ACPI_COMMON_OBJ_INFO; 837169689Skan} ACPI_OBJ_INFO_HEADER; 838169689Skan 839169689Skan 840169689Skantypedef struct 841169689Skan{ 842169689Skan ACPI_COMMON_OBJ_INFO; 843169689Skan 844169689Skan UINT32 Valid; /* Are the next bits legit? */ 845169689Skan NATIVE_CHAR HardwareId[9]; /* _HID value if any */ 846169689Skan NATIVE_CHAR UniqueId[9]; /* _UID value if any */ 847169689Skan ACPI_INTEGER Address; /* _ADR value if any */ 848169689Skan UINT32 CurrentStatus; /* _STA value */ 849169689Skan} ACPI_DEVICE_INFO; 850169689Skan 851169689Skan 852169689Skan/* Context structs for address space handlers */ 853169689Skan 854169689Skantypedef struct 855169689Skan{ 856169689Skan UINT16 Segment; 857169689Skan UINT16 Bus; 858169689Skan UINT16 Device; 859169689Skan UINT16 Function; 860169689Skan} ACPI_PCI_ID; 861169689Skan 862169689Skan 863169689Skantypedef struct 864169689Skan{ 865169689Skan ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 866169689Skan UINT8 *MappedLogicalAddress; 867169689Skan UINT32 MappedLength; 868169689Skan} ACPI_MEM_SPACE_CONTEXT; 869169689Skan 870169689Skan 871169689Skan/* Sleep states */ 872169689Skan 873169689Skan#define ACPI_NUM_SLEEP_STATES 7 874169689Skan 875169689Skan 876169689Skan/* 877169689Skan * Definitions for Resource Attributes 878169689Skan */ 879169689Skan 880169689Skan/* 881169689Skan * Memory Attributes 882169689Skan */ 883169689Skan#define READ_ONLY_MEMORY (UINT8) 0x00 884169689Skan#define READ_WRITE_MEMORY (UINT8) 0x01 885169689Skan 886169689Skan#define NON_CACHEABLE_MEMORY (UINT8) 0x00 887169689Skan#define CACHABLE_MEMORY (UINT8) 0x01 888169689Skan#define WRITE_COMBINING_MEMORY (UINT8) 0x02 889169689Skan#define PREFETCHABLE_MEMORY (UINT8) 0x03 890169689Skan 891169689Skan/* 892169689Skan * IO Attributes 893169689Skan * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. 894169689Skan * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. 895169689Skan */ 896169689Skan#define NON_ISA_ONLY_RANGES (UINT8) 0x01 897169689Skan#define ISA_ONLY_RANGES (UINT8) 0x02 898169689Skan#define ENTIRE_RANGE (NON_ISA_ONLY_RANGES | ISA_ONLY_RANGES) 899169689Skan 900169689Skan/* 901169689Skan * IO Port Descriptor Decode 902169689Skan */ 903169689Skan#define DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ 904169689Skan#define DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ 905169689Skan 906169689Skan/* 907169689Skan * IRQ Attributes 908169689Skan */ 909169689Skan#define EDGE_SENSITIVE (UINT8) 0x00 910169689Skan#define LEVEL_SENSITIVE (UINT8) 0x01 911169689Skan 912169689Skan#define ACTIVE_HIGH (UINT8) 0x00 913169689Skan#define ACTIVE_LOW (UINT8) 0x01 914169689Skan 915169689Skan#define EXCLUSIVE (UINT8) 0x00 916169689Skan#define SHARED (UINT8) 0x01 917169689Skan 918169689Skan/* 919169689Skan * DMA Attributes 920169689Skan */ 921169689Skan#define COMPATIBILITY (UINT8) 0x00 922169689Skan#define TYPE_A (UINT8) 0x01 923169689Skan#define TYPE_B (UINT8) 0x02 924169689Skan#define TYPE_F (UINT8) 0x03 925169689Skan 926169689Skan#define NOT_BUS_MASTER (UINT8) 0x00 927169689Skan#define BUS_MASTER (UINT8) 0x01 928169689Skan 929169689Skan#define TRANSFER_8 (UINT8) 0x00 930169689Skan#define TRANSFER_8_16 (UINT8) 0x01 931169689Skan#define TRANSFER_16 (UINT8) 0x02 932169689Skan 933169689Skan/* 934169689Skan * Start Dependent Functions Priority definitions 935169689Skan */ 936169689Skan#define GOOD_CONFIGURATION (UINT8) 0x00 937169689Skan#define ACCEPTABLE_CONFIGURATION (UINT8) 0x01 938169689Skan#define SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 939169689Skan 940169689Skan/* 941169689Skan * 16, 32 and 64-bit Address Descriptor resource types 942169689Skan */ 943169689Skan#define MEMORY_RANGE (UINT8) 0x00 944169689Skan#define IO_RANGE (UINT8) 0x01 945169689Skan#define BUS_NUMBER_RANGE (UINT8) 0x02 946169689Skan 947169689Skan#define ADDRESS_NOT_FIXED (UINT8) 0x00 948169689Skan#define ADDRESS_FIXED (UINT8) 0x01 949169689Skan 950169689Skan#define POS_DECODE (UINT8) 0x00 951169689Skan#define SUB_DECODE (UINT8) 0x01 952169689Skan 953169689Skan#define PRODUCER (UINT8) 0x00 954169689Skan#define CONSUMER (UINT8) 0x01 955169689Skan 956169689Skan 957169689Skan/* 958169689Skan * Structures used to describe device resources 959169689Skan */ 960169689Skantypedef struct 961169689Skan{ 962169689Skan UINT32 EdgeLevel; 963169689Skan UINT32 ActiveHighLow; 964169689Skan UINT32 SharedExclusive; 965169689Skan UINT32 NumberOfInterrupts; 966169689Skan UINT32 Interrupts[1]; 967169689Skan 968169689Skan} ACPI_RESOURCE_IRQ; 969169689Skan 970169689Skantypedef struct 971169689Skan{ 972169689Skan UINT32 Type; 973169689Skan UINT32 BusMaster; 974169689Skan UINT32 Transfer; 975169689Skan UINT32 NumberOfChannels; 976169689Skan UINT32 Channels[1]; 977169689Skan 978169689Skan} ACPI_RESOURCE_DMA; 979169689Skan 980169689Skantypedef struct 981169689Skan{ 982169689Skan UINT32 CompatibilityPriority; 983169689Skan UINT32 PerformanceRobustness; 984169689Skan 985169689Skan} ACPI_RESOURCE_START_DPF; 986169689Skan 987169689Skan/* 988169689Skan * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not 989169689Skan * needed because it has no fields 990169689Skan */ 991169689Skan 992169689Skantypedef struct 993169689Skan{ 994169689Skan UINT32 IoDecode; 995169689Skan UINT32 MinBaseAddress; 996169689Skan UINT32 MaxBaseAddress; 997169689Skan UINT32 Alignment; 998169689Skan UINT32 RangeLength; 999169689Skan 1000169689Skan} ACPI_RESOURCE_IO; 1001169689Skan 1002169689Skantypedef struct 1003169689Skan{ 1004169689Skan UINT32 BaseAddress; 1005169689Skan UINT32 RangeLength; 1006169689Skan 1007169689Skan} ACPI_RESOURCE_FIXED_IO; 1008169689Skan 1009169689Skantypedef struct 1010169689Skan{ 1011169689Skan UINT32 Length; 1012169689Skan UINT8 Reserved[1]; 1013169689Skan 1014169689Skan} ACPI_RESOURCE_VENDOR; 1015169689Skan 1016169689Skantypedef struct 1017169689Skan{ 1018169689Skan UINT32 ReadWriteAttribute; 1019169689Skan UINT32 MinBaseAddress; 1020169689Skan UINT32 MaxBaseAddress; 1021169689Skan UINT32 Alignment; 1022169689Skan UINT32 RangeLength; 1023169689Skan 1024169689Skan} ACPI_RESOURCE_MEM24; 1025169689Skan 1026169689Skantypedef struct 1027169689Skan{ 1028169689Skan UINT32 ReadWriteAttribute; 1029169689Skan UINT32 MinBaseAddress; 1030169689Skan UINT32 MaxBaseAddress; 1031169689Skan UINT32 Alignment; 1032169689Skan UINT32 RangeLength; 1033169689Skan 1034169689Skan} ACPI_RESOURCE_MEM32; 1035169689Skan 1036169689Skantypedef struct 1037169689Skan{ 1038169689Skan UINT32 ReadWriteAttribute; 1039169689Skan UINT32 RangeBaseAddress; 1040169689Skan UINT32 RangeLength; 1041169689Skan 1042169689Skan} ACPI_RESOURCE_FIXED_MEM32; 1043169689Skan 1044169689Skantypedef struct 1045169689Skan{ 1046169689Skan UINT16 CacheAttribute; 1047169689Skan UINT16 ReadWriteAttribute; 1048169689Skan 1049169689Skan} ACPI_MEMORY_ATTRIBUTE; 1050169689Skan 1051169689Skantypedef struct 1052169689Skan{ 1053169689Skan UINT16 RangeAttribute; 1054169689Skan UINT16 Reserved; 1055169689Skan 1056169689Skan} ACPI_IO_ATTRIBUTE; 1057169689Skan 1058169689Skantypedef struct 1059169689Skan{ 1060169689Skan UINT16 Reserved1; 1061169689Skan UINT16 Reserved2; 1062169689Skan 1063169689Skan} ACPI_BUS_ATTRIBUTE; 1064169689Skan 1065169689Skantypedef union 1066169689Skan{ 1067169689Skan ACPI_MEMORY_ATTRIBUTE Memory; 1068169689Skan ACPI_IO_ATTRIBUTE Io; 1069169689Skan ACPI_BUS_ATTRIBUTE Bus; 1070169689Skan 1071169689Skan} ACPI_RESOURCE_ATTRIBUTE; 1072169689Skan 1073169689Skantypedef struct 1074169689Skan{ 1075169689Skan UINT32 Index; 1076169689Skan UINT32 StringLength; 1077169689Skan NATIVE_CHAR *StringPtr; 1078169689Skan 1079169689Skan} ACPI_RESOURCE_SOURCE; 1080169689Skan 1081169689Skantypedef struct 1082169689Skan{ 1083169689Skan UINT32 ResourceType; 1084169689Skan UINT32 ProducerConsumer; 1085169689Skan UINT32 Decode; 1086169689Skan UINT32 MinAddressFixed; 1087169689Skan UINT32 MaxAddressFixed; 1088169689Skan ACPI_RESOURCE_ATTRIBUTE Attribute; 1089169689Skan UINT32 Granularity; 1090169689Skan UINT32 MinAddressRange; 1091169689Skan UINT32 MaxAddressRange; 1092169689Skan UINT32 AddressTranslationOffset; 1093169689Skan UINT32 AddressLength; 1094169689Skan ACPI_RESOURCE_SOURCE ResourceSource; 1095169689Skan 1096169689Skan} ACPI_RESOURCE_ADDRESS16; 1097169689Skan 1098169689Skantypedef struct 1099169689Skan{ 1100169689Skan UINT32 ResourceType; 1101169689Skan UINT32 ProducerConsumer; 1102169689Skan UINT32 Decode; 1103169689Skan UINT32 MinAddressFixed; 1104169689Skan UINT32 MaxAddressFixed; 1105169689Skan ACPI_RESOURCE_ATTRIBUTE Attribute; 1106169689Skan UINT32 Granularity; 1107169689Skan UINT32 MinAddressRange; 1108169689Skan UINT32 MaxAddressRange; 1109169689Skan UINT32 AddressTranslationOffset; 1110169689Skan UINT32 AddressLength; 1111169689Skan ACPI_RESOURCE_SOURCE ResourceSource; 1112169689Skan 1113169689Skan} ACPI_RESOURCE_ADDRESS32; 1114169689Skan 1115169689Skantypedef struct 1116169689Skan{ 1117169689Skan UINT32 ResourceType; 1118169689Skan UINT32 ProducerConsumer; 1119169689Skan UINT32 Decode; 1120169689Skan UINT32 MinAddressFixed; 1121169689Skan UINT32 MaxAddressFixed; 1122169689Skan ACPI_RESOURCE_ATTRIBUTE Attribute; 1123169689Skan UINT64 Granularity; 1124169689Skan UINT64 MinAddressRange; 1125169689Skan UINT64 MaxAddressRange; 1126169689Skan UINT64 AddressTranslationOffset; 1127169689Skan UINT64 AddressLength; 1128169689Skan ACPI_RESOURCE_SOURCE ResourceSource; 1129169689Skan 1130169689Skan} ACPI_RESOURCE_ADDRESS64; 1131169689Skan 1132169689Skantypedef struct 1133169689Skan{ 1134169689Skan UINT32 ProducerConsumer; 1135169689Skan UINT32 EdgeLevel; 1136169689Skan UINT32 ActiveHighLow; 1137169689Skan UINT32 SharedExclusive; 1138169689Skan UINT32 NumberOfInterrupts; 1139169689Skan ACPI_RESOURCE_SOURCE ResourceSource; 1140169689Skan UINT32 Interrupts[1]; 1141169689Skan 1142169689Skan} ACPI_RESOURCE_EXT_IRQ; 1143169689Skan 1144169689Skan 1145169689Skan/* ACPI_RESOURCE_TYPEs */ 1146169689Skan 1147169689Skan#define ACPI_RSTYPE_IRQ 0 1148169689Skan#define ACPI_RSTYPE_DMA 1 1149169689Skan#define ACPI_RSTYPE_START_DPF 2 1150169689Skan#define ACPI_RSTYPE_END_DPF 3 1151169689Skan#define ACPI_RSTYPE_IO 4 1152169689Skan#define ACPI_RSTYPE_FIXED_IO 5 1153169689Skan#define ACPI_RSTYPE_VENDOR 6 1154169689Skan#define ACPI_RSTYPE_END_TAG 7 1155169689Skan#define ACPI_RSTYPE_MEM24 8 1156169689Skan#define ACPI_RSTYPE_MEM32 9 1157169689Skan#define ACPI_RSTYPE_FIXED_MEM32 10 1158169689Skan#define ACPI_RSTYPE_ADDRESS16 11 1159169689Skan#define ACPI_RSTYPE_ADDRESS32 12 1160169689Skan#define ACPI_RSTYPE_ADDRESS64 13 1161169689Skan#define ACPI_RSTYPE_EXT_IRQ 14 1162169689Skan 1163169689Skantypedef UINT32 ACPI_RESOURCE_TYPE; 1164169689Skan 1165169689Skantypedef union 1166169689Skan{ 1167169689Skan ACPI_RESOURCE_IRQ Irq; 1168169689Skan ACPI_RESOURCE_DMA Dma; 1169169689Skan ACPI_RESOURCE_START_DPF StartDpf; 1170169689Skan ACPI_RESOURCE_IO Io; 1171169689Skan ACPI_RESOURCE_FIXED_IO FixedIo; 1172169689Skan ACPI_RESOURCE_VENDOR VendorSpecific; 1173169689Skan ACPI_RESOURCE_MEM24 Memory24; 1174169689Skan ACPI_RESOURCE_MEM32 Memory32; 1175169689Skan ACPI_RESOURCE_FIXED_MEM32 FixedMemory32; 1176169689Skan ACPI_RESOURCE_ADDRESS16 Address16; 1177169689Skan ACPI_RESOURCE_ADDRESS32 Address32; 1178169689Skan ACPI_RESOURCE_ADDRESS64 Address64; 1179169689Skan ACPI_RESOURCE_EXT_IRQ ExtendedIrq; 1180169689Skan 1181169689Skan} ACPI_RESOURCE_DATA; 1182169689Skan 1183169689Skantypedef struct AcpiResource 1184169689Skan{ 1185169689Skan ACPI_RESOURCE_TYPE Id; 1186169689Skan UINT32 Length; 1187169689Skan ACPI_RESOURCE_DATA Data; 1188169689Skan 1189169689Skan} ACPI_RESOURCE; 1190169689Skan 1191169689Skan#define ACPI_RESOURCE_LENGTH 12 1192169689Skan#define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ 1193169689Skan 1194169689Skan#define SIZEOF_RESOURCE(Type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (Type)) 1195169689Skan 1196169689Skan#define NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->length) 1197169689Skan 1198169689Skan 1199169689Skan/* 1200169689Skan * END: Definitions for Resource Attributes 1201169689Skan */ 1202169689Skan 1203169689Skan 1204169689Skantypedef struct pci_routing_table 1205169689Skan{ 1206169689Skan UINT32 Length; 1207169689Skan UINT32 Pin; 1208169689Skan ACPI_INTEGER Address; /* here for 64-bit alignment */ 1209169689Skan UINT32 SourceIndex; 1210169689Skan NATIVE_CHAR Source[4]; /* pad to 64 bits so sizeof() works in all cases */ 1211169689Skan 1212169689Skan} PCI_ROUTING_TABLE; 1213169689Skan 1214169689Skan 1215169689Skan/* 1216169689Skan * END: Definitions for PCI Routing tables 1217169689Skan */ 1218169689Skan 1219169689Skan#endif /* __ACTYPES_H__ */ 1220169689Skan