]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/AcpiTable.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / AcpiTable.h
1 /** @file
2 The file provides the protocol to install or remove an ACPI
3 table from a platform.
4
5 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 @par Revision Reference:
9 This Protocol was introduced in UEFI Specification 2.3.
10
11 **/
12
13 #ifndef __ACPI_TABLE_H___
14 #define __ACPI_TABLE_H___
15
16 #define EFI_ACPI_TABLE_PROTOCOL_GUID \
17 { 0xffe06bdd, 0x6107, 0x46a6, { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c }}
18
19
20 typedef struct _EFI_ACPI_TABLE_PROTOCOL EFI_ACPI_TABLE_PROTOCOL;
21
22 /**
23
24 The InstallAcpiTable() function allows a caller to install an
25 ACPI table. When successful, the table will be linked by the
26 RSDT/XSDT. AcpiTableBuffer specifies the table to be installed.
27 InstallAcpiTable() will make a copy of the table and insert the
28 copy into the RSDT/XSDT. InstallAcpiTable() must insert the new
29 table at the end of the RSDT/XSDT. To prevent namespace
30 collision, ACPI tables may be created using UEFI ACPI table
31 format. If this protocol is used to install a table with a
32 signature already present in the system, the new table will not
33 replace the existing table. It is a platform implementation
34 decision to add a new table with a signature matching an
35 existing table or disallow duplicate table signatures and
36 return EFI_ACCESS_DENIED. On successful output, TableKey is
37 initialized with a unique key. Its value may be used in a
38 subsequent call to UninstallAcpiTable to remove an ACPI table.
39 If an EFI application is running at the time of this call, the
40 relevant EFI_CONFIGURATION_TABLE pointer to the RSDT is no
41 longer considered valid.
42
43
44 @param This A pointer to a EFI_ACPI_TABLE_PROTOCOL.
45
46 @param AcpiTableBuffer A pointer to a buffer containing the
47 ACPI table to be installed.
48
49 @param AcpiTableBufferSize Specifies the size, in bytes, of
50 the AcpiTableBuffer buffer.
51
52
53 @param TableKey Returns a key to refer to the ACPI table.
54
55 @retval EFI_SUCCESS The table was successfully inserted
56
57 @retval EFI_INVALID_PARAMETER Either AcpiTableBuffer is NULL,
58 TableKey is NULL, or
59 AcpiTableBufferSize and the size
60 field embedded in the ACPI table
61 pointed to by AcpiTableBuffer
62 are not in sync.
63
64 @retval EFI_OUT_OF_RESOURCES Insufficient resources exist to
65 complete the request.
66 @retval EFI_ACCESS_DENIED The table signature matches a table already
67 present in the system and platform policy
68 does not allow duplicate tables of this type.
69
70 **/
71 typedef
72 EFI_STATUS
73 (EFIAPI *EFI_ACPI_TABLE_INSTALL_ACPI_TABLE)(
74 IN EFI_ACPI_TABLE_PROTOCOL *This,
75 IN VOID *AcpiTableBuffer,
76 IN UINTN AcpiTableBufferSize,
77 OUT UINTN *TableKey
78 );
79
80
81 /**
82
83 The UninstallAcpiTable() function allows a caller to remove an
84 ACPI table. The routine will remove its reference from the
85 RSDT/XSDT. A table is referenced by the TableKey parameter
86 returned from a prior call to InstallAcpiTable(). If an EFI
87 application is running at the time of this call, the relevant
88 EFI_CONFIGURATION_TABLE pointer to the RSDT is no longer
89 considered valid.
90
91 @param This A pointer to a EFI_ACPI_TABLE_PROTOCOL.
92
93 @param TableKey Specifies the table to uninstall. The key was
94 returned from InstallAcpiTable().
95
96 @retval EFI_SUCCESS The table was successfully inserted
97
98 @retval EFI_NOT_FOUND TableKey does not refer to a valid key
99 for a table entry.
100
101 @retval EFI_OUT_OF_RESOURCES Insufficient resources exist to
102 complete the request.
103
104 **/
105 typedef
106 EFI_STATUS
107 (EFIAPI *EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE)(
108 IN EFI_ACPI_TABLE_PROTOCOL *This,
109 IN UINTN TableKey
110 );
111
112 ///
113 /// The EFI_ACPI_TABLE_PROTOCOL provides the ability for a component
114 /// to install and uninstall ACPI tables from a platform.
115 ///
116 struct _EFI_ACPI_TABLE_PROTOCOL {
117 EFI_ACPI_TABLE_INSTALL_ACPI_TABLE InstallAcpiTable;
118 EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE UninstallAcpiTable;
119 };
120
121 extern EFI_GUID gEfiAcpiTableProtocolGuid;
122
123 #endif
124