actbl1.h revision 167802
169450Smsmith/****************************************************************************** 269450Smsmith * 3167802Sjkim * Name: actbl1.h - Additional ACPI table definitions 469450Smsmith * $Revision: 1.47 $ 569450Smsmith * 669450Smsmith *****************************************************************************/ 7217365Sjkim 8278970Sjkim/****************************************************************************** 970243Smsmith * 1069450Smsmith * 1. Copyright Notice 11217365Sjkim * 12217365Sjkim * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp. 13217365Sjkim * All rights reserved. 14217365Sjkim * 15217365Sjkim * 2. License 16217365Sjkim * 17217365Sjkim * 2.1. This is your license from Intel Corp. under its intellectual property 18217365Sjkim * rights. You may have additional license terms from the party that provided 19217365Sjkim * you this software, covering your right to use that party's intellectual 20217365Sjkim * property rights. 21217365Sjkim * 22217365Sjkim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 23217365Sjkim * copy of the source code appearing in this file ("Covered Code") an 24217365Sjkim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 2569450Smsmith * base code distributed originally by Intel ("Original Intel Code") to copy, 26217365Sjkim * make derivatives, distribute, use and display any portion of the Covered 27217365Sjkim * Code in any form, with the right to sublicense such rights; and 28217365Sjkim * 2969450Smsmith * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 30217365Sjkim * license (with the right to sublicense), under only those claims of Intel 31217365Sjkim * patents that are infringed by the Original Intel Code, to make, use, sell, 32217365Sjkim * offer to sell, and import the Covered Code and derivative works thereof 33217365Sjkim * solely to the minimum extent necessary to exercise the above copyright 34217365Sjkim * license, and in no event shall the patent license extend to any additions 35217365Sjkim * to or modifications of the Original Intel Code. No other license or right 36217365Sjkim * is granted directly or by implication, estoppel or otherwise; 37217365Sjkim * 38217365Sjkim * The above copyright and patent license is granted only if the following 39217365Sjkim * conditions are met: 40217365Sjkim * 41217365Sjkim * 3. Conditions 42217365Sjkim * 4369450Smsmith * 3.1. Redistribution of Source with Rights to Further Distribute Source. 4469450Smsmith * Redistribution of source code of any substantial portion of the Covered 4569450Smsmith * Code or modification with rights to further distribute source must include 4669450Smsmith * the above Copyright Notice, the above License, this list of Conditions, 47167802Sjkim * and the following Disclaimer and Export Compliance provision. In addition, 48167802Sjkim * Licensee must cause all Covered Code to which Licensee contributes to 49167802Sjkim * contain a file documenting the changes Licensee made to create that Covered 50197104Sjkim * Code and the date of any change. Licensee must include in that file the 51167802Sjkim * documentation of any changes made by any predecessor Licensee. Licensee 52167802Sjkim * must include a prominent statement that the modification is derived, 53167802Sjkim * directly or indirectly, from Original Intel Code. 54167802Sjkim * 55197104Sjkim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 56197104Sjkim * Redistribution of source code of any substantial portion of the Covered 57167802Sjkim * Code or modification without rights to further distribute source must 58167802Sjkim * include the following Disclaimer and Export Compliance provision in the 59167802Sjkim * documentation and/or other materials provided with distribution. In 60167802Sjkim * addition, Licensee may not authorize further sublicense of source of any 61197104Sjkim * portion of the Covered Code, and must include terms to the effect that the 62197104Sjkim * license from Licensee to its licensee is limited to the intellectual 63197104Sjkim * property embodied in the software Licensee provides to its licensee, and 64167802Sjkim * not to intellectual property embodied in modifications its licensee may 65193267Sjkim * make. 66167802Sjkim * 67167802Sjkim * 3.3. Redistribution of Executable. Redistribution in executable form of any 68193267Sjkim * substantial portion of the Covered Code or modification must reproduce the 69193267Sjkim * above Copyright Notice, and the following Disclaimer and Export Compliance 70193267Sjkim * provision in the documentation and/or other materials provided with the 71167802Sjkim * distribution. 72197104Sjkim * 73167802Sjkim * 3.4. Intel retains all right, title, and interest in and to the Original 74167802Sjkim * Intel Code. 75167802Sjkim * 76283092Sjkim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 77167802Sjkim * Intel shall be used in advertising or otherwise to promote the sale, use or 78167802Sjkim * other dealings in products derived from or relating to the Covered Code 79167802Sjkim * without prior written authorization from Intel. 80167802Sjkim * 81167802Sjkim * 4. Disclaimer and Export Compliance 82167802Sjkim * 8369450Smsmith * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 8469450Smsmith * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 8591116Smsmith * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 86239340Sjkim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 87239340Sjkim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 88239340Sjkim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 89239340Sjkim * PARTICULAR PURPOSE. 90239340Sjkim * 91239340Sjkim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 92239340Sjkim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 93239340Sjkim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 94239340Sjkim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 9591116Smsmith * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 96167802Sjkim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 97167802Sjkim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 98197104Sjkim * LIMITED REMEDY. 99197104Sjkim * 100197104Sjkim * 4.3. Licensee shall not export, either directly or indirectly, any of this 101197104Sjkim * software or system incorporating such software without first obtaining any 102197104Sjkim * required license or other approval from the U. S. Department of Commerce or 103167802Sjkim * any other agency or department of the United States Government. In the 104197104Sjkim * event Licensee exports any such software from the United States or 105197104Sjkim * re-exports any such software from a foreign destination, Licensee shall 106167802Sjkim * ensure that the distribution and export/re-export of the software is in 10769450Smsmith * compliance with all laws, regulations, orders, or other restrictions of the 108167802Sjkim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 109167802Sjkim * any of its subsidiaries will export/re-export any technical data, process, 110151937Sjkim * software, or service, directly or indirectly, to any country for which the 111167802Sjkim * United States government or any agency thereof requires an export license, 11269450Smsmith * other governmental approval, or letter of assurance, without first obtaining 11369450Smsmith * such license, approval or letter. 114197104Sjkim * 115193267Sjkim *****************************************************************************/ 116193267Sjkim 117193267Sjkim#ifndef __ACTBL1_H__ 118193267Sjkim#define __ACTBL1_H__ 119193267Sjkim 120193267Sjkim 121193267Sjkim/******************************************************************************* 122193267Sjkim * 123193267Sjkim * Additional ACPI Tables 124193267Sjkim * 125193267Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are 126193267Sjkim * included here to support device drivers and the AML disassembler. 127193267Sjkim * 128193267Sjkim ******************************************************************************/ 129167802Sjkim 130167802Sjkim 131197104Sjkim/* 132197104Sjkim * Values for description table header signatures. Useful because they make 133167802Sjkim * it more difficult to inadvertently type in the wrong signature. 134167802Sjkim */ 135167802Sjkim#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 136193267Sjkim#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 137193267Sjkim#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 138193267Sjkim#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 139193267Sjkim#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 140238381Sjkim#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 141193267Sjkim#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 142193267Sjkim#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 143193267Sjkim#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 144193267Sjkim#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 145197104Sjkim#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 146193267Sjkim#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 147193267Sjkim#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 148193267Sjkim#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 149197104Sjkim#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 150197104Sjkim#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 151197104Sjkim 152197104Sjkim 153197104Sjkim/* 154193267Sjkim * All tables must be byte-packed to match the ACPI specification, since 155193267Sjkim * the tables are provided by the system BIOS. 156193267Sjkim */ 157197104Sjkim#pragma pack(1) 158193267Sjkim 159193267Sjkim/* 160197104Sjkim * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 161197104Sjkim * This is the only type that is even remotely portable. Anything else is not 162197104Sjkim * portable, so do not use any other bitfield types. 163197104Sjkim */ 164193267Sjkim 165197104Sjkim 166193267Sjkim/* Common Sub-table header (used in MADT, SRAT, etc.) */ 167197104Sjkim 168167802Sjkimtypedef struct acpi_subtable_header 169197104Sjkim{ 170197104Sjkim UINT8 Type; 171197104Sjkim UINT8 Length; 172197104Sjkim 173197104Sjkim} ACPI_SUBTABLE_HEADER; 174197104Sjkim 175167802Sjkim 176197104Sjkim/******************************************************************************* 177197104Sjkim * 178197104Sjkim * ASF - Alert Standard Format table (Signature "ASF!") 179197104Sjkim * 180167802Sjkim * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 181167802Sjkim * 182167802Sjkim ******************************************************************************/ 183167802Sjkim 184197104Sjkimtypedef struct acpi_table_asf 185197104Sjkim{ 186167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 187167802Sjkim 188167802Sjkim} ACPI_TABLE_ASF; 189167802Sjkim 190167802Sjkim 191167802Sjkim/* ASF subtable header */ 192167802Sjkim 193167802Sjkimtypedef struct acpi_asf_header 194167802Sjkim{ 195167802Sjkim UINT8 Type; 196167802Sjkim UINT8 Reserved; 197167802Sjkim UINT16 Length; 198167802Sjkim 199167802Sjkim} ACPI_ASF_HEADER; 200167802Sjkim 201197104Sjkim 202167802Sjkim/* Values for Type field above */ 203167802Sjkim 204167802Sjkimenum AcpiAsfType 205167802Sjkim{ 206167802Sjkim ACPI_ASF_TYPE_INFO = 0, 207167802Sjkim ACPI_ASF_TYPE_ALERT = 1, 208167802Sjkim ACPI_ASF_TYPE_CONTROL = 2, 209167802Sjkim ACPI_ASF_TYPE_BOOT = 3, 210167802Sjkim ACPI_ASF_TYPE_ADDRESS = 4, 211167802Sjkim ACPI_ASF_TYPE_RESERVED = 5 212197104Sjkim}; 213167802Sjkim 214167802Sjkim/* 215167802Sjkim * ASF subtables 216167802Sjkim */ 217167802Sjkim 218167802Sjkim/* 0: ASF Information */ 219167802Sjkim 220167802Sjkimtypedef struct acpi_asf_info 221167802Sjkim{ 222167802Sjkim ACPI_ASF_HEADER Header; 223167802Sjkim UINT8 MinResetValue; 224167802Sjkim UINT8 MinPollInterval; 225167802Sjkim UINT16 SystemId; 226167802Sjkim UINT32 MfgId; 227167802Sjkim UINT8 Flags; 228167802Sjkim UINT8 Reserved2[3]; 229167802Sjkim 230197104Sjkim} ACPI_ASF_INFO; 231197104Sjkim 232193267Sjkim/* 1: ASF Alerts */ 233193267Sjkim 234193267Sjkimtypedef struct acpi_asf_alert 235193267Sjkim{ 236193267Sjkim ACPI_ASF_HEADER Header; 237193267Sjkim UINT8 AssertMask; 238193267Sjkim UINT8 DeassertMask; 239197104Sjkim UINT8 Alerts; 240197104Sjkim UINT8 DataLength; 241193267Sjkim 242193267Sjkim} ACPI_ASF_ALERT; 243193267Sjkim 244193267Sjkimtypedef struct acpi_asf_alert_data 245197104Sjkim{ 246193267Sjkim UINT8 Address; 247193267Sjkim UINT8 Command; 248193267Sjkim UINT8 Mask; 249193267Sjkim UINT8 Value; 250193267Sjkim UINT8 SensorType; 251193267Sjkim UINT8 Type; 252193267Sjkim UINT8 Offset; 253193267Sjkim UINT8 SourceType; 254197104Sjkim UINT8 Severity; 255197104Sjkim UINT8 SensorNumber; 256197104Sjkim UINT8 Entity; 257197104Sjkim UINT8 Instance; 258193267Sjkim 259193267Sjkim} ACPI_ASF_ALERT_DATA; 260193267Sjkim 261193267Sjkim/* 2: ASF Remote Control */ 262228110Sjkim 263228110Sjkimtypedef struct acpi_asf_remote 264228110Sjkim{ 265228110Sjkim ACPI_ASF_HEADER Header; 266228110Sjkim UINT8 Controls; 267228110Sjkim UINT8 DataLength; 268228110Sjkim UINT16 Reserved2; 269228110Sjkim 270228110Sjkim} ACPI_ASF_REMOTE; 271228110Sjkim 272228110Sjkimtypedef struct acpi_asf_control_data 273193267Sjkim{ 274193267Sjkim UINT8 Function; 275193267Sjkim UINT8 Address; 276193267Sjkim UINT8 Command; 277193267Sjkim UINT8 Value; 278193267Sjkim 279193267Sjkim} ACPI_ASF_CONTROL_DATA; 280193267Sjkim 281193267Sjkim/* 3: ASF RMCP Boot Options */ 282193267Sjkim 283193267Sjkimtypedef struct acpi_asf_rmcp 284228110Sjkim{ 285228110Sjkim ACPI_ASF_HEADER Header; 286193267Sjkim UINT8 Capabilities[7]; 287193267Sjkim UINT8 CompletionCode; 288228110Sjkim UINT32 EnterpriseId; 289228110Sjkim UINT8 Command; 290228110Sjkim UINT16 Parameter; 291228110Sjkim UINT16 BootOptions; 292228110Sjkim UINT16 OemParameters; 293228110Sjkim 294228110Sjkim} ACPI_ASF_RMCP; 295228110Sjkim 296228110Sjkim/* 4: ASF Address */ 297197104Sjkim 298228110Sjkimtypedef struct acpi_asf_address 299228110Sjkim{ 300228110Sjkim ACPI_ASF_HEADER Header; 301228110Sjkim UINT8 EpromAddress; 302228110Sjkim UINT8 Devices; 303228110Sjkim 304228110Sjkim} ACPI_ASF_ADDRESS; 305228110Sjkim 306228110Sjkim 307228110Sjkim/******************************************************************************* 308228110Sjkim * 309228110Sjkim * BOOT - Simple Boot Flag Table 310228110Sjkim * 311228110Sjkim ******************************************************************************/ 312193267Sjkim 313193267Sjkimtypedef struct acpi_table_boot 314193267Sjkim{ 315193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 316193267Sjkim UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 317193267Sjkim UINT8 Reserved[3]; 318193267Sjkim 319193267Sjkim} ACPI_TABLE_BOOT; 320193267Sjkim 321193267Sjkim 322193267Sjkim/******************************************************************************* 323197104Sjkim * 324193267Sjkim * CPEP - Corrected Platform Error Polling table 325197104Sjkim * 326197104Sjkim ******************************************************************************/ 327197104Sjkim 328197104Sjkimtypedef struct acpi_table_cpep 329197104Sjkim{ 330197104Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 331197104Sjkim UINT64 Reserved; 332197104Sjkim 333197104Sjkim} ACPI_TABLE_CPEP; 334197104Sjkim 335197104Sjkim 336197104Sjkim/* Subtable */ 337197104Sjkim 338197104Sjkimtypedef struct acpi_cpep_polling 339197104Sjkim{ 340197104Sjkim UINT8 Type; 341197104Sjkim UINT8 Length; 342197104Sjkim UINT8 Id; /* Processor ID */ 343197104Sjkim UINT8 Eid; /* Processor EID */ 344197104Sjkim UINT32 Interval; /* Polling interval (msec) */ 345197104Sjkim 346197104Sjkim} ACPI_CPEP_POLLING; 347197104Sjkim 348228110Sjkim 349197104Sjkim/******************************************************************************* 350197104Sjkim * 351193267Sjkim * DBGP - Debug Port table 352193267Sjkim * 353197104Sjkim ******************************************************************************/ 354197104Sjkim 355193267Sjkimtypedef struct acpi_table_dbgp 356193267Sjkim{ 357193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 358193267Sjkim UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 359193267Sjkim UINT8 Reserved[3]; 360193267Sjkim ACPI_GENERIC_ADDRESS DebugPort; 361193267Sjkim 362193267Sjkim} ACPI_TABLE_DBGP; 363193267Sjkim 364193267Sjkim 365193267Sjkim/******************************************************************************* 366193267Sjkim * 367197104Sjkim * DMAR - DMA Remapping table 368193267Sjkim * 369193267Sjkim ******************************************************************************/ 370193267Sjkim 371193267Sjkimtypedef struct acpi_table_dmar 372193267Sjkim{ 373193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 374193267Sjkim UINT8 Width; /* Host Address Width */ 375193267Sjkim UINT8 Reserved[11]; 376197104Sjkim 377197104Sjkim} ACPI_TABLE_DMAR; 378197104Sjkim 379197104Sjkim/* DMAR subtable header */ 380193267Sjkim 381193267Sjkimtypedef struct acpi_dmar_header 382193267Sjkim{ 383193267Sjkim UINT16 Type; 384197104Sjkim UINT16 Length; 385197104Sjkim UINT8 Flags; 386197104Sjkim UINT8 Reserved[3]; 387197104Sjkim 388193267Sjkim} ACPI_DMAR_HEADER; 389193267Sjkim 390193267Sjkim/* Values for subtable type in ACPI_DMAR_HEADER */ 391193267Sjkim 392197104Sjkimenum AcpiDmarType 393197104Sjkim{ 394193267Sjkim ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 395193267Sjkim ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 396193267Sjkim ACPI_DMAR_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 397193267Sjkim}; 398193267Sjkim 399193267Sjkimtypedef struct acpi_dmar_device_scope 400193267Sjkim{ 401193267Sjkim UINT8 EntryType; 402193267Sjkim UINT8 Length; 403193267Sjkim UINT8 Segment; 404193267Sjkim UINT8 Bus; 405193267Sjkim 406193267Sjkim} ACPI_DMAR_DEVICE_SCOPE; 407193267Sjkim 408193267Sjkim/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ 409193267Sjkim 410193267Sjkimenum AcpiDmarScopeType 411193267Sjkim{ 412193267Sjkim ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 413193267Sjkim ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 414193267Sjkim ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 415193267Sjkim ACPI_DMAR_SCOPE_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 416193267Sjkim}; 417193267Sjkim 418193267Sjkim 419193267Sjkim/* 420193267Sjkim * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER 421193267Sjkim */ 422193267Sjkim 423193267Sjkim/* 0: Hardware Unit Definition */ 424193267Sjkim 425193267Sjkimtypedef struct acpi_dmar_hardware_unit 426193267Sjkim{ 427193267Sjkim ACPI_DMAR_HEADER Header; 428193267Sjkim UINT64 Address; /* Register Base Address */ 429197104Sjkim 430193267Sjkim} ACPI_DMAR_HARDWARE_UNIT; 431197104Sjkim 432197104Sjkim/* Flags */ 433197104Sjkim 434197104Sjkim#define ACPI_DMAR_INCLUDE_ALL (1) 435197104Sjkim 436197104Sjkim/* 1: Reserved Memory Defininition */ 437197104Sjkim 438197104Sjkimtypedef struct acpi_dmar_reserved_memory 439197104Sjkim{ 440197104Sjkim ACPI_DMAR_HEADER Header; 441197104Sjkim UINT64 Address; /* 4K aligned base address */ 442197104Sjkim UINT64 EndAddress; /* 4K aligned limit address */ 443197104Sjkim 444197104Sjkim} ACPI_DMAR_RESERVED_MEMORY; 445197104Sjkim 446197104Sjkim/* Flags */ 447197104Sjkim 448197104Sjkim#define ACPI_DMAR_ALLOW_ALL (1) 449197104Sjkim 450197104Sjkim 451197104Sjkim/******************************************************************************* 452197104Sjkim * 453193267Sjkim * ECDT - Embedded Controller Boot Resources Table 454193267Sjkim * 455197104Sjkim ******************************************************************************/ 456197104Sjkim 457193267Sjkimtypedef struct acpi_table_ecdt 458193267Sjkim{ 459193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 460193267Sjkim ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 461193267Sjkim ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 462193267Sjkim UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 463193267Sjkim UINT8 Gpe; /* The GPE for the EC */ 464193267Sjkim UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 465193267Sjkim 466193267Sjkim} ACPI_TABLE_ECDT; 467193267Sjkim 468193267Sjkim 469193267Sjkim/******************************************************************************* 470193267Sjkim * 471193267Sjkim * HPET - High Precision Event Timer table 472193267Sjkim * 473197104Sjkim ******************************************************************************/ 474193267Sjkim 475193267Sjkimtypedef struct acpi_table_hpet 476193267Sjkim{ 477193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 478193267Sjkim UINT32 Id; /* Hardware ID of event timer block */ 479193267Sjkim ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 480193267Sjkim UINT8 Sequence; /* HPET sequence number */ 481193267Sjkim UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 482197104Sjkim UINT8 Flags; 483197104Sjkim 484197104Sjkim} ACPI_TABLE_HPET; 485197104Sjkim 486197104Sjkim/*! Flags */ 487197104Sjkim 488197104Sjkim#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 489197104Sjkim#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ 490197104Sjkim#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ 491197104Sjkim 492197104Sjkim/*! [End] no source code translation !*/ 493193267Sjkim 494193267Sjkim 495193267Sjkim/******************************************************************************* 496193267Sjkim * 497197104Sjkim * MADT - Multiple APIC Description Table 498193267Sjkim * 499193267Sjkim ******************************************************************************/ 500197104Sjkim 501197104Sjkimtypedef struct acpi_table_madt 502197104Sjkim{ 503197104Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 504197104Sjkim UINT32 Address; /* Physical address of local APIC */ 505193267Sjkim UINT32 Flags; 506193267Sjkim 507193267Sjkim} ACPI_TABLE_MADT; 508193267Sjkim 509197104Sjkim/* Flags */ 510193267Sjkim 511197104Sjkim#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 512193267Sjkim 513193267Sjkim/* Values for PCATCompat flag */ 514193267Sjkim 515193267Sjkim#define ACPI_MADT_DUAL_PIC 0 516197104Sjkim#define ACPI_MADT_MULTIPLE_APIC 1 517193267Sjkim 518193267Sjkim 519197104Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 520193267Sjkim 521193267Sjkimenum AcpiMadtType 522193267Sjkim{ 523197104Sjkim ACPI_MADT_TYPE_LOCAL_APIC = 0, 524193267Sjkim ACPI_MADT_TYPE_IO_APIC = 1, 525193267Sjkim ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 526197104Sjkim ACPI_MADT_TYPE_NMI_SOURCE = 3, 527193267Sjkim ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 528272444Sjkim ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 529193267Sjkim ACPI_MADT_TYPE_IO_SAPIC = 6, 530193267Sjkim ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 531193267Sjkim ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 532197104Sjkim ACPI_MADT_TYPE_RESERVED = 9 /* 9 and greater are reserved */ 533197104Sjkim}; 534197104Sjkim 535197104Sjkim 536197104Sjkim/* 537193267Sjkim * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 538193267Sjkim */ 539193267Sjkim 540197104Sjkim/* 0: Processor Local APIC */ 541193267Sjkim 542197104Sjkimtypedef struct acpi_madt_local_apic 543197104Sjkim{ 544197104Sjkim ACPI_SUBTABLE_HEADER Header; 545272444Sjkim UINT8 ProcessorId; /* ACPI processor id */ 546272444Sjkim UINT8 Id; /* Processor's local APIC id */ 547272444Sjkim UINT32 LapicFlags; 548272444Sjkim 549272444Sjkim} ACPI_MADT_LOCAL_APIC; 550272444Sjkim 551272444Sjkim/* 1: IO APIC */ 552197104Sjkim 553272444Sjkimtypedef struct acpi_madt_io_apic 554193267Sjkim{ 555193267Sjkim ACPI_SUBTABLE_HEADER Header; 556193267Sjkim UINT8 Id; /* I/O APIC ID */ 557193267Sjkim UINT8 Reserved; /* Reserved - must be zero */ 558193267Sjkim UINT32 Address; /* APIC physical address */ 559193267Sjkim UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 560193267Sjkim 561193267Sjkim} ACPI_MADT_IO_APIC; 562193267Sjkim 563193267Sjkim/* 2: Interrupt Override */ 564193267Sjkim 565193267Sjkimtypedef struct acpi_madt_interrupt_override 566193267Sjkim{ 567193267Sjkim ACPI_SUBTABLE_HEADER Header; 568193267Sjkim UINT8 Bus; /* 0 - ISA */ 569193267Sjkim UINT8 SourceIrq; /* Interrupt source (IRQ) */ 570193267Sjkim UINT32 GlobalIrq; /* Global system interrupt */ 571193267Sjkim UINT16 IntiFlags; 572193267Sjkim 573193267Sjkim} ACPI_MADT_INTERRUPT_OVERRIDE; 574193267Sjkim 575193267Sjkim/* 3: NMI Source */ 576193267Sjkim 577193267Sjkimtypedef struct acpi_madt_nmi_source 578193267Sjkim{ 579240716Sjkim ACPI_SUBTABLE_HEADER Header; 580240716Sjkim UINT16 IntiFlags; 581240716Sjkim UINT32 GlobalIrq; /* Global system interrupt */ 582193267Sjkim 583193267Sjkim} ACPI_MADT_NMI_SOURCE; 584197104Sjkim 585193267Sjkim/* 4: Local APIC NMI */ 586197104Sjkim 587197104Sjkimtypedef struct acpi_madt_local_apic_nmi 588197104Sjkim{ 589197104Sjkim ACPI_SUBTABLE_HEADER Header; 590197104Sjkim UINT8 ProcessorId; /* ACPI processor id */ 591197104Sjkim UINT16 IntiFlags; 592197104Sjkim UINT8 Lint; /* LINTn to which NMI is connected */ 593197104Sjkim 594193267Sjkim} ACPI_MADT_LOCAL_APIC_NMI; 595193267Sjkim 596193267Sjkim/* 5: Address Override */ 597193267Sjkim 598197104Sjkimtypedef struct acpi_madt_local_apic_override 599193267Sjkim{ 600197104Sjkim ACPI_SUBTABLE_HEADER Header; 601193267Sjkim UINT16 Reserved; /* Reserved, must be zero */ 602193267Sjkim UINT64 Address; /* APIC physical address */ 603197104Sjkim 604193267Sjkim} ACPI_MADT_LOCAL_APIC_OVERRIDE; 605197104Sjkim 606197104Sjkim/* 6: I/O Sapic */ 607193267Sjkim 608193267Sjkimtypedef struct acpi_madt_io_sapic 609193267Sjkim{ 610193267Sjkim ACPI_SUBTABLE_HEADER Header; 611197104Sjkim UINT8 Id; /* I/O SAPIC ID */ 612193267Sjkim UINT8 Reserved; /* Reserved, must be zero */ 613197104Sjkim UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 614193267Sjkim UINT64 Address; /* SAPIC physical address */ 615193267Sjkim 616197104Sjkim} ACPI_MADT_IO_SAPIC; 617193267Sjkim 618197104Sjkim/* 7: Local Sapic */ 619193267Sjkim 620193267Sjkimtypedef struct acpi_madt_local_sapic 621197104Sjkim{ 622193267Sjkim ACPI_SUBTABLE_HEADER Header; 623193267Sjkim UINT8 ProcessorId; /* ACPI processor id */ 624197104Sjkim UINT8 Id; /* SAPIC ID */ 625193267Sjkim UINT8 Eid; /* SAPIC EID */ 626193267Sjkim UINT8 Reserved[3]; /* Reserved, must be zero */ 627193267Sjkim UINT32 LapicFlags; 628197104Sjkim UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 629193267Sjkim char UidString[1]; /* String UID - ACPI 3.0 */ 630197104Sjkim 631193267Sjkim} ACPI_MADT_LOCAL_SAPIC; 632193267Sjkim 633197104Sjkim/* 8: Platform Interrupt Source */ 634193267Sjkim 635197104Sjkimtypedef struct acpi_madt_interrupt_source 636193267Sjkim{ 637193267Sjkim ACPI_SUBTABLE_HEADER Header; 638193267Sjkim UINT16 IntiFlags; 639197104Sjkim UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 640193267Sjkim UINT8 Id; /* Processor ID */ 641193267Sjkim UINT8 Eid; /* Processor EID */ 642193267Sjkim UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 643197104Sjkim UINT32 GlobalIrq; /* Global system interrupt */ 644193267Sjkim UINT32 Flags; /* Interrupt Source Flags */ 645193267Sjkim 646197104Sjkim} ACPI_MADT_INTERRUPT_SOURCE; 647193267Sjkim 648193267Sjkim/* Flags field above */ 649193267Sjkim 650193267Sjkim#define ACPI_MADT_CPEI_OVERRIDE (1) 651193267Sjkim 652193267Sjkim 653193267Sjkim/* 654193267Sjkim * Common flags fields for MADT subtables 655193267Sjkim */ 656193267Sjkim 657193267Sjkim/* MADT Local APIC flags (LapicFlags) */ 658193267Sjkim 659193267Sjkim#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 660193267Sjkim 661193267Sjkim/* MADT MPS INTI flags (IntiFlags) */ 662193267Sjkim 663193267Sjkim#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 664193267Sjkim#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 665193267Sjkim 666193267Sjkim/* Values for MPS INTI flags */ 667193267Sjkim 668193267Sjkim#define ACPI_MADT_POLARITY_CONFORMS 0 669193267Sjkim#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 670193267Sjkim#define ACPI_MADT_POLARITY_RESERVED 2 671193267Sjkim#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 672193267Sjkim 673193267Sjkim#define ACPI_MADT_TRIGGER_CONFORMS (0) 674193267Sjkim#define ACPI_MADT_TRIGGER_EDGE (1<<2) 675197104Sjkim#define ACPI_MADT_TRIGGER_RESERVED (2<<2) 676197104Sjkim#define ACPI_MADT_TRIGGER_LEVEL (3<<2) 677197104Sjkim 678193267Sjkim 679193267Sjkim/******************************************************************************* 680193267Sjkim * 681193267Sjkim * MCFG - PCI Memory Mapped Configuration table and sub-table 682193267Sjkim * 683193267Sjkim ******************************************************************************/ 684193267Sjkim 685193267Sjkimtypedef struct acpi_table_mcfg 686193267Sjkim{ 687193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 688197104Sjkim UINT8 Reserved[8]; 689193267Sjkim 690197104Sjkim} ACPI_TABLE_MCFG; 691193267Sjkim 692193267Sjkim 693193267Sjkim/* Subtable */ 694193267Sjkim 695197104Sjkimtypedef struct acpi_mcfg_allocation 696193267Sjkim{ 697193267Sjkim UINT64 Address; /* Base address, processor-relative */ 698193267Sjkim UINT16 PciSegment; /* PCI segment group number */ 699193267Sjkim UINT8 StartBusNumber; /* Starting PCI Bus number */ 700197104Sjkim UINT8 EndBusNumber; /* Final PCI Bus number */ 701167802Sjkim UINT32 Reserved; 702197104Sjkim 703167802Sjkim} ACPI_MCFG_ALLOCATION; 704197104Sjkim 705197104Sjkim 706197104Sjkim/******************************************************************************* 707197104Sjkim * 708197104Sjkim * SBST - Smart Battery Specification Table 709167802Sjkim * 710197104Sjkim ******************************************************************************/ 711167802Sjkim 712197104Sjkimtypedef struct acpi_table_sbst 713167802Sjkim{ 714197104Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 715197104Sjkim UINT32 WarningLevel; 716197104Sjkim UINT32 LowLevel; 717197104Sjkim UINT32 CriticalLevel; 718197104Sjkim 719167802Sjkim} ACPI_TABLE_SBST; 720167802Sjkim 721197104Sjkim 722167802Sjkim/******************************************************************************* 723197104Sjkim * 724193267Sjkim * SLIT - System Locality Distance Information Table 725197104Sjkim * 726197104Sjkim ******************************************************************************/ 727197104Sjkim 728197104Sjkimtypedef struct acpi_table_slit 729193267Sjkim{ 730197104Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 731197104Sjkim UINT64 LocalityCount; 732197104Sjkim UINT8 Entry[1]; /* Real size = localities^2 */ 733193267Sjkim 734197104Sjkim} ACPI_TABLE_SLIT; 735193267Sjkim 736193267Sjkim 737193267Sjkim/******************************************************************************* 738193267Sjkim * 739167802Sjkim * SPCR - Serial Port Console Redirection table 740197104Sjkim * 741167802Sjkim ******************************************************************************/ 742167802Sjkim 743167802Sjkimtypedef struct acpi_table_spcr 744167802Sjkim{ 745167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 746167802Sjkim UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 747167802Sjkim UINT8 Reserved[3]; 748167802Sjkim ACPI_GENERIC_ADDRESS SerialPort; 749167802Sjkim UINT8 InterruptType; 750167802Sjkim UINT8 PcInterrupt; 751167802Sjkim UINT32 Interrupt; 752197104Sjkim UINT8 BaudRate; 753167802Sjkim UINT8 Parity; 754197104Sjkim UINT8 StopBits; 755167802Sjkim UINT8 FlowControl; 756167802Sjkim UINT8 TerminalType; 757167802Sjkim UINT8 Reserved1; 758167802Sjkim UINT16 PciDeviceId; 759167802Sjkim UINT16 PciVendorId; 760167802Sjkim UINT8 PciBus; 761167802Sjkim UINT8 PciDevice; 762197104Sjkim UINT8 PciFunction; 763167802Sjkim UINT32 PciFlags; 764167802Sjkim UINT8 PciSegment; 765167802Sjkim UINT32 Reserved2; 766272444Sjkim 767272444Sjkim} ACPI_TABLE_SPCR; 768272444Sjkim 769272444Sjkim 770272444Sjkim/******************************************************************************* 771272444Sjkim * 772272444Sjkim * SPMI - Server Platform Management Interface table 773272444Sjkim * 774272444Sjkim ******************************************************************************/ 775272444Sjkim 776272444Sjkimtypedef struct acpi_table_spmi 777272444Sjkim{ 778272444Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 779272444Sjkim UINT8 Reserved; 780272444Sjkim UINT8 InterfaceType; 781283092Sjkim UINT16 SpecRevision; /* Version of IPMI */ 782283092Sjkim UINT8 InterruptType; 783167802Sjkim UINT8 GpeNumber; /* GPE assigned */ 784167802Sjkim UINT8 Reserved1; 785167802Sjkim UINT8 PciDeviceFlag; 786167802Sjkim UINT32 Interrupt; 787272444Sjkim ACPI_GENERIC_ADDRESS IpmiRegister; 788167802Sjkim UINT8 PciSegment; 789167802Sjkim UINT8 PciBus; 790167802Sjkim UINT8 PciDevice; 791167802Sjkim UINT8 PciFunction; 792167802Sjkim 793167802Sjkim} ACPI_TABLE_SPMI; 794167802Sjkim 795167802Sjkim 796167802Sjkim/******************************************************************************* 797167802Sjkim * 798167802Sjkim * SRAT - System Resource Affinity Table 799167802Sjkim * 800167802Sjkim ******************************************************************************/ 801197104Sjkim 802167802Sjkimtypedef struct acpi_table_srat 803167802Sjkim{ 804167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 805167802Sjkim UINT32 TableRevision; /* Must be value '1' */ 806167802Sjkim UINT64 Reserved; /* Reserved, must be zero */ 807167802Sjkim 808167802Sjkim} ACPI_TABLE_SRAT; 809167802Sjkim 810167802Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 811167802Sjkim 812167802Sjkimenum AcpiSratType 813167802Sjkim{ 814197104Sjkim ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 815167802Sjkim ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 816167802Sjkim ACPI_SRAT_TYPE_RESERVED = 2 817167802Sjkim}; 818167802Sjkim 819167802Sjkim/* SRAT sub-tables */ 820167802Sjkim 821167802Sjkimtypedef struct acpi_srat_cpu_affinity 822167802Sjkim{ 823167802Sjkim ACPI_SUBTABLE_HEADER Header; 824167802Sjkim UINT8 ProximityDomainLo; 825167802Sjkim UINT8 ApicId; 826167802Sjkim UINT32 Flags; 827197104Sjkim UINT8 LocalSapicEid; 828167802Sjkim UINT8 ProximityDomainHi[3]; 829167802Sjkim UINT32 Reserved; /* Reserved, must be zero */ 830167802Sjkim 831167802Sjkim} ACPI_SRAT_CPU_AFFINITY; 832167802Sjkim 833167802Sjkim/* Flags */ 834167802Sjkim 835167802Sjkim#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 836167802Sjkim 837167802Sjkim 838197104Sjkimtypedef struct acpi_srat_mem_affinity 839167802Sjkim{ 840167802Sjkim ACPI_SUBTABLE_HEADER Header; 841167802Sjkim UINT32 ProximityDomain; 842167802Sjkim UINT16 Reserved; /* Reserved, must be zero */ 843167802Sjkim UINT64 BaseAddress; 844167802Sjkim UINT64 Length; 845167802Sjkim UINT32 MemoryType; /* See acpi_address_range_id */ 846167802Sjkim UINT32 Flags; 847167802Sjkim UINT64 Reserved1; /* Reserved, must be zero */ 848167802Sjkim 849167802Sjkim} ACPI_SRAT_MEM_AFFINITY; 850197104Sjkim 851167802Sjkim/* Flags */ 852167802Sjkim 853167802Sjkim#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 854167802Sjkim#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 855167802Sjkim#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 856167802Sjkim 857167802Sjkim/* Memory types */ 858167802Sjkim 859167802Sjkimenum acpi_address_range_id 860167802Sjkim{ 861197104Sjkim ACPI_ADDRESS_RANGE_MEMORY = 1, 862167802Sjkim ACPI_ADDRESS_RANGE_RESERVED = 2, 863167802Sjkim ACPI_ADDRESS_RANGE_ACPI = 3, 864167802Sjkim ACPI_ADDRESS_RANGE_NVS = 4, 865167802Sjkim ACPI_ADDRESS_RANGE_COUNT = 5 866167802Sjkim}; 867167802Sjkim 868167802Sjkim 869167802Sjkim/******************************************************************************* 870167802Sjkim * 871167802Sjkim * TCPA - Trusted Computing Platform Alliance table 872167802Sjkim * 873167802Sjkim ******************************************************************************/ 874197104Sjkim 875167802Sjkimtypedef struct acpi_table_tcpa 876167802Sjkim{ 877167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 878167802Sjkim UINT16 Reserved; 879167802Sjkim UINT32 MaxLogLength; /* Maximum length for the event log area */ 880167802Sjkim UINT64 LogAddress; /* Address of the event log area */ 881167802Sjkim 882167802Sjkim} ACPI_TABLE_TCPA; 883167802Sjkim 884167802Sjkim 885167802Sjkim/******************************************************************************* 886167802Sjkim * 887167802Sjkim * WDRT - Watchdog Resource Table 888167802Sjkim * 889167802Sjkim ******************************************************************************/ 890197104Sjkim 891167802Sjkimtypedef struct acpi_table_wdrt 892167802Sjkim{ 893167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 894167802Sjkim UINT32 HeaderLength; /* Watchdog Header Length */ 895167802Sjkim UINT8 PciSegment; /* PCI Segment number */ 896167802Sjkim UINT8 PciBus; /* PCI Bus number */ 897167802Sjkim UINT8 PciDevice; /* PCI Device number */ 898167802Sjkim UINT8 PciFunction; /* PCI Function number */ 899167802Sjkim UINT32 TimerPeriod; /* Period of one timer count (msec) */ 900167802Sjkim UINT32 MaxCount; /* Maximum counter value supported */ 901167802Sjkim UINT32 MinCount; /* Minimum counter value */ 902167802Sjkim UINT8 Flags; 903167802Sjkim UINT8 Reserved[3]; 904167802Sjkim UINT32 Entries; /* Number of watchdog entries that follow */ 905167802Sjkim 906197104Sjkim} ACPI_TABLE_WDRT; 907167802Sjkim 908167802Sjkim/* Flags */ 909167802Sjkim 910167802Sjkim#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ 911197104Sjkim 912197104Sjkim 913193267Sjkim/* Reset to default packing */ 914193267Sjkim 915193267Sjkim#pragma pack() 916193267Sjkim 917193267Sjkim#endif /* __ACTBL1_H__ */ 918193267Sjkim