]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Protocol/DisplayProtocol.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / DisplayProtocol.h
CommitLineData
7c6c064c
ED
1/** @file\r
2 FormDiplay protocol to show Form\r
3\r
d1102dba 4Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
7c6c064c
ED
6\r
7**/\r
8\r
9#ifndef __DISPLAY_PROTOCOL_H__\r
10#define __DISPLAY_PROTOCOL_H__\r
11\r
12#include <Protocol/FormBrowser2.h>\r
13\r
14#define EDKII_FORM_DISPLAY_ENGINE_PROTOCOL_GUID \\r
15 { 0x9bbe29e9, 0xfda1, 0x41ec, { 0xad, 0x52, 0x45, 0x22, 0x13, 0x74, 0x2d, 0x2e } }\r
16\r
d1102dba 17//\r
7c6c064c
ED
18// Do nothing.\r
19//\r
1436aea4 20#define BROWSER_ACTION_NONE BIT16\r
7c6c064c
ED
21//\r
22// ESC Exit\r
23//\r
1436aea4 24#define BROWSER_ACTION_FORM_EXIT BIT17\r
7c6c064c 25\r
4d4deaac
ED
26#define BROWSER_SUCCESS 0x0\r
27#define BROWSER_ERROR BIT31\r
28#define BROWSER_SUBMIT_FAIL BROWSER_ERROR | 0x01\r
29#define BROWSER_NO_SUBMIT_IF BROWSER_ERROR | 0x02\r
30#define BROWSER_FORM_NOT_FOUND BROWSER_ERROR | 0x03\r
31#define BROWSER_FORM_SUPPRESS BROWSER_ERROR | 0x04\r
32#define BROWSER_PROTOCOL_NOT_FOUND BROWSER_ERROR | 0x05\r
33#define BROWSER_INCONSISTENT_IF BROWSER_ERROR | 0x06\r
34#define BROWSER_WARNING_IF BROWSER_ERROR | 0x07\r
35#define BROWSER_SUBMIT_FAIL_NO_SUBMIT_IF BROWSER_ERROR | 0x08\r
f2e7732e
ED
36#define BROWSER_RECONNECT_REQUIRED BROWSER_ERROR | 0x09\r
37#define BROWSER_RECONNECT_FAIL BROWSER_ERROR | 0x0A\r
38#define BROWSER_RECONNECT_SAVE_CHANGES BROWSER_ERROR | 0x0B\r
7c6c064c
ED
39\r
40#define FORM_DISPLAY_ENGINE_STATEMENT_VERSION_1 0x10000\r
41#define FORM_DISPLAY_ENGINE_VERSION_1 0x10000\r
42\r
43typedef struct {\r
44 //\r
45 // HII Data Type\r
46 //\r
1436aea4 47 UINT8 Type;\r
7c6c064c
ED
48 //\r
49 // Buffer Data and Length if Type is EFI_IFR_TYPE_BUFFER or EFI_IFR_TYPE_STRING\r
50 //\r
1436aea4
MK
51 UINT8 *Buffer;\r
52 UINT16 BufferLen;\r
53 EFI_IFR_TYPE_VALUE Value;\r
7c6c064c
ED
54} EFI_HII_VALUE;\r
55\r
56#define DISPLAY_QUESTION_OPTION_SIGNATURE SIGNATURE_32 ('Q', 'O', 'P', 'T')\r
57\r
58typedef struct {\r
1436aea4
MK
59 UINTN Signature;\r
60 LIST_ENTRY Link;\r
7c6c064c
ED
61 //\r
62 // OneOfOption Data\r
63 //\r
1436aea4 64 EFI_IFR_ONE_OF_OPTION *OptionOpCode;\r
7c6c064c
ED
65 //\r
66 // Option ImageId and AnimationId\r
67 //\r
1436aea4
MK
68 EFI_IMAGE_ID ImageId;\r
69 EFI_ANIMATION_ID AnimationId;\r
7c6c064c
ED
70} DISPLAY_QUESTION_OPTION;\r
71\r
72#define DISPLAY_QUESTION_OPTION_FROM_LINK(a) CR (a, DISPLAY_QUESTION_OPTION, Link, DISPLAY_QUESTION_OPTION_SIGNATURE)\r
73\r
1436aea4
MK
74typedef struct _FORM_DISPLAY_ENGINE_STATEMENT FORM_DISPLAY_ENGINE_STATEMENT;\r
75typedef struct _FORM_DISPLAY_ENGINE_FORM FORM_DISPLAY_ENGINE_FORM;\r
7c6c064c 76\r
1436aea4
MK
77#define STATEMENT_VALID 0x0\r
78#define STATEMENT_INVALID BIT31\r
7c6c064c 79\r
1436aea4
MK
80#define INCOSISTENT_IF_TRUE STATEMENT_INVALID | 0x01\r
81#define WARNING_IF_TRUE STATEMENT_INVALID | 0x02\r
82#define STRING_TOO_LONG STATEMENT_INVALID | 0x03\r
7c6c064c
ED
83// ... to be extended.\r
84\r
85typedef struct {\r
86 //\r
87 // StringId for INCONSITENT_IF or WARNING_IF\r
88 //\r
1436aea4 89 EFI_STRING_ID StringId;\r
7c6c064c
ED
90 //\r
91 // TimeOut for WARNING_IF\r
92 //\r
1436aea4 93 UINT8 TimeOut;\r
7c6c064c
ED
94} STATEMENT_ERROR_INFO;\r
95\r
96/**\r
97 Perform value check for a question.\r
d1102dba 98\r
7c6c064c
ED
99 @param Form Form where Statement is in.\r
100 @param Statement Value will check for it.\r
101 @param Value New value will be checked.\r
d1102dba 102\r
7c6c064c
ED
103 @retval Status Value Status\r
104\r
105**/\r
106typedef\r
107UINT32\r
1436aea4 108(EFIAPI *VALIDATE_QUESTION)(\r
7c6c064c
ED
109 IN FORM_DISPLAY_ENGINE_FORM *Form,\r
110 IN FORM_DISPLAY_ENGINE_STATEMENT *Statement,\r
d1102dba 111 IN EFI_HII_VALUE *Value,\r
7c6c064c
ED
112 OUT STATEMENT_ERROR_INFO *ErrorInfo\r
113 );\r
114\r
115/**\r
d1102dba 116 Perform Password check.\r
7c6c064c 117 Passwork may be encrypted by driver that requires the specific check.\r
d1102dba 118\r
7c6c064c
ED
119 @param Form Form where Password Statement is in.\r
120 @param Statement Password statement\r
121 @param PasswordString Password string to be checked. It may be NULL.\r
122 NULL means to restore password.\r
123 "" string can be used to checked whether old password does exist.\r
d1102dba 124\r
7c6c064c
ED
125 @return Status Status of Password check.\r
126**/\r
127typedef\r
128EFI_STATUS\r
1436aea4 129(EFIAPI *PASSWORD_CHECK)(\r
7c6c064c
ED
130 IN FORM_DISPLAY_ENGINE_FORM *Form,\r
131 IN FORM_DISPLAY_ENGINE_STATEMENT *Statement,\r
132 IN EFI_STRING PasswordString OPTIONAL\r
133 );\r
134\r
135#define FORM_DISPLAY_ENGINE_STATEMENT_SIGNATURE SIGNATURE_32 ('F', 'S', 'T', 'A')\r
136\r
137//\r
138// Attribute for Statement and Form\r
139//\r
1436aea4
MK
140#define HII_DISPLAY_NONE 0\r
141#define HII_DISPLAY_GRAYOUT BIT0\r
142#define HII_DISPLAY_LOCK BIT1\r
143#define HII_DISPLAY_READONLY BIT2\r
144#define HII_DISPLAY_MODAL BIT3\r
145#define HII_DISPLAY_SUPPRESS BIT4\r
146\r
147struct _FORM_DISPLAY_ENGINE_STATEMENT {\r
148 UINTN Signature;\r
7c6c064c
ED
149 //\r
150 // Version for future structure extension\r
151 //\r
1436aea4 152 UINTN Version;\r
7c6c064c
ED
153 //\r
154 // link to all the statement which will show in the display form.\r
155 //\r
1436aea4 156 LIST_ENTRY DisplayLink;\r
7c6c064c
ED
157 //\r
158 // Pointer to statement opcode.\r
159 // for Guided Opcode. All buffers will be here if GUIDED opcode scope is set.\r
160 //\r
1436aea4 161 EFI_IFR_OP_HEADER *OpCode;\r
7c6c064c
ED
162 //\r
163 // Question CurrentValue\r
164 //\r
1436aea4 165 EFI_HII_VALUE CurrentValue;\r
7c6c064c
ED
166 //\r
167 // Flag to describe whether setting is changed or not.\r
d1102dba 168 // Displayer may depend on it to show it with the different color.\r
7c6c064c 169 //\r
1436aea4 170 BOOLEAN SettingChangedFlag;\r
7c6c064c
ED
171 //\r
172 // nested Statement list inside of EFI_IFR_SUBTITLE\r
173 //\r
1436aea4 174 LIST_ENTRY NestStatementList;\r
7c6c064c
ED
175 //\r
176 // nested EFI_IFR_ONE_OF_OPTION list (QUESTION_OPTION)\r
177 //\r
1436aea4 178 LIST_ENTRY OptionListHead;\r
7c6c064c
ED
179 //\r
180 // Statement attributes: GRAYOUT, LOCK and READONLY\r
181 //\r
1436aea4 182 UINT32 Attribute;\r
7c6c064c
ED
183\r
184 //\r
185 // ValidateQuestion to do InconsistIf check\r
186 // It may be NULL if any value is valid.\r
187 //\r
1436aea4 188 VALIDATE_QUESTION ValidateQuestion;\r
d1102dba 189\r
7c6c064c
ED
190 //\r
191 // Password additional check. It may be NULL when the additional check is not required.\r
192 //\r
1436aea4 193 PASSWORD_CHECK PasswordCheck;\r
7c6c064c
ED
194\r
195 //\r
196 // Statement ImageId and AnimationId\r
197 //\r
1436aea4
MK
198 EFI_IMAGE_ID ImageId;\r
199 EFI_ANIMATION_ID AnimationId;\r
7c6c064c
ED
200};\r
201\r
202#define FORM_DISPLAY_ENGINE_STATEMENT_FROM_LINK(a) CR (a, FORM_DISPLAY_ENGINE_STATEMENT, DisplayLink, FORM_DISPLAY_ENGINE_STATEMENT_SIGNATURE)\r
203\r
204#define BROWSER_HOT_KEY_SIGNATURE SIGNATURE_32 ('B', 'H', 'K', 'S')\r
205\r
206typedef struct {\r
1436aea4
MK
207 UINTN Signature;\r
208 LIST_ENTRY Link;\r
d1102dba 209\r
1436aea4 210 EFI_INPUT_KEY *KeyData;\r
7c6c064c
ED
211 //\r
212 // Action is Discard, Default, Submit, Reset and Exit.\r
213 //\r
1436aea4
MK
214 UINT32 Action;\r
215 UINT16 DefaultId;\r
7c6c064c
ED
216 //\r
217 // HotKey Help String\r
218 //\r
1436aea4 219 EFI_STRING HelpString;\r
7c6c064c
ED
220} BROWSER_HOT_KEY;\r
221\r
222#define BROWSER_HOT_KEY_FROM_LINK(a) CR (a, BROWSER_HOT_KEY, Link, BROWSER_HOT_KEY_SIGNATURE)\r
223\r
224#define FORM_DISPLAY_ENGINE_FORM_SIGNATURE SIGNATURE_32 ('F', 'F', 'R', 'M')\r
225\r
226struct _FORM_DISPLAY_ENGINE_FORM {\r
1436aea4 227 UINTN Signature;\r
7c6c064c
ED
228 //\r
229 // Version for future structure extension\r
230 //\r
1436aea4 231 UINTN Version;\r
7c6c064c
ED
232 //\r
233 // Statement List inside of Form\r
234 //\r
1436aea4 235 LIST_ENTRY StatementListHead;\r
7c6c064c 236 //\r
d1102dba 237 // Statement List outside of Form\r
7c6c064c 238 //\r
1436aea4 239 LIST_ENTRY StatementListOSF;\r
7c6c064c
ED
240 //\r
241 // The input screen dimenstions info.\r
242 //\r
1436aea4 243 EFI_SCREEN_DESCRIPTOR *ScreenDimensions;\r
7c6c064c
ED
244 //\r
245 // FormSet information\r
246 //\r
1436aea4 247 EFI_GUID FormSetGuid;\r
7c6c064c
ED
248 //\r
249 // HiiHandle can be used to get String, Image or Animation\r
250 //\r
1436aea4 251 EFI_HII_HANDLE HiiHandle;\r
d1102dba 252\r
7c6c064c
ED
253 //\r
254 // Form ID and Title.\r
255 //\r
1436aea4
MK
256 UINT16 FormId;\r
257 EFI_STRING_ID FormTitle;\r
7c6c064c
ED
258 //\r
259 // Form Attributes: Lock, Modal.\r
260 //\r
1436aea4 261 UINT32 Attribute;\r
7c6c064c
ED
262 //\r
263 // Flag to describe whether setting is changed or not.\r
264 // Displayer depends on it to show ChangedFlag.\r
265 //\r
1436aea4 266 BOOLEAN SettingChangedFlag;\r
7c6c064c
ED
267\r
268 //\r
269 // Statement to be HighLighted\r
270 //\r
1436aea4 271 FORM_DISPLAY_ENGINE_STATEMENT *HighLightedStatement;\r
7c6c064c
ED
272 //\r
273 // Event to notify Displayer that FormData is updated to be refreshed.\r
274 //\r
1436aea4 275 EFI_EVENT FormRefreshEvent;\r
7c6c064c
ED
276 //\r
277 // Additional Hotkey registered by BrowserEx protocol.\r
278 //\r
1436aea4 279 LIST_ENTRY HotKeyListHead;\r
7c6c064c
ED
280\r
281 //\r
282 // Form ImageId and AnimationId\r
283 //\r
1436aea4
MK
284 EFI_IMAGE_ID ImageId;\r
285 EFI_ANIMATION_ID AnimationId;\r
d1102dba 286\r
7c6c064c 287 //\r
d1102dba 288 // If Status is error, display needs to handle it.\r
7c6c064c 289 //\r
1436aea4 290 UINT32 BrowserStatus;\r
7c6c064c 291 //\r
d1102dba 292 // String for error status. It may be NULL.\r
7c6c064c 293 //\r
1436aea4 294 EFI_STRING ErrorString;\r
7c6c064c
ED
295};\r
296\r
297#define FORM_DISPLAY_ENGINE_FORM_FROM_LINK(a) CR (a, FORM_DISPLAY_ENGINE_FORM, Link, FORM_DISPLAY_ENGINE_FORM_SIGNATURE)\r
298\r
299typedef struct {\r
1436aea4 300 FORM_DISPLAY_ENGINE_STATEMENT *SelectedStatement; // Selected Statement and InputValue\r
d1102dba 301\r
1436aea4 302 EFI_HII_VALUE InputValue;\r
d1102dba 303\r
1436aea4 304 UINT32 Action; // If SelectedStatement is NULL, Action will be used.\r
7c6c064c 305 // Trig Action (Discard, Default, Submit, Reset and Exit)\r
1436aea4 306 UINT16 DefaultId;\r
7c6c064c
ED
307} USER_INPUT;\r
308\r
309/**\r
310 Display one form, and return user input.\r
d1102dba 311\r
7c6c064c
ED
312 @param FormData Form Data to be shown.\r
313 @param UserInputData User input data.\r
d1102dba 314\r
7c6c064c
ED
315 @retval EFI_SUCCESS Form Data is shown, and user input is got.\r
316**/\r
317typedef\r
318EFI_STATUS\r
1436aea4 319(EFIAPI *FORM_DISPLAY)(\r
7c6c064c
ED
320 IN FORM_DISPLAY_ENGINE_FORM *FormData,\r
321 OUT USER_INPUT *UserInputData\r
1436aea4 322 );\r
7c6c064c
ED
323\r
324/**\r
325 Exit Display and Clear Screen to the original state.\r
326\r
327**/\r
328typedef\r
329VOID\r
1436aea4 330(EFIAPI *EXIT_DISPLAY)(\r
7c6c064c 331 VOID\r
1436aea4 332 );\r
7c6c064c
ED
333\r
334/**\r
d1102dba
LG
335 Confirm how to handle the changed data.\r
336\r
7c6c064c
ED
337 @return Action of Submit, Discard and None\r
338**/\r
339typedef\r
340UINTN\r
1436aea4 341(EFIAPI *CONFIRM_DATA_CHANGE)(\r
7c6c064c 342 VOID\r
1436aea4 343 );\r
7c6c064c
ED
344\r
345typedef struct {\r
1436aea4
MK
346 FORM_DISPLAY FormDisplay;\r
347 EXIT_DISPLAY ExitDisplay;\r
348 CONFIRM_DATA_CHANGE ConfirmDataChange;\r
7c6c064c
ED
349} EDKII_FORM_DISPLAY_ENGINE_PROTOCOL;\r
350\r
1436aea4 351extern EFI_GUID gEdkiiFormDisplayEngineProtocolGuid;\r
7c6c064c 352#endif\r