/** @file
ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _ACPI_4_0_H_
#define _ACPI_4_0_H_
#include <IndustryStandard/Acpi30.h>
//
// Ensure proper structure formats
//
#pragma pack(1)
///
/// ACPI 4.0 Generic Address Space definition
///
typedef struct {
//
// Generic Address Space Address IDs
//
#define EFI_ACPI_4_0_SYSTEM_MEMORY 0
//
// Generic Address Space Access Sizes
//
#define EFI_ACPI_4_0_UNDEFINED 0
//
// ACPI 4.0 table structures
//
///
/// Root System Description Pointer Structure
///
typedef struct {
///
/// RSD_PTR Revision (as defined in ACPI 4.0b spec.)
///
#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 4.0a) says current value is 2
///
/// Common table header, this prefaces all ACPI tables, including FACS, but
/// excluding the RSD PTR structure
///
typedef struct {
//
// Root System Description Table
// No definition needed as it is a common description table header, the same with
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
//
///
/// RSDT Revision (as defined in ACPI 4.0 spec.)
///
//
// Extended System Description Table
// No definition needed as it is a common description table header, the same with
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
//
///
/// XSDT Revision (as defined in ACPI 4.0 spec.)
///
///
/// Fixed ACPI Description Table Structure (FADT)
///
typedef struct {
///
/// FADT Version (as defined in ACPI 4.0 spec.)
///
//
// Fixed ACPI Description Table Preferred Power Management Profile
//
#define EFI_ACPI_4_0_PM_PROFILE_UNSPECIFIED 0
//
// Fixed ACPI Description Table Boot Architecture Flags
// All other bits are reserved and must be set to 0.
//
//
// Fixed ACPI Description Table Fixed Feature Flags
// All other bits are reserved and must be set to 0.
//
///
/// Firmware ACPI Control Structure
///
typedef struct {
///
/// FACS Version (as defined in ACPI 4.0 spec.)
///
///
/// Firmware Control Structure Feature Flags
/// All other bits are reserved and must be set to 0.
///
///
/// OSPM Enabled Firmware Control Structure Flags
/// All other bits are reserved and must be set to 0.
///
//
// Differentiated System Description Table,
// Secondary System Description Table
// and Persistent System Description Table,
// no definition needed as they are common description table header, the same with
// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
//
///
/// Multiple APIC Description Table header definition. The rest of the table
/// must be defined in a platform specific manner.
///
typedef struct {
///
/// MADT Revision (as defined in ACPI 4.0 spec.)
///
///
/// Multiple APIC Flags
/// All other bits are reserved and must be set to 0.
///
//
// Multiple APIC Description Table APIC structure types
// All other values between 0x0B an 0xFF are reserved and
// will be ignored by OSPM.
//
//
// APIC Structure Definitions
//
///
/// Processor Local APIC Structure Definition
///
typedef struct {
///
/// Local APIC Flags. All other bits are reserved and must be 0.
///
///
/// IO APIC Structure
///
typedef struct {
///
/// Interrupt Source Override Structure
///
typedef struct {
///
/// Platform Interrupt Sources Structure Definition
///
typedef struct {
//
// MPS INTI flags.
// All other bits are reserved and must be set to 0.
//
///
/// Non-Maskable Interrupt Source Structure
///
typedef struct {
///
/// Local APIC NMI Structure
///
typedef struct {
///
/// Local APIC Address Override Structure
///
typedef struct {
///
/// IO SAPIC Structure
///
typedef struct {
///
/// Local SAPIC Structure
/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
///
typedef struct {
///
/// Platform Interrupt Sources Structure
///
typedef struct {
///
/// Platform Interrupt Source Flags.
/// All other bits are reserved and must be set to 0.
///
///
/// Processor Local x2APIC Structure Definition
///
typedef struct {
///
/// Local x2APIC NMI Structure
///
typedef struct {
///
/// Smart Battery Description Table (SBST)
///
typedef struct {
///
/// SBST Version (as defined in ACPI 4.0 spec.)
///
///
/// Embedded Controller Boot Resources Table (ECDT)
/// The table is followed by a null terminated ASCII string that contains
/// a fully qualified reference to the name space object.
///
typedef struct {
///
/// ECDT Version (as defined in ACPI 4.0 spec.)
///
///
/// System Resource Affinity Table (SRAT. The rest of the table
/// must be defined in a platform specific manner.
///
typedef struct {
///
/// SRAT Version (as defined in ACPI 4.0 spec.)
///
//
// SRAT structure types.
// All other values between 0x03 an 0xFF are reserved and
// will be ignored by OSPM.
//
///
///
typedef struct {
///
///
///
/// Memory Affinity Structure Definition
///
typedef struct {
//
// Memory Flags. All other bits are reserved and must be 0.
//
///
/// Processor Local x2APIC Affinity Structure Definition
///
typedef struct {
///
/// System Locality Distance Information Table (SLIT).
/// The rest of the table is a matrix.
///
typedef struct {
///
/// SLIT Version (as defined in ACPI 4.0 spec.)
///
///
/// Corrected Platform Error Polling Table (CPEP)
///
typedef struct {
///
/// CPEP Version (as defined in ACPI 4.0 spec.)
///
//
// CPEP processor structure types.
//
///
/// Corrected Platform Error Polling Processor Structure Definition
///
typedef struct {
///
/// Maximum System Characteristics Table (MSCT)
///
typedef struct {
///
/// MSCT Version (as defined in ACPI 4.0 spec.)
///
///
/// Maximum Proximity Domain Information Structure Definition
///
typedef struct {
///
/// Boot Error Record Table (BERT)
///
typedef struct {
///
/// BERT Version (as defined in ACPI 4.0 spec.)
///
///
/// Boot Error Region Block Status Definition
///
typedef struct {
///
/// Boot Error Region Definition
///
typedef struct {
//
// Boot Error Severity types
//
///
/// Generic Error Data Entry Definition
///
typedef struct {
///
/// Generic Error Data Entry Version (as defined in ACPI 4.0 spec.)
///
///
/// HEST - Hardware Error Source Table
///
typedef struct {
///
/// HEST Version (as defined in ACPI 4.0 spec.)
///
//
// Error Source structure types.
//
//
// Error Source structure flags.
//
///
/// IA-32 Architecture Machine Check Exception Structure Definition
///
typedef struct {
///
/// IA-32 Architecture Machine Check Bank Structure Definition
///
typedef struct {
///
/// IA-32 Architecture Machine Check Bank Structure MCA data format
///
//
// Hardware Error Notification types. All other values are reserved
//
///
/// Hardware Error Notification Configuration Write Enable Structure Definition
///
typedef struct {
///
/// Hardware Error Notification Structure Definition
///
typedef struct {
EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
///
/// IA-32 Architecture Corrected Machine Check Structure Definition
///
typedef struct {
///
/// IA-32 Architecture NMI Error Structure Definition
///
typedef struct {
///
/// PCI Express Root Port AER Structure Definition
///
typedef struct {
///
/// PCI Express Device AER Structure Definition
///
typedef struct {
///
/// PCI Express Bridge AER Structure Definition
///
typedef struct {
///
/// Generic Hardware Error Source Structure Definition
///
typedef struct {
///
/// Generic Error Status Definition
///
typedef struct {
///
/// ERST - Error Record Serialization Table
///
typedef struct {
///
/// ERST Version (as defined in ACPI 4.0 spec.)
///
///
/// ERST Serialization Actions
///
///
/// ERST Action Command Status
///
///
/// ERST Serialization Instructions
///
///
/// ERST Instruction Flags
///
///
/// ERST Serialization Instruction Entry
///
typedef struct {
///
/// EINJ - Error Injection Table
///
typedef struct {
///
/// EINJ Version (as defined in ACPI 4.0 spec.)
///
///
/// EINJ Error Injection Actions
///
///
/// EINJ Action Command Status
///
///
/// EINJ Error Type Definition
///
///
/// EINJ Injection Instructions
///
///
/// EINJ Instruction Flags
///
///
/// EINJ Injection Instruction Entry
///
typedef struct {
///
/// EINJ Trigger Action Table
///
typedef struct {
//
// Known table signatures
//
///
/// "RSD PTR " Root System Description Pointer
///
#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
///
/// "APIC" Multiple APIC Description Table
///
///
/// "BERT" Boot Error Record Table
///
///
/// "CPEP" Corrected Platform Error Polling Table
///
#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
///
/// "DSDT" Differentiated System Description Table
///
#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
///
/// "ECDT" Embedded Controller Boot Resources Table
///
#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
///
/// "EINJ" Error Injection Table
///
///
/// "ERST" Error Record Serialization Table
///
///
/// "FACP" Fixed ACPI Description Table
///
///
/// "FACS" Firmware ACPI Control Structure
///
///
/// "HEST" Hardware Error Source Table
///
///
/// "MSCT" Maximum System Characteristics Table
///
#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
///
/// "PSDT" Persistent System Description Table
///
///
/// "RSDT" Root System Description Table
///
///
/// "SBST" Smart Battery Specification Table
///
///
/// "SLIT" System Locality Information Table
///
///
/// "SRAT" System Resource Affinity Table
///
///
/// "SSDT" Secondary System Description Table
///
///
/// "XSDT" Extended System Description Table
///
///
/// "BOOT" MS Simple Boot Spec
///
///
/// "DBGP" MS Debug Port Spec
///
///
/// "DMAR" DMA Remapping Table
///
///
/// "ETDT" Event Timer Description Table
///
///
/// "HPET" IA-PC High Precision Event Timer Table
///
///
/// "iBFT" iSCSI Boot Firmware Table
///
///
/// "IVRS" I/O Virtualization Reporting Structure
///
#define EFI_ACPI_4_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
///
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
///
#define EFI_ACPI_4_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
///
/// "MCHI" Management Controller Host Interface Table
///
#define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
///
/// "SPCR" Serial Port Concole Redirection Table
///
#define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
///
/// "SPMI" Server Platform Management Interface Table
///
#define EFI_ACPI_4_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
///
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
///
#define EFI_ACPI_4_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
///
/// "UEFI" UEFI ACPI Data Table
///
///
/// "WAET" Windows ACPI Enlightenment Table
///
///
/// "WDAT" Watchdog Action Table
///
///
/// "WDRT" Watchdog Resource Table
///
#pragma pack()
#endif