actbl1.h (151937) | actbl1.h (167802) |
---|---|
1/****************************************************************************** 2 * | 1/****************************************************************************** 2 * |
3 * Name: actbl1.h - ACPI 1.0 tables 4 * $Revision: 1.32 $ | 3 * Name: actbl1.h - Additional ACPI table definitions 4 * $Revision: 1.47 $ |
5 * 6 *****************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * | 5 * 6 *****************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * |
12 * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp. | 12 * Some or all of this work - Copyright (c) 1999 - 2007, 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. --- 91 unchanged lines hidden (view full) --- 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 | 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. --- 91 unchanged lines hidden (view full) --- 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_DMAR "DMAR" /* DMA Remapping table */ 140#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 141#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 142#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 143#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 144#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 145#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 146#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 147#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 148#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 149#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 150#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 151 152 153/* 154 * All tables must be byte-packed to match the ACPI specification, since 155 * the tables are provided by the system BIOS. 156 */ |
|
120#pragma pack(1) 121 122/* | 157#pragma pack(1) 158 159/* |
123 * ACPI 1.0 Root System Description Table (RSDT) | 160 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 161 * This is the only type that is even remotely portable. Anything else is not 162 * portable, so do not use any other bitfield types. |
124 */ | 163 */ |
125typedef struct rsdt_descriptor_rev1 | 164 165 166/* Common Sub-table header (used in MADT, SRAT, etc.) */ 167 168typedef struct acpi_subtable_header |
126{ | 169{ |
127 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 128 UINT32 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */ | 170 UINT8 Type; 171 UINT8 Length; |
129 | 172 |
130} RSDT_DESCRIPTOR_REV1; | 173} ACPI_SUBTABLE_HEADER; |
131 132 | 174 175 |
176/******************************************************************************* 177 * 178 * ASF - Alert Standard Format table (Signature "ASF!") 179 * 180 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 181 * 182 ******************************************************************************/ 183 184typedef struct acpi_table_asf 185{ 186 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 187 188} ACPI_TABLE_ASF; 189 190 191/* ASF subtable header */ 192 193typedef struct acpi_asf_header 194{ 195 UINT8 Type; 196 UINT8 Reserved; 197 UINT16 Length; 198 199} ACPI_ASF_HEADER; 200 201 202/* Values for Type field above */ 203 204enum AcpiAsfType 205{ 206 ACPI_ASF_TYPE_INFO = 0, 207 ACPI_ASF_TYPE_ALERT = 1, 208 ACPI_ASF_TYPE_CONTROL = 2, 209 ACPI_ASF_TYPE_BOOT = 3, 210 ACPI_ASF_TYPE_ADDRESS = 4, 211 ACPI_ASF_TYPE_RESERVED = 5 212}; 213 |
|
133/* | 214/* |
134 * ACPI 1.0 Firmware ACPI Control Structure (FACS) | 215 * ASF subtables |
135 */ | 216 */ |
136typedef struct facs_descriptor_rev1 | 217 218/* 0: ASF Information */ 219 220typedef struct acpi_asf_info |
137{ | 221{ |
138 char Signature[4]; /* ASCII table signature */ 139 UINT32 Length; /* Length of structure in bytes */ 140 UINT32 HardwareSignature; /* Hardware configuration signature */ 141 UINT32 FirmwareWakingVector; /* ACPI OS waking vector */ 142 UINT32 GlobalLock; /* Global Lock */ | 222 ACPI_ASF_HEADER Header; 223 UINT8 MinResetValue; 224 UINT8 MinPollInterval; 225 UINT16 SystemId; 226 UINT32 MfgId; 227 UINT8 Flags; 228 UINT8 Reserved2[3]; |
143 | 229 |
144 /* Flags (32 bits) */ | 230} ACPI_ASF_INFO; |
145 | 231 |
146 UINT8_BIT S4Bios_f : 1; /* 00: S4BIOS support is present */ 147 UINT8_BIT : 7; /* 01-07: Reserved, must be zero */ 148 UINT8 Reserved1[3]; /* 08-31: Reserved, must be zero */ | 232/* 1: ASF Alerts */ |
149 | 233 |
150 UINT8 Reserved2[40]; /* Reserved, must be zero */ | 234typedef struct acpi_asf_alert 235{ 236 ACPI_ASF_HEADER Header; 237 UINT8 AssertMask; 238 UINT8 DeassertMask; 239 UINT8 Alerts; 240 UINT8 DataLength; |
151 | 241 |
152} FACS_DESCRIPTOR_REV1; | 242} ACPI_ASF_ALERT; |
153 | 243 |
244typedef struct acpi_asf_alert_data 245{ 246 UINT8 Address; 247 UINT8 Command; 248 UINT8 Mask; 249 UINT8 Value; 250 UINT8 SensorType; 251 UINT8 Type; 252 UINT8 Offset; 253 UINT8 SourceType; 254 UINT8 Severity; 255 UINT8 SensorNumber; 256 UINT8 Entity; 257 UINT8 Instance; |
|
154 | 258 |
259} ACPI_ASF_ALERT_DATA; 260 261/* 2: ASF Remote Control */ 262 263typedef struct acpi_asf_remote 264{ 265 ACPI_ASF_HEADER Header; 266 UINT8 Controls; 267 UINT8 DataLength; 268 UINT16 Reserved2; 269 270} ACPI_ASF_REMOTE; 271 272typedef struct acpi_asf_control_data 273{ 274 UINT8 Function; 275 UINT8 Address; 276 UINT8 Command; 277 UINT8 Value; 278 279} ACPI_ASF_CONTROL_DATA; 280 281/* 3: ASF RMCP Boot Options */ 282 283typedef struct acpi_asf_rmcp 284{ 285 ACPI_ASF_HEADER Header; 286 UINT8 Capabilities[7]; 287 UINT8 CompletionCode; 288 UINT32 EnterpriseId; 289 UINT8 Command; 290 UINT16 Parameter; 291 UINT16 BootOptions; 292 UINT16 OemParameters; 293 294} ACPI_ASF_RMCP; 295 296/* 4: ASF Address */ 297 298typedef struct acpi_asf_address 299{ 300 ACPI_ASF_HEADER Header; 301 UINT8 EpromAddress; 302 UINT8 Devices; 303 304} ACPI_ASF_ADDRESS; 305 306 307/******************************************************************************* 308 * 309 * BOOT - Simple Boot Flag Table 310 * 311 ******************************************************************************/ 312 313typedef struct acpi_table_boot 314{ 315 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 316 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 317 UINT8 Reserved[3]; 318 319} ACPI_TABLE_BOOT; 320 321 322/******************************************************************************* 323 * 324 * CPEP - Corrected Platform Error Polling table 325 * 326 ******************************************************************************/ 327 328typedef struct acpi_table_cpep 329{ 330 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 331 UINT64 Reserved; 332 333} ACPI_TABLE_CPEP; 334 335 336/* Subtable */ 337 338typedef struct acpi_cpep_polling 339{ 340 UINT8 Type; 341 UINT8 Length; 342 UINT8 Id; /* Processor ID */ 343 UINT8 Eid; /* Processor EID */ 344 UINT32 Interval; /* Polling interval (msec) */ 345 346} ACPI_CPEP_POLLING; 347 348 349/******************************************************************************* 350 * 351 * DBGP - Debug Port table 352 * 353 ******************************************************************************/ 354 355typedef struct acpi_table_dbgp 356{ 357 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 358 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 359 UINT8 Reserved[3]; 360 ACPI_GENERIC_ADDRESS DebugPort; 361 362} ACPI_TABLE_DBGP; 363 364 365/******************************************************************************* 366 * 367 * DMAR - DMA Remapping table 368 * 369 ******************************************************************************/ 370 371typedef struct acpi_table_dmar 372{ 373 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 374 UINT8 Width; /* Host Address Width */ 375 UINT8 Reserved[11]; 376 377} ACPI_TABLE_DMAR; 378 379/* DMAR subtable header */ 380 381typedef struct acpi_dmar_header 382{ 383 UINT16 Type; 384 UINT16 Length; 385 UINT8 Flags; 386 UINT8 Reserved[3]; 387 388} ACPI_DMAR_HEADER; 389 390/* Values for subtable type in ACPI_DMAR_HEADER */ 391 392enum AcpiDmarType 393{ 394 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 395 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 396 ACPI_DMAR_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 397}; 398 399typedef struct acpi_dmar_device_scope 400{ 401 UINT8 EntryType; 402 UINT8 Length; 403 UINT8 Segment; 404 UINT8 Bus; 405 406} ACPI_DMAR_DEVICE_SCOPE; 407 408/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ 409 410enum AcpiDmarScopeType 411{ 412 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 413 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 414 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 415 ACPI_DMAR_SCOPE_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 416}; 417 418 |
|
155/* | 419/* |
156 * ACPI 1.0 Fixed ACPI Description Table (FADT) | 420 * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER |
157 */ | 421 */ |
158typedef struct fadt_descriptor_rev1 | 422 423/* 0: Hardware Unit Definition */ 424 425typedef struct acpi_dmar_hardware_unit |
159{ | 426{ |
160 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 161 UINT32 FirmwareCtrl; /* Physical address of FACS */ 162 UINT32 Dsdt; /* Physical address of DSDT */ 163 UINT8 Model; /* System Interrupt Model */ 164 UINT8 Reserved1; /* Reserved, must be zero */ 165 UINT16 SciInt; /* System vector of SCI interrupt */ 166 UINT32 SmiCmd; /* Port address of SMI command port */ 167 UINT8 AcpiEnable; /* Value to write to smi_cmd to enable ACPI */ 168 UINT8 AcpiDisable; /* Value to write to smi_cmd to disable ACPI */ 169 UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ 170 UINT8 Reserved2; /* Reserved, must be zero */ 171 UINT32 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ 172 UINT32 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ 173 UINT32 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ 174 UINT32 Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ 175 UINT32 Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ 176 UINT32 PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ 177 UINT32 Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ 178 UINT32 Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ 179 UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ 180 UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ 181 UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ 182 UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ 183 UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ 184 UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ 185 UINT8 Gpe1Base; /* Offset in gpe model where gpe1 events start */ 186 UINT8 Reserved3; /* Reserved, must be zero */ 187 UINT16 Plvl2Lat; /* Worst case HW latency to enter/exit C2 state */ 188 UINT16 Plvl3Lat; /* Worst case HW latency to enter/exit C3 state */ 189 UINT16 FlushSize; /* Size of area read to flush caches */ 190 UINT16 FlushStride; /* Stride used in flushing caches */ 191 UINT8 DutyOffset; /* Bit location of duty cycle field in p_cnt reg */ 192 UINT8 DutyWidth; /* Bit width of duty cycle field in p_cnt reg */ 193 UINT8 DayAlrm; /* Index to day-of-month alarm in RTC CMOS RAM */ 194 UINT8 MonAlrm; /* Index to month-of-year alarm in RTC CMOS RAM */ 195 UINT8 Century; /* Index to century in RTC CMOS RAM */ 196 UINT8 Reserved4[3]; /* Reserved, must be zero */ | 427 ACPI_DMAR_HEADER Header; 428 UINT64 Address; /* Register Base Address */ |
197 | 429 |
198 /* Flags (32 bits) */ | 430} ACPI_DMAR_HARDWARE_UNIT; |
199 | 431 |
200 UINT8_BIT WbInvd : 1; /* 00: The wbinvd instruction works properly */ 201 UINT8_BIT WbInvdFlush : 1; /* 01: The wbinvd flushes but does not invalidate */ 202 UINT8_BIT ProcC1 : 1; /* 02: All processors support C1 state */ 203 UINT8_BIT Plvl2Up : 1; /* 03: C2 state works on MP system */ 204 UINT8_BIT PwrButton : 1; /* 04: Power button is handled as a generic feature */ 205 UINT8_BIT SleepButton : 1; /* 05: Sleep button is handled as a generic feature, or not present */ 206 UINT8_BIT FixedRTC : 1; /* 06: RTC wakeup stat not in fixed register space */ 207 UINT8_BIT Rtcs4 : 1; /* 07: RTC wakeup stat not possible from S4 */ 208 UINT8_BIT TmrValExt : 1; /* 08: tmr_val width is 32 bits (0 = 24 bits) */ 209 UINT8_BIT : 7; /* 09-15: Reserved, must be zero */ 210 UINT8 Reserved5[2]; /* 16-31: Reserved, must be zero */ | 432/* Flags */ |
211 | 433 |
212} FADT_DESCRIPTOR_REV1; | 434#define ACPI_DMAR_INCLUDE_ALL (1) |
213 | 435 |
214#pragma pack() | 436/* 1: Reserved Memory Defininition */ |
215 | 437 |
216#endif /* __ACTBL1_H__ */ | 438typedef struct acpi_dmar_reserved_memory 439{ 440 ACPI_DMAR_HEADER Header; 441 UINT64 Address; /* 4K aligned base address */ 442 UINT64 EndAddress; /* 4K aligned limit address */ |
217 | 443 |
444} ACPI_DMAR_RESERVED_MEMORY; |
|
218 | 445 |
446/* Flags */ 447 448#define ACPI_DMAR_ALLOW_ALL (1) 449 450 451/******************************************************************************* 452 * 453 * ECDT - Embedded Controller Boot Resources Table 454 * 455 ******************************************************************************/ 456 457typedef struct acpi_table_ecdt 458{ 459 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 460 ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 461 ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 462 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 463 UINT8 Gpe; /* The GPE for the EC */ 464 UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 465 466} ACPI_TABLE_ECDT; 467 468 469/******************************************************************************* 470 * 471 * HPET - High Precision Event Timer table 472 * 473 ******************************************************************************/ 474 475typedef struct acpi_table_hpet 476{ 477 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 478 UINT32 Id; /* Hardware ID of event timer block */ 479 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 480 UINT8 Sequence; /* HPET sequence number */ 481 UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 482 UINT8 Flags; 483 484} ACPI_TABLE_HPET; 485 486/*! Flags */ 487 488#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 489#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ 490#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ 491 492/*! [End] no source code translation !*/ 493 494 495/******************************************************************************* 496 * 497 * MADT - Multiple APIC Description Table 498 * 499 ******************************************************************************/ 500 501typedef struct acpi_table_madt 502{ 503 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 504 UINT32 Address; /* Physical address of local APIC */ 505 UINT32 Flags; 506 507} ACPI_TABLE_MADT; 508 509/* Flags */ 510 511#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 512 513/* Values for PCATCompat flag */ 514 515#define ACPI_MADT_DUAL_PIC 0 516#define ACPI_MADT_MULTIPLE_APIC 1 517 518 519/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 520 521enum AcpiMadtType 522{ 523 ACPI_MADT_TYPE_LOCAL_APIC = 0, 524 ACPI_MADT_TYPE_IO_APIC = 1, 525 ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 526 ACPI_MADT_TYPE_NMI_SOURCE = 3, 527 ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 528 ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 529 ACPI_MADT_TYPE_IO_SAPIC = 6, 530 ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 531 ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 532 ACPI_MADT_TYPE_RESERVED = 9 /* 9 and greater are reserved */ 533}; 534 535 536/* 537 * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 538 */ 539 540/* 0: Processor Local APIC */ 541 542typedef struct acpi_madt_local_apic 543{ 544 ACPI_SUBTABLE_HEADER Header; 545 UINT8 ProcessorId; /* ACPI processor id */ 546 UINT8 Id; /* Processor's local APIC id */ 547 UINT32 LapicFlags; 548 549} ACPI_MADT_LOCAL_APIC; 550 551/* 1: IO APIC */ 552 553typedef struct acpi_madt_io_apic 554{ 555 ACPI_SUBTABLE_HEADER Header; 556 UINT8 Id; /* I/O APIC ID */ 557 UINT8 Reserved; /* Reserved - must be zero */ 558 UINT32 Address; /* APIC physical address */ 559 UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 560 561} ACPI_MADT_IO_APIC; 562 563/* 2: Interrupt Override */ 564 565typedef struct acpi_madt_interrupt_override 566{ 567 ACPI_SUBTABLE_HEADER Header; 568 UINT8 Bus; /* 0 - ISA */ 569 UINT8 SourceIrq; /* Interrupt source (IRQ) */ 570 UINT32 GlobalIrq; /* Global system interrupt */ 571 UINT16 IntiFlags; 572 573} ACPI_MADT_INTERRUPT_OVERRIDE; 574 575/* 3: NMI Source */ 576 577typedef struct acpi_madt_nmi_source 578{ 579 ACPI_SUBTABLE_HEADER Header; 580 UINT16 IntiFlags; 581 UINT32 GlobalIrq; /* Global system interrupt */ 582 583} ACPI_MADT_NMI_SOURCE; 584 585/* 4: Local APIC NMI */ 586 587typedef struct acpi_madt_local_apic_nmi 588{ 589 ACPI_SUBTABLE_HEADER Header; 590 UINT8 ProcessorId; /* ACPI processor id */ 591 UINT16 IntiFlags; 592 UINT8 Lint; /* LINTn to which NMI is connected */ 593 594} ACPI_MADT_LOCAL_APIC_NMI; 595 596/* 5: Address Override */ 597 598typedef struct acpi_madt_local_apic_override 599{ 600 ACPI_SUBTABLE_HEADER Header; 601 UINT16 Reserved; /* Reserved, must be zero */ 602 UINT64 Address; /* APIC physical address */ 603 604} ACPI_MADT_LOCAL_APIC_OVERRIDE; 605 606/* 6: I/O Sapic */ 607 608typedef struct acpi_madt_io_sapic 609{ 610 ACPI_SUBTABLE_HEADER Header; 611 UINT8 Id; /* I/O SAPIC ID */ 612 UINT8 Reserved; /* Reserved, must be zero */ 613 UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 614 UINT64 Address; /* SAPIC physical address */ 615 616} ACPI_MADT_IO_SAPIC; 617 618/* 7: Local Sapic */ 619 620typedef struct acpi_madt_local_sapic 621{ 622 ACPI_SUBTABLE_HEADER Header; 623 UINT8 ProcessorId; /* ACPI processor id */ 624 UINT8 Id; /* SAPIC ID */ 625 UINT8 Eid; /* SAPIC EID */ 626 UINT8 Reserved[3]; /* Reserved, must be zero */ 627 UINT32 LapicFlags; 628 UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 629 char UidString[1]; /* String UID - ACPI 3.0 */ 630 631} ACPI_MADT_LOCAL_SAPIC; 632 633/* 8: Platform Interrupt Source */ 634 635typedef struct acpi_madt_interrupt_source 636{ 637 ACPI_SUBTABLE_HEADER Header; 638 UINT16 IntiFlags; 639 UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 640 UINT8 Id; /* Processor ID */ 641 UINT8 Eid; /* Processor EID */ 642 UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 643 UINT32 GlobalIrq; /* Global system interrupt */ 644 UINT32 Flags; /* Interrupt Source Flags */ 645 646} ACPI_MADT_INTERRUPT_SOURCE; 647 648/* Flags field above */ 649 650#define ACPI_MADT_CPEI_OVERRIDE (1) 651 652 653/* 654 * Common flags fields for MADT subtables 655 */ 656 657/* MADT Local APIC flags (LapicFlags) */ 658 659#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 660 661/* MADT MPS INTI flags (IntiFlags) */ 662 663#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 664#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 665 666/* Values for MPS INTI flags */ 667 668#define ACPI_MADT_POLARITY_CONFORMS 0 669#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 670#define ACPI_MADT_POLARITY_RESERVED 2 671#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 672 673#define ACPI_MADT_TRIGGER_CONFORMS (0) 674#define ACPI_MADT_TRIGGER_EDGE (1<<2) 675#define ACPI_MADT_TRIGGER_RESERVED (2<<2) 676#define ACPI_MADT_TRIGGER_LEVEL (3<<2) 677 678 679/******************************************************************************* 680 * 681 * MCFG - PCI Memory Mapped Configuration table and sub-table 682 * 683 ******************************************************************************/ 684 685typedef struct acpi_table_mcfg 686{ 687 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 688 UINT8 Reserved[8]; 689 690} ACPI_TABLE_MCFG; 691 692 693/* Subtable */ 694 695typedef struct acpi_mcfg_allocation 696{ 697 UINT64 Address; /* Base address, processor-relative */ 698 UINT16 PciSegment; /* PCI segment group number */ 699 UINT8 StartBusNumber; /* Starting PCI Bus number */ 700 UINT8 EndBusNumber; /* Final PCI Bus number */ 701 UINT32 Reserved; 702 703} ACPI_MCFG_ALLOCATION; 704 705 706/******************************************************************************* 707 * 708 * SBST - Smart Battery Specification Table 709 * 710 ******************************************************************************/ 711 712typedef struct acpi_table_sbst 713{ 714 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 715 UINT32 WarningLevel; 716 UINT32 LowLevel; 717 UINT32 CriticalLevel; 718 719} ACPI_TABLE_SBST; 720 721 722/******************************************************************************* 723 * 724 * SLIT - System Locality Distance Information Table 725 * 726 ******************************************************************************/ 727 728typedef struct acpi_table_slit 729{ 730 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 731 UINT64 LocalityCount; 732 UINT8 Entry[1]; /* Real size = localities^2 */ 733 734} ACPI_TABLE_SLIT; 735 736 737/******************************************************************************* 738 * 739 * SPCR - Serial Port Console Redirection table 740 * 741 ******************************************************************************/ 742 743typedef struct acpi_table_spcr 744{ 745 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 746 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 747 UINT8 Reserved[3]; 748 ACPI_GENERIC_ADDRESS SerialPort; 749 UINT8 InterruptType; 750 UINT8 PcInterrupt; 751 UINT32 Interrupt; 752 UINT8 BaudRate; 753 UINT8 Parity; 754 UINT8 StopBits; 755 UINT8 FlowControl; 756 UINT8 TerminalType; 757 UINT8 Reserved1; 758 UINT16 PciDeviceId; 759 UINT16 PciVendorId; 760 UINT8 PciBus; 761 UINT8 PciDevice; 762 UINT8 PciFunction; 763 UINT32 PciFlags; 764 UINT8 PciSegment; 765 UINT32 Reserved2; 766 767} ACPI_TABLE_SPCR; 768 769 770/******************************************************************************* 771 * 772 * SPMI - Server Platform Management Interface table 773 * 774 ******************************************************************************/ 775 776typedef struct acpi_table_spmi 777{ 778 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 779 UINT8 Reserved; 780 UINT8 InterfaceType; 781 UINT16 SpecRevision; /* Version of IPMI */ 782 UINT8 InterruptType; 783 UINT8 GpeNumber; /* GPE assigned */ 784 UINT8 Reserved1; 785 UINT8 PciDeviceFlag; 786 UINT32 Interrupt; 787 ACPI_GENERIC_ADDRESS IpmiRegister; 788 UINT8 PciSegment; 789 UINT8 PciBus; 790 UINT8 PciDevice; 791 UINT8 PciFunction; 792 793} ACPI_TABLE_SPMI; 794 795 796/******************************************************************************* 797 * 798 * SRAT - System Resource Affinity Table 799 * 800 ******************************************************************************/ 801 802typedef struct acpi_table_srat 803{ 804 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 805 UINT32 TableRevision; /* Must be value '1' */ 806 UINT64 Reserved; /* Reserved, must be zero */ 807 808} ACPI_TABLE_SRAT; 809 810/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 811 812enum AcpiSratType 813{ 814 ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 815 ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 816 ACPI_SRAT_TYPE_RESERVED = 2 817}; 818 819/* SRAT sub-tables */ 820 821typedef struct acpi_srat_cpu_affinity 822{ 823 ACPI_SUBTABLE_HEADER Header; 824 UINT8 ProximityDomainLo; 825 UINT8 ApicId; 826 UINT32 Flags; 827 UINT8 LocalSapicEid; 828 UINT8 ProximityDomainHi[3]; 829 UINT32 Reserved; /* Reserved, must be zero */ 830 831} ACPI_SRAT_CPU_AFFINITY; 832 833/* Flags */ 834 835#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 836 837 838typedef struct acpi_srat_mem_affinity 839{ 840 ACPI_SUBTABLE_HEADER Header; 841 UINT32 ProximityDomain; 842 UINT16 Reserved; /* Reserved, must be zero */ 843 UINT64 BaseAddress; 844 UINT64 Length; 845 UINT32 MemoryType; /* See acpi_address_range_id */ 846 UINT32 Flags; 847 UINT64 Reserved1; /* Reserved, must be zero */ 848 849} ACPI_SRAT_MEM_AFFINITY; 850 851/* Flags */ 852 853#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 854#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 855#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 856 857/* Memory types */ 858 859enum acpi_address_range_id 860{ 861 ACPI_ADDRESS_RANGE_MEMORY = 1, 862 ACPI_ADDRESS_RANGE_RESERVED = 2, 863 ACPI_ADDRESS_RANGE_ACPI = 3, 864 ACPI_ADDRESS_RANGE_NVS = 4, 865 ACPI_ADDRESS_RANGE_COUNT = 5 866}; 867 868 869/******************************************************************************* 870 * 871 * TCPA - Trusted Computing Platform Alliance table 872 * 873 ******************************************************************************/ 874 875typedef struct acpi_table_tcpa 876{ 877 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 878 UINT16 Reserved; 879 UINT32 MaxLogLength; /* Maximum length for the event log area */ 880 UINT64 LogAddress; /* Address of the event log area */ 881 882} ACPI_TABLE_TCPA; 883 884 885/******************************************************************************* 886 * 887 * WDRT - Watchdog Resource Table 888 * 889 ******************************************************************************/ 890 891typedef struct acpi_table_wdrt 892{ 893 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 894 UINT32 HeaderLength; /* Watchdog Header Length */ 895 UINT8 PciSegment; /* PCI Segment number */ 896 UINT8 PciBus; /* PCI Bus number */ 897 UINT8 PciDevice; /* PCI Device number */ 898 UINT8 PciFunction; /* PCI Function number */ 899 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 900 UINT32 MaxCount; /* Maximum counter value supported */ 901 UINT32 MinCount; /* Minimum counter value */ 902 UINT8 Flags; 903 UINT8 Reserved[3]; 904 UINT32 Entries; /* Number of watchdog entries that follow */ 905 906} ACPI_TABLE_WDRT; 907 908/* Flags */ 909 910#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ 911 912 913/* Reset to default packing */ 914 915#pragma pack() 916 917#endif /* __ACTBL1_H__ */ |
|