Home | History | Annotate | Download | only in AcpiTable
      1 /*++
      2 
      3 Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   AcpiTable.h
     15 
     16 Abstract:
     17 
     18   ACPI Table Protocol from the UEFI 2.1 specification.
     19 
     20   This protocol may be used to install or remove an ACPI table from a platform.
     21 
     22 --*/
     23 
     24 #ifndef __ACPI_TABLE_H__
     25 #define __ACPI_TABLE_H__
     26 
     27 #include "Acpi.h"
     28 
     29 //
     30 // Global ID for the Acpi Table Protocol
     31 //
     32 #define EFI_ACPI_TABLE_PROTOCOL_GUID \
     33   { \
     34     0xffe06bdd, 0x6107, 0x46a6, {0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
     35   }
     36 
     37 EFI_FORWARD_DECLARATION (EFI_ACPI_TABLE_PROTOCOL);
     38 
     39 #define UEFI_ACPI_TABLE_SIGNATURE    EFI_SIGNATURE_32 ('U', 'E', 'F', 'I')
     40 
     41 #pragma pack(1)
     42 
     43 typedef struct {
     44   EFI_ACPI_DESCRIPTION_HEADER  Header;
     45   EFI_GUID                     Identifier;
     46   UINT16                       DataOffset;
     47 } EFI_ACPI_TABLE;
     48 
     49 #pragma pack()
     50 
     51 typedef
     52 EFI_STATUS
     53 (EFIAPI *EFI_ACPI_TABLE_INSTALL_ACPI_TABLE) (
     54   IN EFI_ACPI_TABLE_PROTOCOL                    *This,
     55   IN VOID                                       *AcpiTableBuffer,
     56   IN UINTN                                      AcpiTableBufferSize,
     57   OUT UINTN                                     *TableKey
     58   )
     59 /*++
     60 
     61   Routine Description:
     62     Installs an ACPI table into the RSDT/XSDT.
     63 
     64   Arguments:
     65     This                  - Protocol instance pointer.
     66     AcpiTableBuffer       - A pointer to a buffer containing the ACPI table to be installed.
     67     AcpiTableBufferSize   - Specifies the size, in bytes, of the AcpiTableBuffer buffer.
     68     TableKey              - Reurns a key to refer to the ACPI table.
     69 
     70   Returns:
     71     EFI_SUCCESS           - The table was successfully inserted.
     72     EFI_INVALID_PARAMETER - Either AcpiTableBuffer is NULL, TableKey is NULL, or AcpiTableBufferSize
     73                             and the size field embedded in the ACPI table pointed to by AcpiTableBuffer
     74                             are not in sync.
     75     EFI_OUT_OF_RESOURCES  - Insufficient resources exist to complete the request.
     76 
     77 --*/
     78 ;
     79 
     80 typedef
     81 EFI_STATUS
     82 (EFIAPI *EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE) (
     83   IN EFI_ACPI_TABLE_PROTOCOL                    *This,
     84   IN UINTN                                      TableKey
     85   )
     86 /*++
     87 
     88   Routine Description:
     89     Removes an ACPI table from the RSDT/XSDT.
     90 
     91   Arguments:
     92     This          - Protocol instance pointer.
     93     TableKey      - Specifies the table to uninstall.  The key was returned from InstallAcpiTable().
     94 
     95   Returns:
     96     EFI_SUCCESS   - The table was successfully uninstalled.
     97     EFI_NOT_FOUND - TableKey does not refer to a valid key for a table entry.
     98 
     99 --*/
    100 ;
    101 
    102 //
    103 // Interface structure for the ACPI Table Protocol
    104 //
    105 struct _EFI_ACPI_TABLE_PROTOCOL {
    106   EFI_ACPI_TABLE_INSTALL_ACPI_TABLE    InstallAcpiTable;
    107   EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE  UninstallAcpiTable;
    108 };
    109 
    110 extern EFI_GUID gEfiAcpiTableProtocolGuid;
    111 
    112 #endif
    113