]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Framework/FrameworkInternalFormRepresentation.h
IntelFrameworkPkg: Clean up source files
[mirror_edk2.git] / IntelFrameworkPkg / Include / Framework / FrameworkInternalFormRepresentation.h
CommitLineData
61789197 1/** @file\r
2 This file defines the encoding for the VFR (Visual Form Representation) language.\r
3 Framework IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
4 internal application and drivers as well as all add-in card option-ROM drivers\r
5\r
1c2f052d
LG
6Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
7This program and the accompanying materials are licensed and made available under\r
8the terms and conditions of the BSD License that accompanies this distribution.\r
f22f941e 9The full text of the license may be found at\r
1c2f052d
LG
10http://opensource.org/licenses/bsd-license.php.\r
11\r
12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
61789197 14\r
15 @par Revision Reference:\r
f22f941e 16 These definitions are from the Framework Specification HII 0.92.\r
61789197 17\r
18**/\r
19\r
20#ifndef __FRAMEWORK_INTERNAL_FORMREPRESENTATION_H__\r
21#define __FRAMEWORK_INTERNAL_FORMREPRESENTATION_H__\r
22\r
0e0eeeca
LG
23typedef UINT16 STRING_REF;\r
24\r
61789197 25//\r
26// IFR Op codes\r
27//\r
28#define FRAMEWORK_EFI_IFR_FORM_OP 0x01\r
29#define FRAMEWORK_EFI_IFR_SUBTITLE_OP 0x02\r
30#define FRAMEWORK_EFI_IFR_TEXT_OP 0x03\r
33801c0c 31#define EFI_IFR_GRAPHIC_OP 0x04\r
61789197 32#define FRAMEWORK_EFI_IFR_ONE_OF_OP 0x05\r
33#define FRAMEWORK_EFI_IFR_CHECKBOX_OP 0x06\r
34#define FRAMEWORK_EFI_IFR_NUMERIC_OP 0x07\r
35#define FRAMEWORK_EFI_IFR_PASSWORD_OP 0x08\r
f22f941e 36#define FRAMEWORK_EFI_IFR_ONE_OF_OPTION_OP 0x09 ///< ONEOF OPTION field.\r
61789197 37#define FRAMEWORK_EFI_IFR_SUPPRESS_IF_OP 0x0A\r
33801c0c
LG
38#define EFI_IFR_END_FORM_OP 0x0B\r
39#define EFI_IFR_HIDDEN_OP 0x0C\r
40#define EFI_IFR_END_FORM_SET_OP 0x0D\r
61789197 41#define FRAMEWORK_EFI_IFR_FORM_SET_OP 0x0E\r
42#define FRAMEWORK_EFI_IFR_REF_OP 0x0F\r
33801c0c 43#define EFI_IFR_END_ONE_OF_OP 0x10\r
108854b2 44#define FRAMEWORK_EFI_IFR_END_OP EFI_IFR_END_ONE_OF_OP\r
61789197 45#define FRAMEWORK_EFI_IFR_INCONSISTENT_IF_OP 0x11\r
46#define FRAMEWORK_EFI_IFR_EQ_ID_VAL_OP 0x12\r
47#define FRAMEWORK_EFI_IFR_EQ_ID_ID_OP 0x13\r
48#define FRAMEWORK_EFI_IFR_EQ_ID_LIST_OP 0x14\r
49#define FRAMEWORK_EFI_IFR_AND_OP 0x15\r
50#define FRAMEWORK_EFI_IFR_OR_OP 0x16\r
51#define FRAMEWORK_EFI_IFR_NOT_OP 0x17\r
f22f941e 52#define EFI_IFR_END_IF_OP 0x18 ///< For endif of inconsistentif, suppressif, grayoutif.\r
33801c0c 53#define EFI_IFR_GRAYOUT_IF_OP 0x19\r
61789197 54#define FRAMEWORK_EFI_IFR_DATE_OP 0x1A\r
55#define FRAMEWORK_EFI_IFR_TIME_OP 0x1B\r
56#define FRAMEWORK_EFI_IFR_STRING_OP 0x1C\r
33801c0c
LG
57#define EFI_IFR_LABEL_OP 0x1D\r
58#define EFI_IFR_SAVE_DEFAULTS_OP 0x1E\r
59#define EFI_IFR_RESTORE_DEFAULTS_OP 0x1F\r
60#define EFI_IFR_BANNER_OP 0x20\r
61#define EFI_IFR_INVENTORY_OP 0x21\r
62#define EFI_IFR_EQ_VAR_VAL_OP 0x22\r
61789197 63#define FRAMEWORK_EFI_IFR_ORDERED_LIST_OP 0x23\r
64#define FRAMEWORK_EFI_IFR_VARSTORE_OP 0x24\r
33801c0c
LG
65#define EFI_IFR_VARSTORE_SELECT_OP 0x25\r
66#define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26\r
67#define EFI_IFR_LAST_OPCODE EFI_IFR_VARSTORE_SELECT_PAIR_OP\r
68#define EFI_IFR_OEM_OP 0xFE\r
69#define EFI_IFR_NV_ACCESS_COMMAND 0xFF\r
61789197 70\r
71//\r
72// Define values for the flags fields in some VFR opcodes. These are\r
73// bitmasks.\r
74//\r
108854b2
LG
75#define EFI_IFR_FLAG_DEFAULT 0x01\r
76#define EFI_IFR_FLAG_MANUFACTURING 0x02\r
77#define EFI_IFR_FLAG_INTERACTIVE 0x04\r
78#define EFI_IFR_FLAG_NV_ACCESS 0x08\r
79#define EFI_IFR_FLAG_RESET_REQUIRED 0x10\r
80#define EFI_IFR_FLAG_LATE_CHECK 0x20\r
61789197 81\r
f22f941e 82#define EFI_NON_DEVICE_CLASS 0x00 ///< Useful when you do not want something in the Device Manager.\r
61789197 83#define EFI_DISK_DEVICE_CLASS 0x01\r
84#define EFI_VIDEO_DEVICE_CLASS 0x02\r
85#define EFI_NETWORK_DEVICE_CLASS 0x04\r
86#define EFI_INPUT_DEVICE_CLASS 0x08\r
87#define EFI_ON_BOARD_DEVICE_CLASS 0x10\r
88#define EFI_OTHER_DEVICE_CLASS 0x20\r
89\r
90#define EFI_SETUP_APPLICATION_SUBCLASS 0x00\r
91#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01\r
92#define EFI_FRONT_PAGE_SUBCLASS 0x02\r
f22f941e 93#define EFI_SINGLE_USE_SUBCLASS 0x03 ///< Used to display a single entity ,and then exit.\r
2bbaeb0d 94\r
95///\r
96/// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set\r
f22f941e 97/// and the browser because we need to distinguish between compiled NV map data and created data.\r
5259c97d 98/// We do not allow new entries to be created in the NV map dynamically, but we do need\r
2bbaeb0d 99/// to display this information correctly. To dynamically create op-codes and assume that their\r
100/// data will be saved, ensure that the NV starting location they refer to is pre-defined in the\r
101/// NV map.\r
102///\r
108854b2 103#define EFI_IFR_FLAG_CREATED 128\r
61789197 104\r
105\r
106#pragma pack(1)\r
107//\r
108// IFR Structure definitions\r
109//\r
110typedef struct {\r
9205b2d7 111 UINT8 OpCode;\r
112 UINT8 Length;\r
61789197 113} FRAMEWORK_EFI_IFR_OP_HEADER;\r
114\r
115typedef struct {\r
9205b2d7 116 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
117 EFI_GUID Guid;\r
118 STRING_REF FormSetTitle;\r
119 STRING_REF Help;\r
120 EFI_PHYSICAL_ADDRESS CallbackHandle;\r
121 UINT16 Class;\r
122 UINT16 SubClass;\r
f22f941e 123 UINT16 NvDataSize; ///< Set once; the size of the NV data as defined in the script.\r
61789197 124} FRAMEWORK_EFI_IFR_FORM_SET;\r
125\r
126typedef struct {\r
9205b2d7 127 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
128 UINT16 FormId;\r
129 STRING_REF FormTitle;\r
61789197 130} FRAMEWORK_EFI_IFR_FORM;\r
131\r
132typedef struct {\r
9205b2d7 133 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
134 UINT16 LabelId;\r
108854b2 135} EFI_IFR_LABEL;\r
61789197 136\r
137typedef struct {\r
9205b2d7 138 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
139 STRING_REF SubTitle;\r
61789197 140} FRAMEWORK_EFI_IFR_SUBTITLE;\r
141\r
142typedef struct {\r
9205b2d7 143 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
144 STRING_REF Help;\r
145 STRING_REF Text;\r
146 STRING_REF TextTwo;\r
2bbaeb0d 147 UINT8 Flags; ///< This is included solely for purposes of interactive/dynamic support.\r
f22f941e 148 UINT16 Key; ///< The value to be passed to the caller to identify this particular op-code.\r
61789197 149} FRAMEWORK_EFI_IFR_TEXT;\r
150\r
151//\r
152// goto\r
153//\r
154typedef struct {\r
9205b2d7 155 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
156 UINT16 FormId;\r
157 STRING_REF Prompt;\r
f22f941e 158 STRING_REF Help; ///< The string Token for the context-help.\r
2bbaeb0d 159 UINT8 Flags; ///< This is included solely for purposes of interactive/dynamic support.\r
f22f941e 160 UINT16 Key; ///< The value to be passed to the caller to identify this particular op-code.\r
61789197 161} FRAMEWORK_EFI_IFR_REF;\r
162\r
163typedef struct {\r
9205b2d7 164 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
108854b2 165} EFI_IFR_END_FORM;\r
61789197 166\r
167typedef struct {\r
9205b2d7 168 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
108854b2 169} EFI_IFR_END_FORM_SET;\r
61789197 170\r
171//\r
9205b2d7 172// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......\r
173// code assumes this to be true, if this ever changes we need to revisit the InitializeTagStructures code\r
61789197 174//\r
175typedef struct {\r
9205b2d7 176 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
2bbaeb0d 177 UINT16 QuestionId; ///< The ID designating what the question is about...\r
f22f941e 178 UINT8 Width; ///< The Size of the Data being saved.\r
179 STRING_REF Prompt; ///< The String Token for the Prompt.\r
180 STRING_REF Help; ///< The string Token for the context-help.\r
61789197 181} FRAMEWORK_EFI_IFR_ONE_OF;\r
182\r
183typedef struct {\r
9205b2d7 184 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 185 UINT16 QuestionId; ///< The offset in NV for storage of the data.\r
186 UINT8 MaxEntries; ///< The maximum number of options in the ordered list (=size of NVStore).\r
187 STRING_REF Prompt; ///< The string token for the prompt.\r
188 STRING_REF Help; ///< The string token for the context-help.\r
61789197 189} FRAMEWORK_EFI_IFR_ORDERED_LIST;\r
190\r
191typedef struct {\r
9205b2d7 192 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
2bbaeb0d 193 UINT16 QuestionId; ///< The ID designating what the question is about...\r
f22f941e 194 UINT8 Width; ///< The Size of the Data being saved.\r
195 STRING_REF Prompt; ///< The String Token for the Prompt.\r
196 STRING_REF Help; ///< The string Token for the context-help.\r
197 UINT8 Flags; ///< If non-zero, it means that it is the default option.\r
198 UINT16 Key; ///< Value to be passed to caller to identify this particular op-code.\r
108854b2 199} FRAMEWORK_EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;\r
61789197 200\r
201typedef struct {\r
9205b2d7 202 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 203 STRING_REF Option; ///< The string token describing the option.\r
204 UINT16 Value; ///< The value associated with this option that is stored in the NVRAM.\r
205 UINT8 Flags; ///< If non-zero, it means that it is the default option.\r
206 UINT16 Key; ///< Value to be passed to caller to identify this particular op-code.\r
61789197 207} FRAMEWORK_EFI_IFR_ONE_OF_OPTION;\r
208\r
209typedef struct {\r
9205b2d7 210 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
2bbaeb0d 211 UINT16 QuestionId; ///< The ID designating what the question is about...\r
f22f941e 212 UINT8 Width; ///< The Size of the Data being saved.\r
213 STRING_REF Prompt; ///< The String Token for the Prompt.\r
214 STRING_REF Help; ///< The string Token for the context-help.\r
2bbaeb0d 215 UINT8 Flags; ///< This is included solely for purposes of interactive/dynamic support.\r
f22f941e 216 UINT16 Key; ///< The value to be passed to caller to identify this particular op-code.\r
9205b2d7 217 UINT16 Minimum;\r
218 UINT16 Maximum;\r
f22f941e 219 UINT16 Step; ///< Zero means manual input. Otherwise, arrow selection is called for.\r
9205b2d7 220 UINT16 Default;\r
61789197 221} FRAMEWORK_EFI_IFR_NUMERIC;\r
222\r
223//\r
9205b2d7 224// There is an interesting twist with regards to Time and Date. This is one of the few items which can accept input\r
1c2f052d
LG
225// from a user, and may or may not need to use storage in the NVRAM space. The decided method for determining\r
226// if NVRAM space will be used (only for a TimeOp or DateOp) is: If .QuestionId == 0 && .Width == 0 (normally an\r
9205b2d7 227// impossibility) then use system resources to store the data away and not NV resources. In other words, the setup\r
228// engine will call gRT->SetTime, and gRT->SetDate for the saving of data, and the values displayed will be from the\r
229// gRT->GetXXXX series of calls.\r
61789197 230//\r
231typedef struct {\r
9205b2d7 232 FRAMEWORK_EFI_IFR_NUMERIC Hour;\r
233 FRAMEWORK_EFI_IFR_NUMERIC Minute;\r
234 FRAMEWORK_EFI_IFR_NUMERIC Second;\r
61789197 235} FRAMEWORK_EFI_IFR_TIME;\r
236\r
237typedef struct {\r
9205b2d7 238 FRAMEWORK_EFI_IFR_NUMERIC Year;\r
239 FRAMEWORK_EFI_IFR_NUMERIC Month;\r
240 FRAMEWORK_EFI_IFR_NUMERIC Day;\r
61789197 241} FRAMEWORK_EFI_IFR_DATE;\r
242\r
243typedef struct {\r
9205b2d7 244 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
2bbaeb0d 245 UINT16 QuestionId;///< The ID designating what the question is about...\r
f22f941e 246 UINT8 Width; ///< The Size of the Data being saved.\r
247 STRING_REF Prompt; ///< The String Token for the Prompt.\r
248 STRING_REF Help; ///< The string Token for the context-help.\r
2bbaeb0d 249 UINT8 Flags; ///< This is included solely for purposes of interactive/dynamic support.\r
f22f941e 250 UINT16 Key; ///< The value to be passed to caller to identify this particular op-code.\r
251 UINT8 MinSize; ///< Minimum allowable sized password.\r
252 UINT8 MaxSize; ///< Maximum allowable sized password.\r
9205b2d7 253 UINT16 Encoding;\r
61789197 254} FRAMEWORK_EFI_IFR_PASSWORD;\r
255\r
256typedef struct {\r
9205b2d7 257 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
2bbaeb0d 258 UINT16 QuestionId; ///< The ID designating what the question is about...\r
1c2f052d 259 UINT8 Width; ///< The Size of the Data being saved.\r
f22f941e 260 STRING_REF Prompt; ///< The String Token for the Prompt.\r
261 STRING_REF Help; ///< The string Token for the context-help.\r
2bbaeb0d 262 UINT8 Flags; ///< This is included solely for purposes of interactive/dynamic support.\r
f22f941e 263 UINT16 Key; ///< The value to be passed to caller to identify this particular op-code.\r
264 UINT8 MinSize; ///< Minimum allowable sized password.\r
265 UINT8 MaxSize; ///< Maximum allowable sized password.\r
61789197 266} FRAMEWORK_EFI_IFR_STRING;\r
267\r
268typedef struct {\r
9205b2d7 269 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
108854b2 270} EFI_IFR_END_ONE_OF;\r
61789197 271\r
272typedef struct {\r
9205b2d7 273 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
274 UINT16 Value;\r
275 UINT16 Key;\r
108854b2 276} EFI_IFR_HIDDEN;\r
61789197 277\r
6d1824fc 278///\r
279/// Inconsistent with specification here:\r
1c2f052d 280/// The following defintion may not comply with Framework Specification HII 0.92. To\r
6d1824fc 281/// keep the inconsistant is for implementation needed.\r
33d228aa 282///@{\r
61789197 283typedef struct {\r
9205b2d7 284 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
285 UINT8 Flags;\r
108854b2 286} EFI_IFR_SUPPRESS;\r
61789197 287\r
288typedef struct {\r
9205b2d7 289 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
290 UINT8 Flags;\r
108854b2 291} EFI_IFR_GRAY_OUT;\r
61789197 292\r
293typedef struct {\r
9205b2d7 294 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
295 STRING_REF Popup;\r
296 UINT8 Flags;\r
108854b2 297} EFI_IFR_INCONSISTENT;\r
61789197 298\r
299typedef struct {\r
9205b2d7 300 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 301 UINT16 QuestionId; ///< The offset into variable storage.\r
302 UINT8 Width; ///< The size of variable storage.\r
303 UINT16 Value; ///< The value to compare against.\r
61789197 304} FRAMEWORK_EFI_IFR_EQ_ID_VAL;\r
305\r
306typedef struct {\r
9205b2d7 307 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 308 UINT16 QuestionId; ///< The offset into variable storage.\r
309 UINT8 Width; ///< The size of variable storage.\r
9205b2d7 310 UINT16 ListLength;\r
311 UINT16 ValueList[1];\r
61789197 312} FRAMEWORK_EFI_IFR_EQ_ID_LIST;\r
313\r
314typedef struct {\r
9205b2d7 315 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 316 UINT16 QuestionId1; ///< The offset into variable storage for first value to compare.\r
317 UINT8 Width; ///< The size of variable storage (must be same for both).\r
318 UINT16 QuestionId2; ///< The offset into variable storage for second value to compare.\r
61789197 319} FRAMEWORK_EFI_IFR_EQ_ID_ID;\r
320\r
321typedef struct {\r
9205b2d7 322 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 323 UINT16 VariableId; ///< The offset into variable storage.\r
324 UINT16 Value; ///< The value to compare against.\r
108854b2 325} EFI_IFR_EQ_VAR_VAL;\r
33d228aa 326///@}\r
61789197 327\r
328typedef struct {\r
9205b2d7 329 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
61789197 330} FRAMEWORK_EFI_IFR_AND;\r
331\r
332typedef struct {\r
9205b2d7 333 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
61789197 334} FRAMEWORK_EFI_IFR_OR;\r
335\r
336typedef struct {\r
9205b2d7 337 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
61789197 338} FRAMEWORK_EFI_IFR_NOT;\r
339\r
340typedef struct {\r
9205b2d7 341 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
108854b2 342} EFI_IFR_END_EXPR, EFI_IFR_END_IF;\r
61789197 343\r
344typedef struct {\r
9205b2d7 345 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
346 UINT16 FormId;\r
347 STRING_REF Prompt;\r
348 STRING_REF Help;\r
349 UINT8 Flags;\r
350 UINT16 Key;\r
108854b2 351} EFI_IFR_SAVE_DEFAULTS;\r
61789197 352\r
353typedef struct {\r
9205b2d7 354 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
355 STRING_REF Help;\r
356 STRING_REF Text;\r
f22f941e 357 STRING_REF TextTwo; ///< Optional text.\r
108854b2 358} EFI_IFR_INVENTORY;\r
61789197 359\r
360typedef struct {\r
9205b2d7 361 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 362 EFI_GUID Guid; ///< GUID for the variable.\r
363 UINT16 VarId; ///< The variable store ID, as referenced elsewhere in the form.\r
364 UINT16 Size; ///< The size of the variable storage.\r
61789197 365} FRAMEWORK_EFI_IFR_VARSTORE;\r
366\r
367typedef struct {\r
9205b2d7 368 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 369 UINT16 VarId; ///< The variable store ID, as referenced elsewhere in the form.\r
108854b2 370} EFI_IFR_VARSTORE_SELECT;\r
61789197 371\r
2bbaeb0d 372///\r
373/// Used for the ideqid VFR statement where two variable stores may be referenced in the\r
374/// same VFR statement.\r
375/// A browser should treat this as an FRAMEWORK_EFI_IFR_VARSTORE_SELECT statement and assume that all following\r
376/// IFR opcodes use the VarId as defined here.\r
377///\r
61789197 378typedef struct {\r
9205b2d7 379 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 380 UINT16 VarId; ///< The variable store ID, as referenced elsewhere in the form.\r
381 UINT16 SecondaryVarId; ///< The variable store ID, as referenced elsewhere in the form.\r
108854b2 382} EFI_IFR_VARSTORE_SELECT_PAIR;\r
61789197 383\r
2bbaeb0d 384///\r
f22f941e 385/// Save defaults and restore defaults have same structure.\r
2bbaeb0d 386///\r
108854b2 387#define EFI_IFR_RESTORE_DEFAULTS EFI_IFR_SAVE_DEFAULTS\r
61789197 388\r
389typedef struct {\r
9205b2d7 390 FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
f22f941e 391 STRING_REF Title; ///< The string token for the banner title.\r
392 UINT16 LineNumber; ///< 1-based line number.\r
393 UINT8 Alignment; ///< Left, center, or right-aligned.\r
108854b2 394} EFI_IFR_BANNER;\r
61789197 395\r
108854b2
LG
396#define EFI_IFR_BANNER_ALIGN_LEFT 0\r
397#define EFI_IFR_BANNER_ALIGN_CENTER 1\r
398#define EFI_IFR_BANNER_ALIGN_RIGHT 2\r
399#define EFI_IFR_BANNER_TIMEOUT 0xFF\r
61789197 400\r
401#pragma pack()\r
402\r
403#endif\r