4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ACPI Table Protocol Driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Statements that include other files
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI Version bitmap definition:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_ACPI_TABLE_VERSION_1_0B - ACPI Version 1.0b
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_ACPI_TABLE_VERSION_2_0 - ACPI Version 2.0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_ACPI_TABLE_VERSION_3_0 - ACPI Version 3.0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_ACPI_TABLE_VERSION_NONE - No ACPI Versions. This might be used
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// to create memory-based operation regions or other information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// that is not part of the ACPI "tree" but must still be found
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// in ACPI memory space and/or managed by the core ACPI driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Note that EFI provides discrete GUIDs for each version of ACPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// that is supported. It is expected that each EFI GUIDed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// version of ACPI will also have a corresponding bitmap
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// definition. This allows maintenance of separate ACPI trees
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// for each distinctly different version of ACPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Private Driver Data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI Table Linked List Signature.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_LIST_SIGNATURE SIGNATURE_32 ('E', 'A', 'T', 'L')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI Table Linked List Entry definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Signature must be set to EFI_ACPI_TABLE_LIST_SIGNATURE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Link is the linked list data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Version is the versions of the ACPI tables that this table belongs in.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Table is a pointer to the table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// PageAddress is the address of the pages allocated for the table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// NumberOfPages is the number of pages allocated at PageAddress.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Handle is used to identify a particular table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Containment record for ACPI Table linked list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_LIST_FROM_LINK(_link) CR (_link, EFI_ACPI_TABLE_LIST, Link, EFI_ACPI_TABLE_LIST_SIGNATURE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The maximum number of tables this driver supports
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI table information used to initialize tables.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_OEM_TABLE_ID SIGNATURE_64('E', 'D', 'K', '2', ' ', ' ', ' ', ' ')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Protocol private structure definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI support protocol instance signature definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_SIGNATURE SIGNATURE_32 ('S', 'T', 'A', 'E')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI support protocol instance data structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp1; // Pointer to RSD_PTR structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp3; // Pointer to RSD_PTR structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_DESCRIPTION_HEADER *Rsdt1; // Pointer to RSDT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_DESCRIPTION_HEADER *Rsdt3; // Pointer to RSDT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_DESCRIPTION_HEADER *Xsdt; // Pointer to XSDT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt1; // Pointer to FADT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt3; // Pointer to FADT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *Facs1; // Pointer to FACS table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *Facs3; // Pointer to FACS table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_DESCRIPTION_HEADER *Dsdt1; // Pointer to DSDT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_DESCRIPTION_HEADER *Dsdt3; // Pointer to DSDT table header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NumberOfTableEntries1; // Number of ACPI 1.0 tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NumberOfTableEntries3; // Number of ACPI 3.0 tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN TablesInstalled1; // ACPI 1.0 tables published
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN TablesInstalled3; // ACPI 3.0 tables published
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI table protocol instance containing record macro
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Protocol Constructor functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Constructor for the ACPI support protocol. Initializes instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AcpiTableInstance Instance to construct
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_SUCCESS Instance initialized.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_OUT_OF_RESOURCES Unable to allocate required resources.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Entry point of the ACPI table driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Creates and initializes an instance of the ACPI Table
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Protocol and installs it on a new handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ImageHandle A handle for the image that is initializing this driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SystemTable A pointer to the EFI system table
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_SUCCESS Driver initialized successfully
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_LOAD_ERROR Failed to Initialize or has been loaded
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_OUT_OF_RESOURCES Could not allocate needed resources
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function finds the table specified by the handle and returns a pointer to it.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If the handle is not found, EFI_NOT_FOUND is returned and the contents of Table are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handle Table to find.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] TableList Table list to search
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Table Pointer to table found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND No table found matching the handle specified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function calculates and updates an UINT8 checksum.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Buffer Pointer to buffer to checksum
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Size Number of bytes to checksum
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ChecksumOffset Offset to place the checksum result in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function invokes ACPI notification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AcpiTableInstance Instance to AcpiTable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Version Version(s) to set.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handle Handle of the table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function initializes AcpiSdt protocol in ACPI table instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AcpiTableInstance Instance to construct
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// export PrivateData symbol, because we need that in AcpiSdtProtol implementation