13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++
23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3f57387d54bd8f2c0261834b2ad16155f1db63291hhtianCopyright (c) 1999 - 2007, Intel Corporation. All rights reserved.<BR>
4f57387d54bd8f2c0261834b2ad16155f1db63291hhtianThis program and the accompanying materials
53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangare licensed and made available under the terms and conditions of the BSD License
63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangwhich accompanies this distribution.  The full text of the license may be found at
73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanghttp://opensource.org/licenses/bsd-license.php
83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name:
143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  AcpiSupport.h
163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract:
183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  Definition of the ACPI Support protocol.  This is defined in the
203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  Tiano ACPI External Product Specification, revision 0.5.1.
213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/
233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef _ACPI_SUPPORT_PROTOCOL_H_
253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define _ACPI_SUPPORT_PROTOCOL_H_
263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Includes
293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "Tiano.h"
313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Forward reference for pure ANSI compatability
343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_FORWARD_DECLARATION (EFI_ACPI_SUPPORT_PROTOCOL);
363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// ACPI Support Protocol GUID
393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ACPI_SUPPORT_GUID \
413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
427ccf38a33e1e227131c170a621d183b3bacef148qhuang    0xdbff9d55, 0x89b7, 0x46da, {0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d} \
433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Extern the GUID for protocol users.
473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiAcpiSupportGuid;
493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Protocol Data Definitions
523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// ACPI Version bitmap definition:
553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// EFI_ACPI_TABLE_VERSION_1_0B - ACPI Version 1.0b
573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// EFI_ACPI_TABLE_VERSION_2_0 - ACPI Version 2.0
583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// EFI_ACPI_TABLE_VERSION_3_0 - ACPI Version 3.0
593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// EFI_ACPI_TABLE_VERSION_NONE - No ACPI Versions.  This might be used
603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//  to create memory-based operation regions or other information
613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//  that is not part of the ACPI "tree" but must still be found
623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//  in ACPI memory space and/or managed by the core ACPI driver.
633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Note that EFI provides discrete GUIDs for each version of ACPI
653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// that is supported.  It is expected that each EFI GUIDed
663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// version of ACPI will also have a corresponding bitmap
673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// definition.  This allows maintenance of separate ACPI trees
683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// for each distinctly different version of ACPI.
693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ACPI_TABLE_VERSION      UINT32
713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ACPI_TABLE_VERSION_NONE (1 << 0)
733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ACPI_TABLE_VERSION_1_0B (1 << 1)
743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ACPI_TABLE_VERSION_2_0  (1 << 2)
753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ACPI_TABLE_VERSION_3_0  (1 << 3)
763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Protocol Member Functions
793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Retrieve a copy of an ACPI table and the handle of the table.
823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_ACPI_GET_ACPI_TABLE) (
863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_ACPI_SUPPORT_PROTOCOL            * This,
873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN INTN                                 Index,
883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  OUT VOID                                **Table,
893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  OUT EFI_ACPI_TABLE_VERSION              * Version,
903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  OUT UINTN                               *Handle
913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Add, update, or remove a table.
953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_ACPI_SET_ACPI_TABLE) (
993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_ACPI_SUPPORT_PROTOCOL            * This,
1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN VOID                                 *Table OPTIONAL,
1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN BOOLEAN                              Checksum,
1023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_ACPI_TABLE_VERSION               Version,
1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN OUT UINTN                            *Handle
1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Publish tables to the outside world
1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_ACPI_PUBLISH_TABLES) (
1123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_ACPI_SUPPORT_PROTOCOL            * This,
1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_ACPI_TABLE_VERSION               Version
1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// ACPI Support Protocol
1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1195d46191d8fa6bb1ac94f697136b3444c61e8777cjljustenstruct _EFI_ACPI_SUPPORT_PROTOCOL {
1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_ACPI_GET_ACPI_TABLE GetAcpiTable;
1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_ACPI_SET_ACPI_TABLE SetAcpiTable;
1223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_ACPI_PUBLISH_TABLES PublishTables;
1235d46191d8fa6bb1ac94f697136b3444c61e8777cjljusten};
1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif
126