1 /****************************************************************************** 2 * 3 * Name: actbl1.h - Additional ACPI table definitions 4 * $Revision: 1.6 $ 5 * 6 *****************************************************************************/ 7 8 /****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * 12 * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. 13 * All rights reserved. 14 * 15 * 2. License 16 * 17 * 2.1. This is your license from Intel Corp. under its intellectual property 18 * rights. You may have additional license terms from the party that provided 19 * you this software, covering your right to use that party's intellectual 20 * property rights. 21 * 22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 23 * copy of the source code appearing in this file ("Covered Code") an 24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 25 * base code distributed originally by Intel ("Original Intel Code") to copy, 26 * make derivatives, distribute, use and display any portion of the Covered 27 * Code in any form, with the right to sublicense such rights; and 28 * 29 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 30 * license (with the right to sublicense), under only those claims of Intel 31 * patents that are infringed by the Original Intel Code, to make, use, sell, 32 * offer to sell, and import the Covered Code and derivative works thereof 33 * solely to the minimum extent necessary to exercise the above copyright 34 * license, and in no event shall the patent license extend to any additions 35 * to or modifications of the Original Intel Code. No other license or right 36 * is granted directly or by implication, estoppel or otherwise; 37 * 38 * The above copyright and patent license is granted only if the following 39 * conditions are met: 40 * 41 * 3. Conditions 42 * 43 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 44 * Redistribution of source code of any substantial portion of the Covered 45 * Code or modification with rights to further distribute source must include 46 * the above Copyright Notice, the above License, this list of Conditions, 47 * and the following Disclaimer and Export Compliance provision. In addition, 48 * Licensee must cause all Covered Code to which Licensee contributes to 49 * contain a file documenting the changes Licensee made to create that Covered 50 * Code and the date of any change. Licensee must include in that file the 51 * documentation of any changes made by any predecessor Licensee. Licensee 52 * must include a prominent statement that the modification is derived, 53 * directly or indirectly, from Original Intel Code. 54 * 55 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 56 * Redistribution of source code of any substantial portion of the Covered 57 * Code or modification without rights to further distribute source must 58 * include the following Disclaimer and Export Compliance provision in the 59 * documentation and/or other materials provided with distribution. In 60 * addition, Licensee may not authorize further sublicense of source of any 61 * portion of the Covered Code, and must include terms to the effect that the 62 * license from Licensee to its licensee is limited to the intellectual 63 * property embodied in the software Licensee provides to its licensee, and 64 * not to intellectual property embodied in modifications its licensee may 65 * make. 66 * 67 * 3.3. Redistribution of Executable. Redistribution in executable form of any 68 * substantial portion of the Covered Code or modification must reproduce the 69 * above Copyright Notice, and the following Disclaimer and Export Compliance 70 * provision in the documentation and/or other materials provided with the 71 * distribution. 72 * 73 * 3.4. Intel retains all right, title, and interest in and to the Original 74 * Intel Code. 75 * 76 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 77 * Intel shall be used in advertising or otherwise to promote the sale, use or 78 * other dealings in products derived from or relating to the Covered Code 79 * without prior written authorization from Intel. 80 * 81 * 4. Disclaimer and Export Compliance 82 * 83 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 84 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 85 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 86 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 87 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 88 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 89 * PARTICULAR PURPOSE. 90 * 91 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 92 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 93 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 94 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 95 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 96 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 97 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 98 * LIMITED REMEDY. 99 * 100 * 4.3. Licensee shall not export, either directly or indirectly, any of this 101 * software or system incorporating such software without first obtaining any 102 * required license or other approval from the U. S. Department of Commerce or 103 * any other agency or department of the United States Government. In the 104 * event Licensee exports any such software from the United States or 105 * re-exports any such software from a foreign destination, Licensee shall 106 * ensure that the distribution and export/re-export of the software is in 107 * compliance with all laws, regulations, orders, or other restrictions of the 108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 109 * any of its subsidiaries will export/re-export any technical data, process, 110 * software, or service, directly or indirectly, to any country for which the 111 * United States government or any agency thereof requires an export license, 112 * other governmental approval, or letter of assurance, without first obtaining 113 * such license, approval or letter. 114 * 115 *****************************************************************************/ 116 117 #ifndef __ACTBL1_H__ 118 #define __ACTBL1_H__ 119 120 121 /******************************************************************************* 122 * 123 * Additional ACPI Tables 124 * 125 * These tables are not consumed directly by the ACPICA subsystem, but are 126 * included here to support device drivers and the AML disassembler. 127 * 128 ******************************************************************************/ 129 130 131 /* 132 * Values for description table header signatures. Useful because they make 133 * it more difficult to inadvertently type in the wrong signature. 134 */ 135 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 136 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 137 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 138 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 139 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 140 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 141 #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 142 #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 143 #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 144 #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 145 #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 146 #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 147 #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 148 #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 149 #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 150 151 /* Legacy names */ 152 153 #define APIC_SIG "APIC" /* Multiple APIC Description Table */ 154 #define BOOT_SIG "BOOT" /* Simple Boot Flag Table */ 155 #define SBST_SIG "SBST" /* Smart Battery Specification Table */ 156 157 158 /* 159 * All tables must be byte-packed to match the ACPI specification, since 160 * the tables are provided by the system BIOS. 161 */ 162 #pragma pack(1) 163 164 /* 165 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 166 * This is the only type that is even remotely portable. Anything else is not 167 * portable, so do not use any other bitfield types. 168 */ 169 170 171 /******************************************************************************* 172 * 173 * ASF - Alert Standard Format table (Signature "ASF!") 174 * 175 ******************************************************************************/ 176 177 typedef struct acpi_table_asf { 178 ACPI_TABLE_HEADER_DEF 179 } ACPI_TABLE_ASF; 180 181 #define ACPI_ASF_HEADER_DEF \ 182 UINT8 Type; \ 183 UINT8 Reserved; \ 184 UINT16 Length; 185 186 typedef struct acpi_asf_header { 187 ACPI_ASF_HEADER_DEF 188 } ACPI_ASF_HEADER; 189 190 191 /* Values for Type field */ 192 193 #define ASF_INFO 0 194 #define ASF_ALERT 1 195 #define ASF_CONTROL 2 196 #define ASF_BOOT 3 197 #define ASF_ADDRESS 4 198 #define ASF_RESERVED 5 199 200 /* 201 * ASF subtables 202 */ 203 204 /* 0: ASF Information */ 205 206 typedef struct acpi_asf_info { 207 ACPI_ASF_HEADER_DEF 208 UINT8 MinResetValue; 209 UINT8 MinPollInterval; 210 UINT16 SystemId; 211 UINT32 MfgId; 212 UINT8 Flags; 213 UINT8 Reserved2[3]; 214 } ACPI_ASF_INFO; 215 216 /* 1: ASF Alerts */ 217 218 typedef struct acpi_asf_alert { 219 ACPI_ASF_HEADER_DEF 220 UINT8 AssertMask; 221 UINT8 DeassertMask; 222 UINT8 Alerts; 223 UINT8 DataLength; 224 UINT8 Array[1]; 225 } ACPI_ASF_ALERT; 226 227 /* 2: ASF Remote Control */ 228 229 typedef struct acpi_asf_remote { 230 ACPI_ASF_HEADER_DEF 231 UINT8 Controls; 232 UINT8 DataLength; 233 UINT16 Reserved2; 234 UINT8 Array[1]; 235 } ACPI_ASF_REMOTE; 236 237 /* 3: ASF RMCP Boot Options */ 238 239 typedef struct acpi_asf_rmcp { 240 ACPI_ASF_HEADER_DEF 241 UINT8 Capabilities[7]; 242 UINT8 CompletionCode; 243 UINT32 EnterpriseId; 244 UINT8 Command; 245 UINT16 Parameter; 246 UINT16 BootOptions; 247 UINT16 OemParameters; 248 } ACPI_ASF_RMCP; 249 250 /* 4: ASF Address */ 251 252 typedef struct acpi_asf_address { 253 ACPI_ASF_HEADER_DEF 254 UINT8 EpromAddress; 255 UINT8 Devices; 256 UINT8 SmbusAddresses[1]; 257 } ACPI_ASF_ADDRESS; 258 259 260 /******************************************************************************* 261 * 262 * BOOT - Simple Boot Flag Table 263 * 264 ******************************************************************************/ 265 266 typedef struct acpi_table_boot { 267 ACPI_TABLE_HEADER_DEF 268 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 269 UINT8 Reserved[3]; 270 } ACPI_TABLE_BOOT; 271 272 273 /******************************************************************************* 274 * 275 * CPEP - Corrected Platform Error Polling table 276 * 277 ******************************************************************************/ 278 279 typedef struct acpi_table_cpep { 280 ACPI_TABLE_HEADER_DEF 281 UINT64 Reserved; 282 } ACPI_TABLE_CPEP; 283 284 /* Subtable */ 285 286 typedef struct acpi_cpep_polling { 287 UINT8 Type; 288 UINT8 Length; 289 UINT8 ProcessorId; /* Processor ID */ 290 UINT8 ProcessorEid; /* Processor EID */ 291 UINT32 PollingInterval;/* Polling interval (msec) */ 292 } ACPI_CPEP_POLLING; 293 294 295 /******************************************************************************* 296 * 297 * DBGP - Debug Port table 298 * 299 ******************************************************************************/ 300 301 typedef struct acpi_table_dbgp { 302 ACPI_TABLE_HEADER_DEF 303 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 304 UINT8 Reserved[3]; 305 ACPI_GENERIC_ADDRESS DebugPort; 306 } ACPI_TABLE_DBGP; 307 308 309 /******************************************************************************* 310 * 311 * ECDT - Embedded Controller Boot Resources Table 312 * 313 ******************************************************************************/ 314 315 typedef struct ec_boot_resources { 316 ACPI_TABLE_HEADER_DEF 317 ACPI_GENERIC_ADDRESS EcControl; /* Address of EC command/status register */ 318 ACPI_GENERIC_ADDRESS EcData; /* Address of EC data register */ 319 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 320 UINT8 GpeBit; /* The GPE for the EC */ 321 UINT8 EcId[1]; /* Full namepath of the EC in the ACPI namespace */ 322 } EC_BOOT_RESOURCES; 323 324 325 /******************************************************************************* 326 * 327 * HPET - High Precision Event Timer table 328 * 329 ******************************************************************************/ 330 331 typedef struct acpi_hpet_table { 332 ACPI_TABLE_HEADER_DEF 333 UINT32 HardwareId; /* Hardware ID of event timer block */ 334 ACPI_GENERIC_ADDRESS BaseAddress; /* Address of event timer block */ 335 UINT8 HpetNumber; /* HPET sequence number */ 336 UINT16 ClockTick; /* Main counter min tick, periodic mode */ 337 UINT8 Attributes; 338 } HPET_TABLE; 339 340 #if 0 /* HPET flags to be converted to macros */ 341 struct /* Flags (8 bits) */ 342 { 343 UINT8 PageProtect :1;/* 00: No page protection */ 344 UINT8 PageProtect4 :1;/* 01: 4KB page protected */ 345 UINT8 PageProtect64 :1;/* 02: 64KB page protected */ 346 UINT8 :5;/* 03-07: Reserved, must be zero */ 347 } Flags; 348 #endif 349 350 351 /******************************************************************************* 352 * 353 * MADT - Multiple APIC Description Table 354 * 355 ******************************************************************************/ 356 357 typedef struct multiple_apic_table { 358 ACPI_TABLE_HEADER_DEF 359 UINT32 LocalApicAddress;/* Physical address of local APIC */ 360 361 /* Flags (32 bits) */ 362 363 UINT8 PCATCompat : 1;/* 00: System also has dual 8259s */ 364 UINT8 : 7;/* 01-07: Reserved, must be zero */ 365 UINT8 Reserved1[3]; /* 08-31: Reserved, must be zero */ 366 } MULTIPLE_APIC_TABLE; 367 368 /* Values for MADT PCATCompat */ 369 370 #define DUAL_PIC 0 371 #define MULTIPLE_APIC 1 372 373 374 /* Common MADT Sub-table header */ 375 376 #define APIC_HEADER_DEF \ 377 UINT8 Type; \ 378 UINT8 Length; 379 380 typedef struct apic_header { 381 APIC_HEADER_DEF 382 } APIC_HEADER; 383 384 /* Values for Type in APIC_HEADER */ 385 386 #define APIC_PROCESSOR 0 387 #define APIC_IO 1 388 #define APIC_XRUPT_OVERRIDE 2 389 #define APIC_NMI 3 390 #define APIC_LOCAL_NMI 4 391 #define APIC_ADDRESS_OVERRIDE 5 392 #define APIC_IO_SAPIC 6 393 #define APIC_LOCAL_SAPIC 7 394 #define APIC_XRUPT_SOURCE 8 395 #define APIC_RESERVED 9 /* 9 and greater are reserved */ 396 397 398 /* Flag definitions for MADT sub-tables */ 399 400 #define ACPI_MADT_IFLAGS /* INTI flags (16 bits) */ \ 401 UINT8 Polarity : 2; /* 00-01: Polarity of APIC I/O input signals */ \ 402 UINT8 TriggerMode : 2; /* 02-03: Trigger mode of APIC input signals */ \ 403 UINT8 : 4; /* 04-07: Reserved, must be zero */ \ 404 UINT8 Reserved1; /* 08-15: Reserved, must be zero */ 405 406 #define ACPI_MADT_LFLAGS /* Local Sapic flags (32 bits) */ \ 407 UINT8 ProcessorEnabled: 1; /* 00: Processor is usable if set */ \ 408 UINT8 : 7; /* 01-07: Reserved, must be zero */ \ 409 UINT8 Reserved2[3]; /* 08-31: Reserved, must be zero */ 410 411 412 /* Values for MPS INTI flags */ 413 414 #define POLARITY_CONFORMS 0 415 #define POLARITY_ACTIVE_HIGH 1 416 #define POLARITY_RESERVED 2 417 #define POLARITY_ACTIVE_LOW 3 418 419 #define TRIGGER_CONFORMS 0 420 #define TRIGGER_EDGE 1 421 #define TRIGGER_RESERVED 2 422 #define TRIGGER_LEVEL 3 423 424 425 /* 426 * MADT Sub-tables, correspond to Type in APIC_HEADER 427 */ 428 429 /* 0: processor APIC */ 430 431 typedef struct madt_processor_apic { 432 APIC_HEADER_DEF 433 UINT8 ProcessorId; /* ACPI processor id */ 434 UINT8 LocalApicId; /* Processor's local APIC id */ 435 ACPI_MADT_LFLAGS 436 } MADT_PROCESSOR_APIC; 437 438 /* 1: IO APIC */ 439 440 typedef struct madt_io_apic { 441 APIC_HEADER_DEF 442 UINT8 IoApicId; /* I/O APIC ID */ 443 UINT8 Reserved; /* Reserved - must be zero */ 444 UINT32 Address; /* APIC physical address */ 445 UINT32 Interrupt; /* Global system interrupt where INTI lines start */ 446 } MADT_IO_APIC; 447 448 /* 2: Interrupt Override */ 449 450 typedef struct madt_interrupt_override { 451 APIC_HEADER_DEF 452 UINT8 Bus; /* 0 - ISA */ 453 UINT8 Source; /* Interrupt source (IRQ) */ 454 UINT32 Interrupt; /* Global system interrupt */ 455 ACPI_MADT_IFLAGS 456 } MADT_INTERRUPT_OVERRIDE; 457 458 /* 3: NMI Sources */ 459 460 typedef struct madt_nmi_source { 461 APIC_HEADER_DEF 462 ACPI_MADT_IFLAGS 463 UINT32 Interrupt; /* Global system interrupt */ 464 } MADT_NMI_SOURCE; 465 466 /* 4: Local APIC NMI */ 467 468 typedef struct madt_local_apic_nmi { 469 APIC_HEADER_DEF 470 UINT8 ProcessorId; /* ACPI processor id */ 471 ACPI_MADT_IFLAGS 472 UINT8 Lint; /* LINTn to which NMI is connected */ 473 } MADT_LOCAL_APIC_NMI; 474 475 /* 5: Address Override */ 476 477 typedef struct madt_address_override { 478 APIC_HEADER_DEF 479 UINT16 Reserved; /* Reserved, must be zero */ 480 UINT64 Address; /* APIC physical address */ 481 } MADT_ADDRESS_OVERRIDE; 482 483 /* 6: I/O Sapic */ 484 485 typedef struct madt_io_sapic { 486 APIC_HEADER_DEF 487 UINT8 IoSapicId; /* I/O SAPIC ID */ 488 UINT8 Reserved; /* Reserved, must be zero */ 489 UINT32 InterruptBase; /* Glocal interrupt for SAPIC start */ 490 UINT64 Address; /* SAPIC physical address */ 491 } MADT_IO_SAPIC; 492 493 /* 7: Local Sapic */ 494 495 typedef struct madt_local_sapic { 496 APIC_HEADER_DEF 497 UINT8 ProcessorId; /* ACPI processor id */ 498 UINT8 LocalSapicId; /* SAPIC ID */ 499 UINT8 LocalSapicEid; /* SAPIC EID */ 500 UINT8 Reserved[3]; /* Reserved, must be zero */ 501 ACPI_MADT_LFLAGS 502 UINT32 ProcessorUID; /* Numeric UID - ACPI 3.0 */ 503 char ProcessorUIDString[1];/* String UID - ACPI 3.0 */ 504 } MADT_LOCAL_SAPIC; 505 506 /* 8: Platform Interrupt Source */ 507 508 typedef struct madt_interrupt_source { 509 APIC_HEADER_DEF 510 ACPI_MADT_IFLAGS 511 UINT8 InterruptType; /* 1=PMI, 2=INIT, 3=corrected */ 512 UINT8 ProcessorId; /* Processor ID */ 513 UINT8 ProcessorEid; /* Processor EID */ 514 UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 515 UINT32 Interrupt; /* Global system interrupt */ 516 UINT32 Flags; /* Interrupt Source Flags */ 517 } MADT_INTERRUPT_SOURCE; 518 519 520 /******************************************************************************* 521 * 522 * MCFG - PCI Memory Mapped Configuration table and sub-table 523 * 524 ******************************************************************************/ 525 526 typedef struct acpi_table_mcfg { 527 ACPI_TABLE_HEADER_DEF 528 UINT8 Reserved[8]; 529 } ACPI_TABLE_MCFG; 530 531 typedef struct acpi_mcfg_allocation { 532 UINT64 BaseAddress; /* Base address, processor-relative */ 533 UINT16 PciSegment; /* PCI segment group number */ 534 UINT8 StartBusNumber; /* Starting PCI Bus number */ 535 UINT8 EndBusNumber; /* Final PCI Bus number */ 536 UINT32 Reserved; 537 } ACPI_MCFG_ALLOCATION; 538 539 540 /******************************************************************************* 541 * 542 * SBST - Smart Battery Specification Table 543 * 544 ******************************************************************************/ 545 546 typedef struct smart_battery_table { 547 ACPI_TABLE_HEADER_DEF 548 UINT32 WarningLevel; 549 UINT32 LowLevel; 550 UINT32 CriticalLevel; 551 } SMART_BATTERY_TABLE; 552 553 554 /******************************************************************************* 555 * 556 * SLIT - System Locality Distance Information Table 557 * 558 ******************************************************************************/ 559 560 typedef struct system_locality_info { 561 ACPI_TABLE_HEADER_DEF 562 UINT64 LocalityCount; 563 UINT8 Entry[1][1]; 564 } SYSTEM_LOCALITY_INFO; 565 566 567 /******************************************************************************* 568 * 569 * SPCR - Serial Port Console Redirection table 570 * 571 ******************************************************************************/ 572 573 typedef struct acpi_table_spcr { 574 ACPI_TABLE_HEADER_DEF 575 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 576 UINT8 Reserved[3]; 577 ACPI_GENERIC_ADDRESS SerialPort; 578 UINT8 InterruptType; 579 UINT8 PcInterrupt; 580 UINT32 Interrupt; 581 UINT8 BaudRate; 582 UINT8 Parity; 583 UINT8 StopBits; 584 UINT8 FlowControl; 585 UINT8 TerminalType; 586 UINT8 Reserved2; 587 UINT16 PciDeviceId; 588 UINT16 PciVendorId; 589 UINT8 PciBus; 590 UINT8 PciDevice; 591 UINT8 PciFunction; 592 UINT32 PciFlags; 593 UINT8 PciSegment; 594 UINT32 Reserved3; 595 } ACPI_TABLE_SPCR; 596 597 598 /******************************************************************************* 599 * 600 * SPMI - Server Platform Management Interface table 601 * 602 ******************************************************************************/ 603 604 typedef struct acpi_table_spmi { 605 ACPI_TABLE_HEADER_DEF 606 UINT8 Reserved; 607 UINT8 InterfaceType; 608 UINT16 SpecRevision; /* Version of IPMI */ 609 UINT8 InterruptType; 610 UINT8 GpeNumber; /* GPE assigned */ 611 UINT8 Reserved2; 612 UINT8 PciDeviceFlag; 613 UINT32 Interrupt; 614 ACPI_GENERIC_ADDRESS IpmiRegister; 615 UINT8 PciSegment; 616 UINT8 PciBus; 617 UINT8 PciDevice; 618 UINT8 PciFunction; 619 } ACPI_TABLE_SPMI; 620 621 622 /******************************************************************************* 623 * 624 * SRAT - System Resource Affinity Table 625 * 626 ******************************************************************************/ 627 628 typedef struct system_resource_affinity { 629 ACPI_TABLE_HEADER_DEF 630 UINT32 Reserved1; /* Must be value '1' */ 631 UINT64 Reserved2; /* Reserved, must be zero */ 632 } SYSTEM_RESOURCE_AFFINITY; 633 634 635 /* SRAT common sub-table header */ 636 637 #define SRAT_SUBTABLE_HEADER \ 638 UINT8 Type; \ 639 UINT8 Length; 640 641 /* Values for Type above */ 642 643 #define SRAT_CPU_AFFINITY 0 644 #define SRAT_MEMORY_AFFINITY 1 645 #define SRAT_RESERVED 2 646 647 648 /* SRAT sub-tables */ 649 650 typedef struct static_resource_alloc { 651 SRAT_SUBTABLE_HEADER 652 UINT8 ProximityDomainLo; 653 UINT8 ApicId; 654 655 /* Flags (32 bits) */ 656 657 UINT8 Enabled :1;/* 00: Use affinity structure */ 658 UINT8 :7;/* 01-07: Reserved, must be zero */ 659 UINT8 Reserved3[3]; /* 08-31: Reserved, must be zero */ 660 661 UINT8 LocalSapicEid; 662 UINT8 ProximityDomainHi[3]; 663 UINT32 Reserved4; /* Reserved, must be zero */ 664 } STATIC_RESOURCE_ALLOC; 665 666 typedef struct memory_affinity { 667 SRAT_SUBTABLE_HEADER 668 UINT32 ProximityDomain; 669 UINT16 Reserved3; 670 UINT64 BaseAddress; 671 UINT64 AddressLength; 672 UINT32 Reserved4; 673 674 /* Flags (32 bits) */ 675 676 UINT8 Enabled :1;/* 00: Use affinity structure */ 677 UINT8 HotPluggable :1;/* 01: Memory region is hot pluggable */ 678 UINT8 NonVolatile :1;/* 02: Memory is non-volatile */ 679 UINT8 :5;/* 03-07: Reserved, must be zero */ 680 UINT8 Reserved5[3]; /* 08-31: Reserved, must be zero */ 681 682 UINT64 Reserved6; /* Reserved, must be zero */ 683 } MEMORY_AFFINITY; 684 685 686 /******************************************************************************* 687 * 688 * TCPA - Trusted Computing Platform Alliance table 689 * 690 ******************************************************************************/ 691 692 typedef struct acpi_table_tcpa { 693 ACPI_TABLE_HEADER_DEF 694 UINT16 Reserved; 695 UINT32 MaxLogLength; /* Maximum length for the event log area */ 696 UINT64 LogAddress; /* Address of the event log area */ 697 } ACPI_TABLE_TCPA; 698 699 700 /******************************************************************************* 701 * 702 * WDRT - Watchdog Resource Table 703 * 704 ******************************************************************************/ 705 706 typedef struct acpi_table_wdrt { 707 ACPI_TABLE_HEADER_DEF 708 UINT32 HeaderLength; /* Watchdog Header Length */ 709 UINT8 PciSegment; /* PCI Segment number */ 710 UINT8 PciBus; /* PCI Bus number */ 711 UINT8 PciDevice; /* PCI Device number */ 712 UINT8 PciFunction; /* PCI Function number */ 713 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 714 UINT32 MaxCount; /* Maximum counter value supported */ 715 UINT32 MinCount; /* Minimum counter value */ 716 UINT8 Flags; 717 UINT8 Reserved[3]; 718 UINT32 Entries; /* Number of watchdog entries that follow */ 719 } ACPI_TABLE_WDRT; 720 721 #if 0 /* Flags, will be converted to macros */ 722 UINT8 Enabled :1; /* 00: Timer enabled */ 723 UINT8 :6; /* 01-06: Reserved */ 724 UINT8 SleepStop :1; /* 07: Timer stopped in sleep state */ 725 #endif 726 727 728 /* Macros used to generate offsets to specific table fields */ 729 730 #define ACPI_ASF0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_INFO,f) 731 #define ACPI_ASF1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT,f) 732 #define ACPI_ASF2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_REMOTE,f) 733 #define ACPI_ASF3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_RMCP,f) 734 #define ACPI_ASF4_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ADDRESS,f) 735 #define ACPI_BOOT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_BOOT,f) 736 #define ACPI_CPEP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_CPEP,f) 737 #define ACPI_CPEP0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_CPEP_POLLING,f) 738 #define ACPI_DBGP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_DBGP,f) 739 #define ACPI_ECDT_OFFSET(f) (UINT8) ACPI_OFFSET (EC_BOOT_RESOURCES,f) 740 #define ACPI_HPET_OFFSET(f) (UINT8) ACPI_OFFSET (HPET_TABLE,f) 741 #define ACPI_MADT_OFFSET(f) (UINT8) ACPI_OFFSET (MULTIPLE_APIC_TABLE,f) 742 #define ACPI_MADT0_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_PROCESSOR_APIC,f) 743 #define ACPI_MADT1_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_IO_APIC,f) 744 #define ACPI_MADT2_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_INTERRUPT_OVERRIDE,f) 745 #define ACPI_MADT3_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_NMI_SOURCE,f) 746 #define ACPI_MADT4_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_LOCAL_APIC_NMI,f) 747 #define ACPI_MADT5_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_ADDRESS_OVERRIDE,f) 748 #define ACPI_MADT6_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_IO_SAPIC,f) 749 #define ACPI_MADT7_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_LOCAL_SAPIC,f) 750 #define ACPI_MADT8_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_INTERRUPT_SOURCE,f) 751 #define ACPI_MADTH_OFFSET(f) (UINT8) ACPI_OFFSET (APIC_HEADER,f) 752 #define ACPI_MCFG_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MCFG,f) 753 #define ACPI_MCFG0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f) 754 #define ACPI_SBST_OFFSET(f) (UINT8) ACPI_OFFSET (SMART_BATTERY_TABLE,f) 755 #define ACPI_SLIT_OFFSET(f) (UINT8) ACPI_OFFSET (SYSTEM_LOCALITY_INFO,f) 756 #define ACPI_SPCR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPCR,f) 757 #define ACPI_SPMI_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPMI,f) 758 #define ACPI_SRAT_OFFSET(f) (UINT8) ACPI_OFFSET (SYSTEM_RESOURCE_AFFINITY,f) 759 #define ACPI_SRAT0_OFFSET(f) (UINT8) ACPI_OFFSET (STATIC_RESOURCE_ALLOC,f) 760 #define ACPI_SRAT1_OFFSET(f) (UINT8) ACPI_OFFSET (MEMORY_AFFINITY,f) 761 #define ACPI_TCPA_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_TCPA,f) 762 #define ACPI_WDRT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WDRT,f) 763 764 765 #define ACPI_HPET_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (HPET_TABLE,f,o) 766 #define ACPI_SRAT0_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (STATIC_RESOURCE_ALLOC,f,o) 767 #define ACPI_SRAT1_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MEMORY_AFFINITY,f,o) 768 #define ACPI_MADT_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MULTIPLE_APIC_TABLE,f,o) 769 #define ACPI_MADT0_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_PROCESSOR_APIC,f,o) 770 #define ACPI_MADT2_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_INTERRUPT_OVERRIDE,f,o) 771 #define ACPI_MADT3_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_NMI_SOURCE,f,o) 772 #define ACPI_MADT4_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_LOCAL_APIC_NMI,f,o) 773 #define ACPI_MADT7_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_LOCAL_SAPIC,f,o) 774 #define ACPI_MADT8_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_INTERRUPT_SOURCE,f,o) 775 776 777 /* Reset to default packing */ 778 779 #pragma pack() 780 781 #endif /* __ACTBL1_H__ */ 782