1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
|
//*****************************************************************//
//*****************************************************************//
//*****************************************************************//
//** **//
//** (C)Copyright 2013, American Megatrends, Inc. **//
//** **//
//** All Rights Reserved. **//
//** **//
//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **//
//** **//
//** Phone (770)-246-8600 **//
//** **//
//*****************************************************************//
//*****************************************************************//
//*****************************************************************//
// $Archive: /Alaska/BIN/Modules/AMITSE2_0/AMITSE/Inc/setupdata.h $
//
// $Author: Arunsb $
//
// $Revision: 10 $
//
// $Date: 4/02/13 8:01a $
//
//*****************************************************************//
//*****************************************************************//
// Revision History
// ----------------
// $Log: /Alaska/BIN/Modules/AMITSE2_0/AMITSE/Inc/setupdata.h $
//
// 10 4/02/13 8:01a Arunsb
// [TAG] EIP113919
// [Category] Improvement
// [Description] Provide support for EFI_IFR_WRITE, EFI_IFR_READ,
// EFI_IFR_GET, EFI_IFR_SET and EFI_IFR_MAP_OP.
// [Files] Setupdata.h, ctrlcond.c, expression.c, hii.c and parse.c
//
// 9 3/25/13 8:08a Premkumara
// [TAG] EIP105468
// [Category] New Feature
// [Description] Support for EFI_IFR_REFRESH_ID opcode for Offline
// Parsing
// [Files] Parse.c, Hii.c, Setupdata.h
//
// 8 10/18/12 5:31a Arunsb
// Updated for 2.16.1235 QA submission
//
// 9 10/10/12 12:23p Arunsb
// Synched the source for v2.16.1232 backup with Aptio
//
// 7 1/20/12 12:46a Rajashakerg
// [TAG] EIP80426
// [Category] Improvement
// [Description] When restoring settings, avoid accessing the varstore
// for text controls
// [Files] uefi21wapper.c, Setupdata.h.
//
// 6 6/23/11 3:38p Rajashakerg
// [TAG] EIP55762, 58925, 59971
// [Category] New Feature
// [Description] Support REF2,REF3 and REF4 in AMITSE
// Support direct form navigation path
// Improper layout of controls in the root page when Dynamic pages are
// added using the Legacy Setup Style
// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c,
// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c,
// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c,
// Uefi21Wrapper.c, Parse.c Hii.c
//
// 5 4/29/11 4:28p Arunsb
// For 2.13 public patch release IFR RefX feature is omitted
//
// 3 2/10/11 12:31p Blaines
// [TAG] - EIP 53146
// [Category]- New Feature
// [Description] -Add the support to Move the Dynamic IFR Pages under
// subpages. It should be customizable to move around.
//
// 2 6/17/10 2:17p Madhans
// Refer Changelog.log.
//
// 1 2/19/10 12:58p Madhans
// Uploaded for TSE 2.01. Refer Changelog.log for File change history.
//
// 4 2/19/10 7:59a Mallikarjunanv
// updated the year in copyright message
//
// 3 2/18/10 7:56p Madhans
// AMI Special Var Attribute
//
// 2 1/09/10 2:34a Mallikarjunanv
// Updated TSE2.01 Release sources with coding standards
//
// 1 10/28/09 5:32p Madhans
//
// 3 6/16/09 2:16p Presannar
// Added File Headers for Header Files
//
// 2 6/12/09 7:44p Presannar
// Initial implementation of coding standards for AMITSE2.0
//
// 1 6/04/09 8:05p Madhans
//
// 1 4/28/09 11:06p Madhans
// Tse 2.0 Code complete Checkin.
//
// 4 4/28/09 9:40p Madhans
// Tse 2.0 Code complete Checkin.
//
// 3 3/31/09 4:12p Madhans
//
// 2 1/30/09 6:06p Madhans
// Function headers added.
//
// 1 12/18/08 7:59p Madhans
// Intial version of TSE Lite sources
//*****************************************************************//
//*****************************************************************//
//<AMI_FHDR_START>
//----------------------------------------------------------------------------
//
// Name: setupdata.h
//
// Description: Header file for setup data
//
//----------------------------------------------------------------------------
//<AMI_FHDR_END>
#ifndef _SETUPDATA_H_
#define _SETUPDATA_H_
// forward declarations
typedef struct _SETUP_PKG SETUP_PKG;
typedef struct _SCREEN_INFO SCREEN_INFO;
typedef struct _PAGE_LIST PAGE_LIST;
typedef struct _PAGE_INFO PAGE_INFO;
typedef struct _PAGE_FLAGS PAGE_FLAGS;
typedef struct _CONTROL_LIST CONTROL_LIST;
typedef struct _CONTROL_INFO CONTROL_INFO;
typedef struct _CONTROL_FLAGS CONTROL_FLAGS;
typedef struct _VARIABLE_LIST VARIABLE_LIST;
typedef struct _VARIABLE_INFO VARIABLE_INFO;
typedef struct _HPK_INFO HPK_INFO;
typedef struct _GUID_LIST GUID_LIST;
typedef struct _GUID_FLAGS GUID_FLAGS;
typedef struct _GUID_INFO GUID_INFO;
typedef struct _PAGE_ID_LIST PAGE_ID_LIST;
typedef struct _PAGE_ID_INFO PAGE_ID_INFO;
#define VARIABLE_NAME_LENGTH 40
// Control types
#define CONTROL_TYPE_NULL 0x0000
#define CONTROL_TYPE_SUBMENU 0x0001
#define CONTROL_TYPE_LABEL 0x0002
#define CONTROL_TYPE_TEXT 0x0003
#define CONTROL_TYPE_DATE 0x0004
#define CONTROL_TYPE_TIME 0x0005
#define CONTROL_TYPE_POPUPSEL 0x0006
#define CONTROL_TYPE_MEMO 0x0008
#define CONTROL_TYPE_MSGBOX 0x0009
#define CONTROL_TYPE_CHECKBOX 0x000A
#define CONTROL_TYPE_NUMERIC 0x000B
#define CONTROL_TYPE_EDIT 0x000C
#define CONTROL_TYPE_PASSWORD 0x000D
#define CONTROL_TYPE_MENU 0x000E
#define CONTROL_TYPE_ORDERED_LIST 0x000F
#define CONTROL_TYPE_POPUPEDIT 0x0010
#define CONTROL_TYPE_VARSTORE_SELECT 0x0011
#define CONTROL_TYPE_VARSTORE_SELECT_PAIR 0x0012
#define CONTROL_TYPE_POPUP_STRING 0x0013
#define CONTROL_TYPE_VARSTORE 0x0014
#define INCONSISTENT_IF 0x0015
// UEFI 2.1 Defines
#define NO_SUBMIT_IF 0x0016
#define DISABLE_IF 0x0017
#define CONTROL_TYPE_VARSTORE_NAME_VALUE 0x0018
#define CONTROL_TYPE_VARSTORE_EFI 0x0019
#define CONTROL_TYPE_VARSTORE_DEVICE 0x001A
#define CONTROL_TYPE_ACTION 0x001B
#define CONTROL_TYPE_RESET 0x001C
#define CONTROL_TYPE_RULE 0x001D
#define CONTROL_TYPE_REF2 0x001E // EIP 80426:When restoring settings, avoid accessing the varstore for text controls
// Used in Edit.c
#ifndef IFR_PASSWORD_OP
#define IFR_PASSWORD_OP 0x08
#endif
#pragma warning( disable : 4201 )
#pragma pack(8)
struct _SETUP_PKG
{
CHAR8 PackageSignature[4]; //'$SPF' Signature to identify the package file
UINT16 StructureRevision; //0x0100 Revision of this structure
UINT32 PackageVersion; //0x00000100 Version number of the structure data
UINT8 Reserved[6]; //0 Reserved for future expansion
EFI_GUID PackageGuid; //Varies EFI_GUID for the entire setup package
UINT32 PackageVariable; //0x00000001 ID of the default GUID-Name variable store for this package
UINT32 PackageScreen; //Varies Offset to start of SCREEN_INFO structure
UINT32 PackagePageList; //Varies Offset to start of PAGE_LIST structure
UINT32 PackageControlOffset; //Varies Offset to start of controls
UINT32 PackageVariableList; //Varies Offset to start of VARIABLE_LIST structure
UINT32 PackageHpkData; //Varies Offset to source HPK info that we need
UINT32 PackageGuidList; //Varies List of OEM GUIDs requiring application launch
UINT32 PackagePageIdList; //Varies Offset to list of Page ID triplets guid class subclass
UINT32 PackageIfrData; //Varies IFR data that is used to build our 'static' pages
};
struct _SCREEN_INFO //Structure containing global information used by all pages
{
union {
/*EFI_HII_HANDLE*/VOID * MainHandle; //Varies HII Handle to the formset that contains the global screen info
UINT8 res[8];
};
UINT16 MainTitle; //Varies Token for title string
UINT16 MainCopyright; //Varies Token for copyright string
UINT16 MainHelpTitle; //Varies Token for help 'window' title
UINT16 MainMenuCount; //Varies Number of entries in main menu (0 = no main menu)
UINT16 MainNavCount; //Varies Number of nav help strings on the page
//UINT16 MenuEntries[]; //Varies Tokens for menu strings
//UINT16 MainNavToken[]; //Varies Tokens for all navigational help strings
};
struct _PAGE_LIST //This is the listing of all the pages in setup
{
UINT32 PageCount; //Varies Number of pages in Setup
UINT32 PageList[1]; //Varies Offsets to each of the page structures
};
struct _PAGE_FLAGS //Structure containing the attributes global to a page
{
UINT32 PageVisible : 1; //TRUE Controls whether or not this page is visible
UINT32 PageHelpVisible : 1; //TRUE Controls whether or not help is visible on this page
UINT32 PageDisableHotKeys : 1; //FALSE Controls whether globals hot keys are enabled for this page
UINT32 PageRefresh : 1; //TRUE Controls whether the page is refreshable
UINT32 PageModal : 1; //TRUE Controls whether the page is Modal
UINT32 PageDynamic : 1; //TRUE Controls whether the page is Dynamic
UINT32 PageStdMap : 1; // set 0 if Form map is not found otherwise set 1
UINT32 Reserved : 25; //0 Reserved for future use
};
struct _CONTROL_LIST //Structure containing the offsets of all the control data
{
UINT32 ControlCount; //Varies Number of controls in this list
UINT32 ControlList[1]; //Varies Offsets to each of the control structures
};
struct _PAGE_INFO //Structure containing the layout of the page
{
union {
/*EFI_HII_HANDLE*/VOID * PageHandle; //Varies HII Handle to the formset that contains this control
UINT8 res[8];
};
UINT16 PageIdIndex; //varies Index in to PageIdList triplets
UINT16 PageFormID; //Varies Form ID within the formset for this page
UINT16 PageTitle; //Varies Allows a page to override the main title bar
UINT16 PageSubTitle; //Varies Token for the subtitle string for this page
UINT16 PageID; //Varies unique ID for this page
UINT16 PageParentID; //Varies Identify this page's parent page
PAGE_FLAGS PageFlags; //3 Various attributes for a specific page
UINT32 PageVariable; //Varies Overrides the variable ID for this page (0 = use default)
CONTROL_LIST PageControls; //Varies Listing of controls for this page
};
struct _CONTROL_FLAGS //Structure containing the attributes for a specific control
{
UINT32 ControlVisible : 1; //TRUE Whether or not a control is shown to the user
#define CONTROL_ACCESS_DEFAULT 0 //Do not override VFR
#define CONTROL_ACCESS_EXT_USER 1 //Admin - Editable; User - Editable;
#define CONTROL_ACCESS_USER 2 //Admin - Editable; User - Visible but not editable;
#define CONTROL_ACCESS_ADMIN 3 //Admin - Editable; User - Invisible;
UINT32 ControlAccess : 2; //0 User access to control
UINT32 ControlReset : 1; //FALSE Whether or not changing a value requires a system reset
UINT32 ControlReadOnly : 1; //FALSE Weather or not the control is read only.
UINT32 ControlInteractive : 1; //FALSE Weather the Control is interactive or not
UINT32 ControlEvaluateDefault : 1; // FALSE If set Default is obtained by expression evaluation
UINT32 Reserved1 : 1; //0 Reserved for future use
UINT32 ControlRefresh : 8; //0 Refresh timer (in 0.1s intervals) (0 = refresh disabled)
UINT32 RefreshID : 1; //TRUE or FALSE to denote RefreshID status
UINT32 ControlRWEvaluate : 1; // set 0 if read/write expression is not found otherwise set 1
UINT32 Reserved2 : 14; //0 Reserved for future use
};
struct _CONTROL_INFO //Structure containing control data
{
union {
/*EFI_HII_HANDLE*/VOID * ControlHandle; //Varies HII Handle to the formset that contains this control
UINT8 res[8];
};
UINT32 ControlVariable; //Varies Overrides the variable ID for this control (0 = use default)
union
{
UINT32 ControlConditionalVariable[2]; //Varies Overrides the condition variable ID for this control (0 = use default)
struct
{
UINT16 ControlKey; // Varies Variable unique identifier same as QuestionID in UEFI2.1
UINT16 DevicePathId; // Device Path as specified by VarStoreDevicePath nested within the scope of this question.
UINT8 DefaultStoreCount; // Constant No of Defaults (n) values other than Optimal and Failsafe for that control.
//EIP# 55762
UINT8 Reserved[1]; // Reserved space for use in future.
UINT16 DestQuestionID; // This is for EFI_IFR_REFX support
//EIP# 55762
};
};
UINT16 ControlType; //Varies Type of the control on the page
UINT16 ControlPageID; //Varies Page ID that contains this control
UINT16 ControlDestPageID; //FFFFh Only needed for controls of type CONTROL_TYPE_SUBMENU
CONTROL_FLAGS ControlFlags; //1 Various attributes for a specific control
UINT16 ControlHelp; //Varies Token for help string for this control
UINT16 ControlLabel; //Varies One-based label number that this control is 'linked to'
UINT16 ControlIndex; //Varies Zero-based control number from the label, not formset
UINT16 ControlLabelCount; //Varies number of opcodes associated with this control's label
union {
VOID * ControlPtr; //Varies Pointer to control data in HII
UINT64 res1;
};
union {
VOID * ControlConditionalPtr; //Varies Pointer to control condition data in HII
UINT64 res2;
};
UINT16 ControlDataLength; //Varies Length of HII data for control
UINT16 ControlDataWidth; //Varies Width of data (in bytes) for this control
UINT16 QuestionId; //Varies Offset for data of this control in the Variable
//UINT8 ControlFailsafeValue; //Varies Used when user selects load failsafe value
//UINT8 ControlOptimalValue; //Varies Used when user selects load optimal value
};
struct _VARIABLE_LIST
{
UINT32 VariableCount; //Varies Number of GUID-Name pairs in this list
UINT32 VariableList[1]; //Varies Offsets to each of the variable structures
};
struct _VARIABLE_INFO //Structure containing GUID-Name pairs for variable access
{
EFI_GUID VariableGuid; //Varies EFI_GUID for the NVRAM variable store for this data
CHAR16 VariableName[VARIABLE_NAME_LENGTH]; //Varies Variable store name
UINT32 VariableAttributes; //Varies Attributes of the variable
UINT32 VariableID; //Varies unique variable number, 0x0FFFF for our own variables.
#define VARIABLE_ATTRIBUTE_VARSTORE 0x0000 // Buffer varstore accessed via Config. Access protocol exposed by the driver.
#define VARIABLE_ATTRIBUTE_EFI_VARSTORE 0x1000 // EFI Variable, GetVeriable and SetVariable Can be used.
#define VARIABLE_ATTRIBUTE_NAMEVALUE 0x2000 // Namevalue varstore accessed via Config. Access protocol exposed by the driver.
#define AMI_SPECIAL_NO_DEFAULTS 0x00000001
#define AMI_SPECIAL_VARIABLE_NO_SET 0x00000002
#define AMI_SPECIAL_VARIABLE_NO_GET 0x00000004
UINT32 ExtendedAttibutes; //Varies Extended Attributes to identify type of Variable.
UINT16 VariableNameId; //Varies Id for the Variable Name
UINT8 Reserved[2]; // Reserved space for use in future.
union
{
/*EFI_HII_HANDLE*/VOID* VariableHandle; //Varies HII Handle to the formset that contains this VarStore
UINT64 res;
};
UINT16 VariableSize; //Varies The size of Buffer Varstore
};
struct _HPK_INFO
{
UINT32 Length;
UINT16 Class;
UINT16 SubClass;
};
struct _GUID_LIST
{
UINT32 GuidCount; //Varies Number of GUID-Name pairs in this list
UINT32 GuidList[1]; //Varies Offsets to each of the variable structures
};
struct _GUID_FLAGS
{
UINT32 GuidLaunchCallback : 1;
UINT32 GuidLaunchGuid : 1;
UINT32 GuidLaunchFilename : 1;
UINT32 GuidLaunchCallbackUpdateTemplate : 1;
UINT32 Reserved : 28;
};
struct _GUID_INFO
{
EFI_GUID GuidValue;
CHAR16 GuidName[VARIABLE_NAME_LENGTH];
GUID_FLAGS GuidFlags;
UINT32 GuidKey;
};
struct _PAGE_ID_LIST
{
UINT32 PageIdCount; //Varies Number of guid class subclass triplets
UINT32 PageIdList[1]; //Varies Offsets to each of the PageId structures
};
struct _PAGE_ID_INFO //Structure containing page id triplets guid class and subclass
{
EFI_GUID PageGuid; //Varies EFI_GUID for the pages
UINT16 PageClass; //Varies Class for the pages
UINT16 PageSubClass; //Varies SubClass for the pages
};
#pragma pack()
#endif /* _SETUPDATA_H_ */
//**********************************************************************
//**********************************************************************
//** **
//** (C)Copyright 1985-2013, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//**********************************************************************
//**********************************************************************
|