]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.h
Update the copyright notice format
[mirror_edk2.git] / MdeModulePkg / Universal / Acpi / AcpiTableDxe / AcpiTable.h
CommitLineData
5f55c700 1/** @file\r
2 ACPI Table Protocol Driver\r
3\r
e5eed7d3
HT
4 Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
5 This program and the accompanying materials\r
5f55c700 6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _ACPI_TABLE_H_\r
16#define _ACPI_TABLE_H_\r
17\r
18\r
19#include <PiDxe.h>\r
20\r
21#include <Protocol/AcpiTable.h>\r
22#include <Guid/Acpi.h>\r
23\r
24#include <Library/BaseLib.h>\r
25#include <Library/DebugLib.h>\r
26#include <Library/UefiLib.h>\r
27#include <Library/BaseMemoryLib.h>\r
28#include <Library/UefiDriverEntryPoint.h>\r
29#include <Library/MemoryAllocationLib.h>\r
30#include <Library/UefiBootServicesTableLib.h>\r
31#include <Library/PcdLib.h>\r
32\r
33//\r
34// Statements that include other files\r
35//\r
36#include <IndustryStandard/Acpi.h>\r
37\r
38//\r
39// From Protocol/AcpiSupport.h\r
40//\r
41\r
42//\r
43// ACPI Version bitmap definition:\r
44//\r
45// EFI_ACPI_TABLE_VERSION_1_0B - ACPI Version 1.0b\r
46// EFI_ACPI_TABLE_VERSION_2_0 - ACPI Version 2.0\r
47// EFI_ACPI_TABLE_VERSION_3_0 - ACPI Version 3.0\r
48// EFI_ACPI_TABLE_VERSION_NONE - No ACPI Versions. This might be used\r
49// to create memory-based operation regions or other information\r
50// that is not part of the ACPI "tree" but must still be found\r
51// in ACPI memory space and/or managed by the core ACPI driver.\r
52//\r
53// Note that EFI provides discrete GUIDs for each version of ACPI\r
54// that is supported. It is expected that each EFI GUIDed\r
55// version of ACPI will also have a corresponding bitmap\r
56// definition. This allows maintenance of separate ACPI trees\r
57// for each distinctly different version of ACPI.\r
58//\r
59#define EFI_ACPI_TABLE_VERSION UINT32\r
60\r
61#define EFI_ACPI_TABLE_VERSION_NONE (1 << 0)\r
62#define EFI_ACPI_TABLE_VERSION_1_0B (1 << 1)\r
63#define EFI_ACPI_TABLE_VERSION_2_0 (1 << 2)\r
64#define EFI_ACPI_TABLE_VERSION_3_0 (1 << 3)\r
65\r
66//\r
67// Private Driver Data\r
68//\r
69//\r
70// ACPI Table Linked List Signature.\r
71//\r
72#define EFI_ACPI_TABLE_LIST_SIGNATURE SIGNATURE_32 ('E', 'A', 'T', 'L')\r
73\r
74//\r
75// ACPI Table Linked List Entry definition.\r
76//\r
77// Signature must be set to EFI_ACPI_TABLE_LIST_SIGNATURE\r
78// Link is the linked list data.\r
79// Version is the versions of the ACPI tables that this table belongs in.\r
80// Table is a pointer to the table.\r
81// PageAddress is the address of the pages allocated for the table.\r
82// NumberOfPages is the number of pages allocated at PageAddress.\r
83// Handle is used to identify a particular table.\r
84//\r
85typedef struct {\r
86 UINT32 Signature;\r
87 LIST_ENTRY Link;\r
88 EFI_ACPI_TABLE_VERSION Version;\r
89 EFI_ACPI_COMMON_HEADER *Table;\r
90 EFI_PHYSICAL_ADDRESS PageAddress;\r
91 UINTN NumberOfPages;\r
92 UINTN Handle;\r
93} EFI_ACPI_TABLE_LIST;\r
94\r
95//\r
96// Containment record for linked list.\r
97//\r
98#define EFI_ACPI_TABLE_LIST_FROM_LINK(_link) CR (_link, EFI_ACPI_TABLE_LIST, Link, EFI_ACPI_TABLE_LIST_SIGNATURE)\r
99\r
100//\r
101// The maximum number of tables this driver supports\r
102//\r
103#define EFI_ACPI_MAX_NUM_TABLES 20\r
104\r
105//\r
106// ACPI table information used to initialize tables.\r
107//\r
108#define EFI_ACPI_OEM_ID "INTEL "\r
109#define EFI_ACPI_OEM_TABLE_ID SIGNATURE_64('E', 'D', 'K', '2', ' ', ' ', ' ', ' ')\r
110#define EFI_ACPI_OEM_REVISION 0x00000002\r
111#define EFI_ACPI_CREATOR_ID 0x20202020\r
112#define EFI_ACPI_CREATOR_REVISION 0x01000013\r
113\r
114//\r
115// Protocol private structure definition\r
116//\r
117//\r
118// ACPI support protocol instance signature definition.\r
119//\r
120#define EFI_ACPI_TABLE_SIGNATURE SIGNATURE_32 ('S', 'T', 'A', 'E')\r
121\r
122//\r
123// ACPI support protocol instance data structure\r
124//\r
125typedef struct {\r
126 UINTN Signature;\r
127 EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp1; // Pointer to RSD_PTR structure\r
128 EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp3; // Pointer to RSD_PTR structure\r
129 EFI_ACPI_DESCRIPTION_HEADER *Rsdt1; // Pointer to RSDT table header\r
130 EFI_ACPI_DESCRIPTION_HEADER *Rsdt3; // Pointer to RSDT table header\r
131 EFI_ACPI_DESCRIPTION_HEADER *Xsdt; // Pointer to XSDT table header\r
132 EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt1; // Pointer to FADT table header\r
133 EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt3; // Pointer to FADT table header\r
134 EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *Facs1; // Pointer to FACS table header\r
135 EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *Facs3; // Pointer to FACS table header\r
136 EFI_ACPI_DESCRIPTION_HEADER *Dsdt1; // Pointer to DSDT table header\r
137 EFI_ACPI_DESCRIPTION_HEADER *Dsdt3; // Pointer to DSDT table header\r
138 LIST_ENTRY TableList;\r
139 UINTN NumberOfTableEntries1; // Number of ACPI 1.0 tables\r
140 UINTN NumberOfTableEntries3; // Number of ACPI 3.0 tables\r
141 UINTN CurrentHandle;\r
142 BOOLEAN TablesInstalled1; // ACPI 1.0 tables published\r
143 BOOLEAN TablesInstalled3; // ACPI 3.0 tables published\r
144 EFI_ACPI_TABLE_PROTOCOL AcpiTableProtocol;\r
145} EFI_ACPI_TABLE_INSTANCE;\r
146\r
147//\r
148// ACPI table protocol instance containing record macro\r
149//\r
150#define EFI_ACPI_TABLE_INSTANCE_FROM_THIS(a) \\r
151 CR (a, \\r
152 EFI_ACPI_TABLE_INSTANCE, \\r
153 AcpiTableProtocol, \\r
154 EFI_ACPI_TABLE_SIGNATURE \\r
155 )\r
156\r
157//\r
158// Protocol Constructor functions\r
159//\r
160\r
161/**\r
162 Constructor for the ACPI support protocol. Initializes instance\r
163 data.\r
164\r
165 @param AcpiTableInstance Instance to construct\r
166\r
167 @return EFI_SUCCESS Instance initialized.\r
168 @return EFI_OUT_OF_RESOURCES Unable to allocate required resources.\r
169\r
170**/\r
171EFI_STATUS\r
172AcpiTableAcpiTableConstructor (\r
173 EFI_ACPI_TABLE_INSTANCE *AcpiTableInstance\r
174 );\r
175\r
176\r
177/**\r
178 Entry point of the ACPI table driver.\r
179 Creates and initializes an instance of the ACPI Table \r
180 Protocol and installs it on a new handle.\r
181\r
182 @param ImageHandle A handle for the image that is initializing this driver\r
183 @param SystemTable A pointer to the EFI system table\r
184\r
185 @return EFI_SUCCESS Driver initialized successfully\r
186 @return EFI_LOAD_ERROR Failed to Initialize or has been loaded \r
187 @return EFI_OUT_OF_RESOURCES Could not allocate needed resources\r
188\r
189**/\r
190EFI_STATUS\r
191EFIAPI\r
192InitializeAcpiTableDxe (\r
193 IN EFI_HANDLE ImageHandle,\r
194 IN EFI_SYSTEM_TABLE *SystemTable\r
195 );\r
196\r
197#endif\r