DxeCore.h, PeiCis.h and Uefi.h should not include <Protocol/Pcd.h>. If a module need...
[mirror_edk2.git] / MdePkg / Include / Peim / PeiCis.h
Content-type: text/html git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Peim/PeiCis.h


500 - Internal Server Error

Malformed UTF-8 character (fatal) at (eval 8) line 1, <$fd> line 546.
CommitLineData
72df7b0f 1/** @file\r
2 Framework PEI master include file. This file should match the PEI CIS spec.\r
3\r
4 Copyright (c) 2006, Intel Corporation \r
5 All rights reserved. This program and the accompanying materials \r
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 Module Name: PeiCis.h\r
14\r
15 @par Revision Reference:\r
16 Version 0.91.\r
17\r
18**/\r
19\r
20#ifndef __PEIM_CIS_H__\r
21#define __PEIM_CIS_H__\r
22\r
23#include <Common/MultiPhase.h>\r
24#include <Common/BootMode.h>\r
25#include <Common/Hob.h>\r
26#include <Common/FirmwareVolumeImageFormat.h>\r
27#include <Common/FirmwareVolumeHeader.h>\r
28#include <Common/FirmwareFileSystem.h>\r
29#include <Common/Dependency.h>\r
30\r
31#define TIANO_ERROR(a) (MAX_2_BITS | (a))\r
32\r
33#if (EFI_SPECIFICATION_VERSION < 0x00020000)\r
34//\r
35// Tiano added a couple of return types. These are owned by UEFI specification\r
36// and Tiano can not use them. Thus for UEFI 2.0/R9 support we moved the values\r
37// to a UEFI OEM extension range to conform to UEFI specification.\r
38//\r
39#define EFI_NOT_AVAILABLE_YET EFIERR (28)\r
40#define EFI_UNLOAD_IMAGE EFIERR (29)\r
41#else\r
42#define EFI_NOT_AVAILABLE_YET TIANO_ERROR (0)\r
43#define EFI_UNLOAD_IMAGE TIANO_ERROR (1)\r
44#endif\r
45\r
46//\r
47// Declare forward referenced data structures\r
48//\r
49typedef struct _EFI_PEI_SERVICES EFI_PEI_SERVICES;\r
50typedef struct _EFI_PEI_NOTIFY_DESCRIPTOR EFI_PEI_NOTIFY_DESCRIPTOR;\r
51\r
52\r
53#include <Ppi/CpuIo.h>\r
54#include <Ppi/PciCfg.h>\r
55\r
56//\r
57// PEI Specification Revision information\r
58//\r
59#define PEI_SPECIFICATION_MAJOR_REVISION 0\r
60#define PEI_SPECIFICATION_MINOR_REVISION 91\r
61\r
62/**\r
63 The PEI Dispatcher will invoke each PEIM one time. During this pass, the PEI \r
64 Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header. \r
65\r
0647c9ad
LG
66 @param FfsHeader Pointer to the FFS file header.\r
67 @param PeiServices Describes the list of possible PEI Services.\r
72df7b0f 68\r
69 @return Status code\r
70\r
71**/\r
72typedef\r
73EFI_STATUS\r
74(EFIAPI *EFI_PEIM_ENTRY_POINT)(\r
75 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
76 IN EFI_PEI_SERVICES **PeiServices\r
77 );\r
78\r
79/**\r
80 Entry point of the notification callback function itself within the PEIM.\r
81\r
0647c9ad 82 @param PeiServices Indirect reference to the PEI Services Table.\r
72df7b0f 83 @param NotifyDescriptor Address of the notification descriptor data structure.\r
0647c9ad 84 @param Ppi Address of the PPI that was installed.\r
72df7b0f 85\r
86 @return Status code\r
87 \r
88**/\r
89typedef\r
90EFI_STATUS\r
91(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) (\r
92 IN EFI_PEI_SERVICES **PeiServices,\r
93 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
94 IN VOID *Ppi\r
95 );\r
96\r
97//\r
98// PEI Ppi Services List Descriptors\r
99//\r
100#define EFI_PEI_PPI_DESCRIPTOR_PIC 0x00000001\r
101#define EFI_PEI_PPI_DESCRIPTOR_PPI 0x00000010\r
102#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK 0x00000020\r
103#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH 0x00000040\r
104#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES 0x00000060\r
105#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST 0x80000000\r
106\r
107typedef struct {\r
108 UINTN Flags;\r
109 EFI_GUID *Guid;\r
110 VOID *Ppi;\r
111} EFI_PEI_PPI_DESCRIPTOR;\r
112\r
113struct _EFI_PEI_NOTIFY_DESCRIPTOR {\r
114 UINTN Flags;\r
115 EFI_GUID *Guid;\r
116 EFI_PEIM_NOTIFY_ENTRY_POINT Notify;\r
117};\r
118\r
119/**\r
120 This service is the first one provided by the PEI Foundation. This function \r
121 installs an interface in the PEI PPI database by GUID. The purpose of the \r
122 service is to publish an interface that other parties can use to call \r
123 additional PEIMs.\r
124\r
0647c9ad
LG
125 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table\r
126 published by the PEI Foundation.\r
127 @param PpiList A pointer to the list of interfaces that the caller shall install.\r
72df7b0f 128\r
0647c9ad
LG
129 @retval EFI_SUCCESS The interface was successfully installed.\r
130 @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.\r
131 @retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.\r
72df7b0f 132\r
133**/\r
134typedef\r
135EFI_STATUS\r
136(EFIAPI *EFI_PEI_INSTALL_PPI) (\r
137 IN EFI_PEI_SERVICES **PeiServices,\r
138 IN EFI_PEI_PPI_DESCRIPTOR *PpiList\r
139 );\r
140\r
141/**\r
142 This function reinstalls an interface in the PEI PPI database by GUID. \r
143 The purpose of the service is to publish an interface that other parties \r
144 can use to replace a same-named interface in the protocol database \r
145 with a different interface. \r
146\r
0647c9ad
LG
147 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table\r
148 published by the PEI Foundation.\r
149 @param OldPpi A pointer to the former PPI in the database.\r
150 @param NewPpi A pointer to the new interfaces that the caller shall install.\r
72df7b0f 151\r
0647c9ad
LG
152 @retval EFI_SUCCESS The interface was successfully installed.\r
153 @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the \r
154 list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.\r
155 @retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.\r
156 @retval EFI_NOT_FOUND The PPI for which the reinstallation was requested has not been installed.\r
72df7b0f 157\r
158**/\r
159typedef\r
160EFI_STATUS\r
161(EFIAPI *EFI_PEI_REINSTALL_PPI) (\r
162 IN EFI_PEI_SERVICES **PeiServices,\r
163 IN EFI_PEI_PPI_DESCRIPTOR *OldPpi,\r
164 IN EFI_PEI_PPI_DESCRIPTOR *NewPpi\r
165 );\r
166\r
167/**\r
168 This function locates an interface in the PEI PPI database by GUID. \r
169\r
0647c9ad
LG
170 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation.\r
171 @param Guid A pointer to the GUID whose corresponding interface needs to be found.\r
172 @param Instance The N-th instance of the interface that is required.\r
173 @param PpiDescriptor A pointer to instance of the EFI_PEI_PPI_DESCRIPTOR.\r
174 @param Ppi A pointer to the instance of the interface.\r
72df7b0f 175\r
0647c9ad
LG
176 @retval EFI_SUCCESS The interface was successfully returned.\r
177 @retval EFI_NOT_FOUND The PPI descriptor is not found in the database.\r
72df7b0f 178\r
179**/\r
180typedef\r
181EFI_STATUS\r
182(EFIAPI *EFI_PEI_LOCATE_PPI) (\r
183 IN EFI_PEI_SERVICES **PeiServices,\r
184 IN EFI_GUID *Guid,\r
185 IN UINTN Instance,\r
186 IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
187 IN OUT VOID **Ppi\r
188 );\r
189\r
190/**\r
191 This function installs a notification service to be called back when a \r
192 given interface is installed or reinstalled. The purpose of the service \r
193 is to publish an interface that other parties can use to call additional PPIs \r
194 that may materialize later.\r
195\r
0647c9ad
LG
196 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
197 @param NotifyList A pointer to the list of notification interfaces that the caller shall install.\r
72df7b0f 198\r
0647c9ad
LG
199 @retval EFI_SUCCESS The interface was successfully installed.\r
200 @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the \r
201 list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.\r
202 @retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.\r
72df7b0f 203\r
204**/\r
205typedef\r
206EFI_STATUS\r
207(EFIAPI *EFI_PEI_NOTIFY_PPI) (\r
208 IN EFI_PEI_SERVICES **PeiServices,\r
209 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList\r
210 );\r
211\r
212/**\r
213 This function returns the present value of the boot mode.\r
214\r
0647c9ad
LG
215 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
216 @param BootMode A pointer to contain the value of the boot mode.\r
72df7b0f 217\r
0647c9ad 218 @retval EFI_SUCCESS The boot mode was returned successfully.\r
72df7b0f 219\r
220**/\r
221typedef\r
222EFI_STATUS\r
223(EFIAPI *EFI_PEI_GET_BOOT_MODE) (\r
224 IN EFI_PEI_SERVICES **PeiServices,\r
225 OUT EFI_BOOT_MODE *BootMode\r
226 );\r
227\r
228/**\r
229 This function sets the value of the boot mode.\r
230\r
0647c9ad
LG
231 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
232 @param BootMode The value of the boot mode to set.\r
72df7b0f 233\r
0647c9ad 234 @retval EFI_SUCCESS The boot mode was returned successfully.\r
72df7b0f 235\r
236**/\r
237typedef\r
238EFI_STATUS\r
239(EFIAPI *EFI_PEI_SET_BOOT_MODE) (\r
240 IN EFI_PEI_SERVICES **PeiServices,\r
241 IN EFI_BOOT_MODE BootMode\r
242 );\r
243\r
244/**\r
245 This function returns the pointer to the list of Hand-Off Blocks (HOBs) in memory. \r
246\r
0647c9ad
LG
247 @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
248 @param HobList A pointer to the list of HOBs that the PEI Foundation will initialize\r
72df7b0f 249\r
0647c9ad 250 @retval EFI_SUCCESS The list was successfully returned.\r
72df7b0f 251 @retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.\r
252\r
253**/\r
254typedef\r
255EFI_STATUS\r
256(EFIAPI *EFI_PEI_GET_HOB_LIST) (\r
257 IN EFI_PEI_SERVICES **PeiServices,\r
258 IN OUT VOID **HobList\r
259 );\r
260\r
261/**\r
262