/** @file
ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
Copyright (c) 2006 - 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 that 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_1_0_H_
#define _ACPI_1_0_H_
#include <IndustryStandard/AcpiAml.h>
///
/// Common table header, this prefaces all ACPI tables, including FACS, but
/// excluding the RSD PTR structure.
///
typedef struct {
#pragma pack(1)
///
/// The common ACPI description table header. This structure prefaces most ACPI tables.
///
typedef struct {
#pragma pack()
//
// Define for Desriptor
//
//
// Small Item Descriptor Name
//
//
// Large Item Descriptor Name
//
//
// Small Item Descriptor Value
//
//
// Large Item Descriptor Value
//
//
// Resource Type
//
///
/// Power Management Timer frequency is fixed at 3.579545MHz.
///
//
// Ensure proper structure formats
//
#pragma pack(1)
///
/// The commond definition of QWORD, DWORD, and WORD
/// Address Space Descriptors.
///
typedef PACKED struct {
typedef PACKED union {
PACKED struct {
} Bits;
typedef PACKED struct {
PACKED union {
PACKED struct {
}Bits;
} Header;
///
/// IRQ Descriptor.
///
typedef PACKED struct {
///
/// IRQ Descriptor.
///
typedef PACKED struct {
///
/// DMA Descriptor.
///
typedef PACKED struct {
///
/// I/O Port Descriptor
///
typedef PACKED struct {
///
/// Fixed Location I/O Port Descriptor.
///
typedef PACKED struct {
///
/// 24-Bit Memory Range Descriptor
///
typedef PACKED struct {
///
/// 32-Bit Memory Range Descriptor
///
typedef PACKED struct {
///
/// Fixed 32-Bit Fixed Memory Range Descriptor
///
typedef PACKED struct {
///
/// QWORD Address Space Descriptor
///
typedef PACKED struct {
///
/// DWORD Address Space Descriptor
///
typedef PACKED struct {
///
/// WORD Address Space Descriptor
///
typedef PACKED struct {
///
/// Extended Interrupt Descriptor
///
typedef PACKED struct {
#pragma pack()
///
/// The End tag identifies an end of resource data.
///
typedef struct {
//
// General use definitions
//
//
// Resource Type Specific Flags
// Ref ACPI specification 6.4.3.5.5
//
// Bit [0] : Write Status, _RW
//
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)
//
// Bit [2:1] : Memory Attributes, _MEM
//
//
// Bit [4:3] : Memory Attributes, _MTP
//
//
// Bit [5] : Memory to I/O Translation, _TTP
//
//
// IRQ Information
// Ref ACPI specification 6.4.2.1
//
//
// DMA Information
// Ref ACPI specification 6.4.2.2
//
//
// IO Information
// Ref ACPI specification 6.4.2.5
//
//
// Memory Information
// Ref ACPI specification 6.4.3.4
//
//
// Ensure proper structure formats
//
#pragma pack(1)
//
// ACPI 1.0b table structures
//
///
/// Root System Description Pointer 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 1.0b specification).
///
///
/// Fixed ACPI Description Table Structure (FADT).
///
typedef struct {
///
/// FADT Version (as defined in ACPI 1.0b specification).
///
#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 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 {
///
/// Firmware Control Structure Feature Flags.
/// All other bits are reserved and must be set to 0.
///
///
/// 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 1.0b specification).
///
///
/// 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 0x05 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 {
///
/// Non-Maskable Interrupt Source Structure.
///
typedef struct {
///
/// Local APIC NMI Structure.
///
typedef struct {
///
/// Smart Battery Description Table (SBST)
///
typedef struct {
//
// Known table signatures
//
///
/// "RSD PTR " Root System Description Pointer.
///
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
///
/// "APIC" Multiple APIC Description Table.
///
///
/// "DSDT" Differentiated System Description Table.
///
#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
///
/// "FACS" Firmware ACPI Control Structure.
///
///
/// "FACP" Fixed ACPI Description Table.
///
///
/// "PSDT" Persistent System Description Table.
///
///
/// "RSDT" Root System Description Table.
///
///
/// "SBST" Smart Battery Specification Table.
///
///
/// "SSDT" Secondary System Description Table.
///
#pragma pack()
#endif