4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ACPI Table Protocol Driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
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 http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
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
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _ACPI_TABLE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _ACPI_TABLE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <PiDxe.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/AcpiTable.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Guid/Acpi.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/AcpiSystemDescriptionTable.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/DxeSmmReadyToLock.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/BaseLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/DebugLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/BaseMemoryLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiDriverEntryPoint.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/MemoryAllocationLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiBootServicesTableLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/PcdLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Statements that include other files
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <IndustryStandard/Acpi.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "AcpiSdt.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// From Protocol/AcpiSupport.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI Version bitmap definition:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
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//
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//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_VERSION UINT32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_VERSION_NONE (1 << 0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_VERSION_1_0B (1 << 1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_VERSION_2_0 (1 << 2)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_VERSION_3_0 (1 << 3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Private Driver Data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI Table Linked List Signature.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_LIST_SIGNATURE SIGNATURE_32 ('E', 'A', 'T', 'L')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI Table Linked List Entry definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
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.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_TABLE_VERSION Version;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_COMMON_HEADER *Table;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PHYSICAL_ADDRESS PageAddress;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NumberOfPages;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Handle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_TABLE_LIST;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Containment record for ACPI Table linked list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_LIST_FROM_LINK(_link) CR (_link, EFI_ACPI_TABLE_LIST, Link, EFI_ACPI_TABLE_LIST_SIGNATURE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The maximum number of tables this driver supports
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_MAX_NUM_TABLES 20
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI table information used to initialize tables.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_OEM_ID "INTEL "
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_OEM_TABLE_ID SIGNATURE_64('E', 'D', 'K', '2', ' ', ' ', ' ', ' ')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_OEM_REVISION 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_CREATOR_ID 0x20202020
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_CREATOR_REVISION 0x01000013
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Protocol private structure definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI support protocol instance signature definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_SIGNATURE SIGNATURE_32 ('S', 'T', 'A', 'E')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI support protocol instance data structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Signature;
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 LIST_ENTRY TableList;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NumberOfTableEntries1; // Number of ACPI 1.0 tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NumberOfTableEntries3; // Number of ACPI 3.0 tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN CurrentHandle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN TablesInstalled1; // ACPI 1.0 tables published
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN TablesInstalled3; // ACPI 3.0 tables published
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_TABLE_PROTOCOL AcpiTableProtocol;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_SDT_PROTOCOL AcpiSdtProtocol;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY NotifyList;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_TABLE_INSTANCE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ACPI table protocol instance containing record macro
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_TABLE_INSTANCE_FROM_THIS(a) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR (a, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_TABLE_INSTANCE, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AcpiTableProtocol, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_TABLE_SIGNATURE \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Protocol Constructor functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Constructor for the ACPI support protocol. Initializes instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AcpiTableInstance Instance to construct
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_SUCCESS Instance initialized.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_OUT_OF_RESOURCES Unable to allocate required resources.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncAcpiTableAcpiTableConstructor (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_TABLE_INSTANCE *AcpiTableInstance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
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
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ImageHandle A handle for the image that is initializing this driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SystemTable A pointer to the EFI system table
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
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
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncInitializeAcpiTableDxe (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ImageHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SYSTEM_TABLE *SystemTable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
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 undefined.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handle Table to find.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] TableList Table list to search
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Table Pointer to table found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND No table found matching the handle specified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFindTableByHandle (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Handle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN LIST_ENTRY *TableList,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_ACPI_TABLE_LIST **Table
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function calculates and updates an UINT8 checksum.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
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
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncAcpiPlatformChecksum (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Buffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Size,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN ChecksumOffset
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function invokes ACPI notification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AcpiTableInstance Instance to AcpiTable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Version Version(s) to set.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handle Handle of the table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSdtNotifyAcpiList (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_ACPI_TABLE_INSTANCE *AcpiTableInstance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_ACPI_TABLE_VERSION Version,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Handle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function initializes AcpiSdt protocol in ACPI table instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AcpiTableInstance Instance to construct
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSdtAcpiTableAcpiSdtConstructor (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_ACPI_TABLE_INSTANCE *AcpiTableInstance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// export PrivateData symbol, because we need that in AcpiSdtProtol implementation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_HANDLE mHandle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_ACPI_TABLE_INSTANCE *mPrivateData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif