3 Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 ACPI 2.0 definitions from the ACPI Specification, revision 2.0
26 // Statements that include other files
28 #include "AcpiCommon.h"
31 // Ensure proper structure formats
35 // ACPI Specification Revision
37 #define EFI_ACPI_2_0_REVISION 0x02
40 // ACPI 2.0 Generic Address Space definition
44 UINT8 RegisterBitWidth
;
45 UINT8 RegisterBitOffset
;
48 } EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE
;
51 // Generic Address Space Address IDs
53 #define EFI_ACPI_2_0_SYSTEM_MEMORY 0
54 #define EFI_ACPI_2_0_SYSTEM_IO 1
55 #define EFI_ACPI_2_0_PCI_CONFIGURATION_SPACE 2
56 #define EFI_ACPI_2_0_EMBEDDED_CONTROLLER 3
57 #define EFI_ACPI_2_0_SMBUS 4
58 #define EFI_ACPI_2_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
61 // ACPI 2.0 table structures
64 // Root System Description Pointer Structure
74 UINT8 ExtendedChecksum
;
76 } EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER
;
79 // RSD_PTR Revision (as defined in ACPI 2.0 spec.)
81 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02
84 // Common table header, this prefaces all ACPI tables, including FACS, but
85 // excluding the RSD PTR structure
90 } EFI_ACPI_2_0_COMMON_HEADER
;
93 // Root System Description Table
94 // No definition needed as it is a common description table header followed by a
95 // variable number of UINT32 table pointers.
98 // RSDT Revision (as defined in ACPI 2.0 spec.)
100 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
103 // Extended System Description Table
104 // No definition needed as it is a common description table header followed by a
105 // variable number of UINT64 table pointers.
108 // XSDT Revision (as defined in ACPI 2.0 spec.)
110 #define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
113 // Fixed ACPI Description Table Structure (FADT)
116 EFI_ACPI_DESCRIPTION_HEADER Header
;
120 UINT8 PreferredPmProfile
;
155 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE ResetReg
;
158 UINT64 XFirmwareCtrl
;
160 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk
;
161 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk
;
162 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk
;
163 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk
;
164 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk
;
165 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk
;
166 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk
;
167 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk
;
168 } EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE
;
171 // FADT Version (as defined in ACPI 2.0 spec.)
173 #define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x03
176 // Fixed ACPI Description Table Boot Architecture Flags
177 // All other bits are reserved and must be set to 0.
179 #define EFI_ACPI_2_0_LEGACY_DEVICES (1 << 0)
180 #define EFI_ACPI_2_0_8042 (1 << 1)
183 // Fixed ACPI Description Table Fixed Feature Flags
184 // All other bits are reserved and must be set to 0.
186 #define EFI_ACPI_2_0_WBINVD (1 << 0)
187 #define EFI_ACPI_2_0_WBINVD_FLUSH (1 << 1)
188 #define EFI_ACPI_2_0_PROC_C1 (1 << 2)
189 #define EFI_ACPI_2_0_P_LVL2_UP (1 << 3)
190 #define EFI_ACPI_2_0_PWR_BUTTON (1 << 4)
191 #define EFI_ACPI_2_0_SLP_BUTTON (1 << 5)
192 #define EFI_ACPI_2_0_FIX_RTC (1 << 6)
193 #define EFI_ACPI_2_0_RTC_S4 (1 << 7)
194 #define EFI_ACPI_2_0_TMR_VAL_EXT (1 << 8)
195 #define EFI_ACPI_2_0_DCK_CAP (1 << 9)
196 #define EFI_ACPI_2_0_RESET_REG_SUP (1 << 10)
197 #define EFI_ACPI_2_0_SEALED_CASE (1 << 11)
198 #define EFI_ACPI_2_0_HEADLESS (1 << 12)
199 #define EFI_ACPI_2_0_CPU_SW_SLP (1 << 13)
202 // Firmware ACPI Control Structure
207 UINT32 HardwareSignature
;
208 UINT32 FirmwareWakingVector
;
211 UINT64 XFirmwareWakingVector
;
214 } EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE
;
217 // FACS Version (as defined in ACPI 2.0 spec.)
219 #define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01
222 // Firmware Control Structure Feature Flags
223 // All other bits are reserved and must be set to 0.
225 #define EFI_ACPI_2_0_S4BIOS_F (1 << 0)
228 // Multiple APIC Description Table header definition. The rest of the table
229 // must be defined in a platform specific manner.
232 EFI_ACPI_DESCRIPTION_HEADER Header
;
233 UINT32 LocalApicAddress
;
235 } EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER
;
238 // MADT Revision (as defined in ACPI 2.0 spec.)
240 #define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
243 // Multiple APIC Flags
244 // All other bits are reserved and must be set to 0.
246 #define EFI_ACPI_2_0_PCAT_COMPAT (1 << 0)
249 // Multiple APIC Description Table APIC structure types
250 // All other values between 0x09 an 0xFF are reserved and
251 // will be ignored by OSPM.
253 #define EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC 0x00
254 #define EFI_ACPI_2_0_IO_APIC 0x01
255 #define EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE 0x02
256 #define EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
257 #define EFI_ACPI_2_0_LOCAL_APIC_NMI 0x04
258 #define EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
259 #define EFI_ACPI_2_0_IO_SAPIC 0x06
260 #define EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC 0x07
261 #define EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES 0x08
264 // APIC Structure Definitions
267 // Processor Local APIC Structure Definition
272 UINT8 AcpiProcessorId
;
275 } EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE
;
278 // Local APIC Flags. All other bits are reserved and must be 0.
280 #define EFI_ACPI_2_0_LOCAL_APIC_ENABLED (1 << 0)
290 UINT32 IoApicAddress
;
291 UINT32 GlobalSystemInterruptBase
;
292 } EFI_ACPI_2_0_IO_APIC_STRUCTURE
;
295 // Interrupt Source Override Structure
302 UINT32 GlobalSystemInterrupt
;
304 } EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE
;
307 // Non-Maskable Interrupt Source Structure
313 UINT32 GlobalSystemInterrupt
;
314 } EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE
;
317 // Local APIC NMI Structure
322 UINT8 AcpiProcessorId
;
325 } EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE
;
328 // Local APIC Address Override Structure
334 UINT64 LocalApicAddress
;
335 } EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE
;
338 // IO SAPIC Structure
345 UINT32 GlobalSystemInterruptBase
;
346 UINT64 IoSapicAddress
;
347 } EFI_ACPI_2_0_IO_SAPIC_STRUCTURE
;
350 // Local SAPIC Structure
355 UINT8 AcpiProcessorId
;
360 } EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE
;
363 // Platform Interrupt Sources Structure
373 UINT32 GlobalSystemInterrupt
;
375 } EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE
;
378 // Smart Battery Description Table (SBST)
381 EFI_ACPI_DESCRIPTION_HEADER Header
;
382 UINT32 WarningEnergyLevel
;
383 UINT32 LowEnergyLevel
;
384 UINT32 CriticalEnergyLevel
;
385 } EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE
;
388 // SBST Version (as defined in ACPI 2.0 spec.)
390 #define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
393 // Embedded Controller Boot Resources Table (ECDT)
394 // The table is followed by a null terminated ASCII string that contains
395 // a fully qualified reference to the name space object.
398 EFI_ACPI_DESCRIPTION_HEADER Header
;
399 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcControl
;
400 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcData
;
403 } EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE
;
406 // ECDT Version (as defined in ACPI 2.0 spec.)
408 #define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
411 // Known table signatures
414 // "RSD PTR " Root System Description Pointer
416 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE 0x2052545020445352
419 // "SPIC" Multiple SAPIC Description Table
421 // BUGBUG: Don't know where this came from except SR870BN4 uses it.
422 // #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495053
424 #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495041
427 // "BOOT" MS Simple Boot Spec
429 #define EFI_ACPI_2_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE 0x544F4F42
432 // "DBGP" MS Bebug Port Spec
434 #define EFI_ACPI_2_0_DEBUG_PORT_TABLE_SIGNATURE 0x50474244
437 // "DSDT" Differentiated System Description Table
439 #define EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445344
442 // "ECDT" Embedded Controller Boot Resources Table
444 #define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE 0x54444345
447 // "ETDT" Event Timer Description Table
449 #define EFI_ACPI_2_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE 0x54445445
452 // "FACS" Firmware ACPI Control Structure
454 #define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE 0x53434146
457 // "FACP" Fixed ACPI Description Table
459 #define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE 0x50434146
462 // "APIC" Multiple APIC Description Table
464 #define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE 0x43495041
467 // "PSDT" Persistent System Description Table
469 #define EFI_ACPI_2_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445350
472 // "RSDT" Root System Description Table
474 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445352
477 // "SBST" Smart Battery Specification Table
479 #define EFI_ACPI_2_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE 0x54534253
482 // "SLIT" System Locality Information Table
484 #define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE 0x54494C53
487 // "SPCR" Serial Port Concole Redirection Table
489 #define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE 0x52435053
492 // "SRAT" Static Resource Affinity Table
494 #define EFI_ACPI_2_0_STATIC_RESOURCE_AFFINITY_TABLE_SIGNATURE 0x54415253
497 // "SSDT" Secondary System Description Table
499 #define EFI_ACPI_2_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445353
502 // "SPMI" Server Platform Management Interface Table
504 #define EFI_ACPI_2_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_SIGNATURE 0x494D5053
507 // "XSDT" Extended System Description Table
509 #define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445358