summaryrefslogtreecommitdiff
path: root/Include/Setup.h
blob: 121d522456bbe1ace2678901e3d5ee56300cf180 (plain)
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
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2010, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************

//**********************************************************************
// $Header: /Alaska/BIN/Core/Include/Setup.h 38    8/28/12 4:20p Artems $
//
// $Revision: 38 $
//
// $Date: 8/28/12 4:20p $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Core/Include/Setup.h $
// 
// 38    8/28/12 4:20p Artems
// [TAG]  		EIP N/A
// [Category]  	New Feature
// [Description]  	Add infrastructure to support runtime registration of
// setup controls callbacks
// [Files]  		Setup.c Setup.h Setup.cif AmiSetupProtocol.c
// AmiSetupProtocol.h
// 
// 37    7/20/12 10:05a Artems
// [TAG]  		EIP93520
// [Category]  	New Feature
// [Description]  	Added new Boot Flow value
// [Files]  		Setup.h
// 
// 36    4/05/11 2:23p Yakovlevs
// [TAG]  		EIP 38174
// [Category]  	New Feature
// [Description]  	Generic support to handle PCI OUT OF RESOURDCES added. 
// [Files]  		PciBus Module.
// 
// 35    3/02/11 12:14p Felixp
// EIP 54862(Enhancement): 
// Setup.h required Setup_SUPPORT to be defined to include AUTOID.h, which
// was a problem for project that do not use Setup eModule but would like
// to keep using AUTOID.h
// The condition of inclusion of the AUTOID.h has been modified. It is
// updated from #if Setup_SUPPORT to 
// #if Setup_SUPPORT || AUTOID_HEADER_SUPPORT.
// To use AutioId.h without Setup eModule AUTOID_HEADER_SUPPORT must be
// defined. It is also necessary to provide a build target that generates
// AutoId.h
// 
// 34    2/09/11 12:13p Felixp
// Minor enhancement(EIP 53617): 
// #include "AMIVfr.h" is replaced with #include <AMIVfr.h> (AMIVfr.h is a
// system header)
// 
// 33    6/09/10 10:41p Felixp
// Setup Customization Support
// 
// 32    2/24/10 8:20a Felixp
// FastBoot field is removed.
// 
// 31    2/10/10 3:50p Felixp
// declaration of CALLBACK_PARAMETERS is updated
// 
// 30    2/05/10 1:58p Felixp
// The definition of the SETUP_ITEM_CALLBACK_HANDLER type is added.
// The declaration of the GetCallbackParameters functions is added.
// 
// 29    2/04/10 5:12p Felixp
// Auto-generated file Build\AutoId.h is included in Setup.h
// 
// 28    12/14/09 3:10p Aaronp
// 
// 27    12/14/09 3:02p Aaronp
// Added macro definition for INTERACTIVE_TEXT for support in UEFI2.1
// 
// 26    10/13/09 6:00p Felixp
// Hii.h renamed to UefiHii.h
// 
// 25    10/09/09 4:28p Felixp
// UEFI 2.1 related updates.
// 
// 24    4/18/08 6:35p Felixp
// 
// 23    1/31/08 11:52a Olegi
// Numlock field added.
// 
// 22    8/31/07 3:04p Felixp
// TSE-specific definitions moved to a separate header AmiVfr.h, which is
// part of AMITSE module.
// 
// 21    15/08/07 12:34p Anandakrishnanl
// Updated the IDE Security Config. structure with HardDisk Security User
// and Master Password status.
// 
// 20    25/06/07 5:31p Anandakrishnanl
// Missed To Fix the Build Error occured after previous Checkin
// 
// 19    22/06/07 12:47p Anandakrishnanl
// HardDisk Security Support Module Added.
// Need ACPI Module and SB Module and under Core\Include we updated
// Setup.h.
// Also New IdeBus bin module.
// 
// 18    6/04/07 6:05p Felixp
// 
// 16    3/13/07 5:21p Pavell
// Support for SETUP_ITK_COMPATIBILITY
// 
// 15    2/12/07 2:33p Felixp
// Definitions to support AMITSE 1.19.1089 features added.
// 
// 14    11/10/06 11:42a Felixp
// clean up
// 
// 13    10/13/06 2:56p Felixp
// 
// 12    1/12/06 9:49a Felixp
// 
// 11    12/05/05 9:30a Felixp
// 
// 10    12/05/05 9:27a Felixp
// 
// 9     12/05/05 9:19a Felixp
// PBA support added
// 
// 8     11/08/05 5:10a Felixp
// Password and AMISilentBoot field removed from SETUP_DATA to be
// complient
// with TSE 1.15.1044
// 
// 7     11/07/05 10:10a Felixp
// support for fast boot (with minimum configuration) added
// 
// 6     10/05/05 7:04p Felixp
// new values (supported by TSE 1.15.1033) added
// 
// 5     9/07/05 2:35p Girim
// Corrected the SYSTEM_ACCESS_GUID value and code cleanup.
// 
// 4     7/14/05 3:54p Felixp
// VFR.h removed.
// Code moved to Setup.h
// 
// 5     5/24/05 3:07p Felixp
// Modular setup framework implemented
// 
//**********************************************************************
//<AMI_FHDR_START>
//
// Name:        Setup.h
//
// Description:
//
//<AMI_FHDR_END>
//**********************************************************************
#ifndef __SETUP__H__
#define __SETUP__H__
#ifdef __cplusplus
extern "C" {
#endif
#include <Token.h>
#ifndef VFRCOMPILE
#if EFI_SPECIFICATION_VERSION>0x20000
#include <UefiHii.h>
#include <Protocol/HiiConfigAccess.h>
#else
#include <Protocol/Hii.h>
#include <Protocol/FormCallBack.h>
#endif//EFI_SPECIFICATION_VERSION
#else//VFRCOMPILE
#include<ControlDefinitions.h>
#endif//VFRCOMPILE
#if Setup_SUPPORT || AUTOID_HEADER_SUPPORT
#include <AutoId.h>
#endif
//**********************************************************************//
//                      Generic Definitions                             //
//**********************************************************************//
#define SETUP_GUID { 0xEC87D643, 0xEBA4, 0x4BB5, 0xA1, 0xE5, 0x3F, 0x3E, 0x36, 0xB2, 0x0D, 0xA9 }

#if EFI_SPECIFICATION_VERSION > 0x20000
#define MAIN_FORM_SET_GUID     { 0x985eee91, 0xbcac, 0x4238, 0x87, 0x78, 0x57, 0xef, 0xdc, 0x93, 0xf2, 0x4e }
#define ADVANCED_FORM_SET_GUID { 0xe14f04fa, 0x8706, 0x4353, 0x92, 0xf2, 0x9c, 0x24, 0x24, 0x74, 0x6f, 0x9f }
#define CHIPSET_FORM_SET_GUID  { 0xadfe34c8, 0x9ae1, 0x4f8f, 0xbe, 0x13, 0xcf, 0x96, 0xa2, 0xcb, 0x2c, 0x5b }
#define BOOT_FORM_SET_GUID     { 0x8b33ffe0, 0xd71c, 0x4f82, 0x9c, 0xeb, 0xc9, 0x70, 0x58, 0xc1, 0x3f, 0x8e }
#define SECURITY_FORM_SET_GUID { 0x981ceaee, 0x931c, 0x4a17, 0xb9, 0xc8, 0x66, 0xc7, 0xbc, 0xfd, 0x77, 0xe1 }
#define EXIT_FORM_SET_GUID     { 0xa43b03dc, 0xc18a, 0x41b1, 0x91, 0xc8, 0x3f, 0xf9, 0xaa, 0xa2, 0x57, 0x13 }
#else
#define MAIN_FORM_SET_GUID SETUP_GUID
#define ADVANCED_FORM_SET_GUID SETUP_GUID
#define CHIPSET_FORM_SET_GUID SETUP_GUID
#define BOOT_FORM_SET_GUID SETUP_GUID
#define SECURITY_FORM_SET_GUID SETUP_GUID
#define EXIT_FORM_SET_GUID SETUP_GUID
#endif

#define MAIN_FORM_SET_CLASS             0x01
#define ADVANCED_FORM_SET_CLASS         0x02
#define CHIPSET_FORM_SET_CLASS          0x04
#define BOOT_FORM_SET_CLASS             0x08
#define SECURITY_FORM_SET_CLASS         0x10
#define EXIT_FORM_SET_CLASS             0x20


#include <SetupDataDefinition.h>

#include <AMIVfr.h>

#ifdef VFRCOMPILE
//**********************************************************************//
//                        VFR Definitions                               //
//**********************************************************************//
#if defined(INVENTORY_SUPPORT) && INVENTORY_SUPPORT == 1
  #define INVENTORY(Name,Value) \
    inventory \
      help  = STRING_TOKEN(STR_EMPTY), \
      text  = Name, \
      text  = Value;
#else
  #define INVENTORY(Name,Value) \
    text \
      help  = STRING_TOKEN(STR_EMPTY), \
      text  = Name, \
      text  = Value, \
      flags = 0, \
      key   = 0;
#endif

#define SUBTITLE(Text) subtitle text = Text;
#define SEPARATOR SUBTITLE(STRING_TOKEN(STR_EMPTY))

#define SYSTEM_ACCESS_KEY_ID            0xF000

#if EFI_SPECIFICATION_VERSION>0x20000
#define INTERACTIVE_TEXT(HelpToken, CaptionToken, ValueToken, Key)\
    text help  = HelpToken,\
    	text  = CaptionToken,\
    	text  = ValueToken;\
    suppressif TRUE;\
        suppressif ideqval AMI_CALLBACK.Value == INTERACTIVE_TEXT_VALUE;\
	    text help  = HelpToken,\
	    	text  = CaptionToken,\
	    	text  = ValueToken,\
			flags = INTERACTIVE, key = Key;\
        endif;\
    endif;
#else
#define INTERACTIVE_TEXT(HelpToken, CaptionToken, ValueToken, Key)\
    text help  = HelpToken,\
        text  = CaptionToken,\
        text  = ValueToken,\
        flags = INTERACTIVE, key = Key;
#endif

#if EFI_SPECIFICATION_VERSION>0x20000
#define SUPPRESS_GRAYOUT_ENDIF endif; endif;
#else
#define SUPPRESS_GRAYOUT_ENDIF endif;
#endif
//definitions of the standard varstores
#if EFI_SPECIFICATION_VERSION>0x20000
#define SETUP_DATA_VARSTORE\
    varstore SETUP_DATA, name = Setup, guid = SETUP_GUID;
#define LANGUAGE_VARSTORE\
    varstore LANGUAGE, key = LANGUAGE_KEY_ID,\
        name = PlatformLang, guid = EFI_GLOBAL_VARIABLE_GUID;
#define LANGUAGE_CODES_VARSTORE\
    varstore LANGUAGE_CODES, key = LANGUAGE_CODES_KEY_ID,\
        name = PlatformLangCodes, guid = EFI_GLOBAL_VARIABLE_GUID;
#else //#if EFI_SPECIFICATION_VERSION>0x20000
#define SETUP_DATA_VARSTORE 
#define LANGUAGE_VARSTORE\
    varstore LANGUAGE, key = LANGUAGE_KEY_ID,\
        name = Lang, guid = EFI_GLOBAL_VARIABLE_GUID;
#define LANGUAGE_CODES_VARSTORE\
    varstore LANGUAGE_CODES, key = LANGUAGE_CODES_KEY_ID,\
        name = LangCodes, guid = EFI_GLOBAL_VARIABLE_GUID;
#endif //#if EFI_SPECIFICATION_VERSION>0x20000
#define SYSTEM_ACCESS_VARSTORE\
    varstore SYSTEM_ACCESS, key = SYSTEM_ACCESS_KEY_ID,\
        name = SystemAccess, guid = SYSTEM_ACCESS_GUID;
#define AMITSESETUP_VARSTORE\
    varstore AMITSESETUP, key = AMITSESETUP_KEY,\
        name = AMITSESetup, guid = AMITSESETUP_GUID;
#define BOOT_MANAGER_VARSTORE\
    varstore BOOT_MANAGER, key = BOOT_MANAGER_KEY_ID,\
        name = BootManager, guid = BOOT_MANAGER_GUID;
#define TIMEOUT_VARSTORE\
    varstore TIMEOUT, key = BOOT_TIMEOUT_KEY_ID,\
        name = Timeout, guid = EFI_GLOBAL_VARIABLE_GUID;
#define BOOT_ORDER_VARSTORE\
    varstore BOOT_ORDER, key = BOOT_ORDER_KEY_ID,\
        name = BootOrder, guid = EFI_GLOBAL_VARIABLE_GUID;
#define NEW_BOOT_OPTION_VARSTORE\
    varstore NEW_BOOT_OPTION, key = NEW_BOOT_OPTION_KEY_ID,\
        name = AddBootOption, guid = ADD_BOOT_OPTION_GUID;
#define DEL_BOOT_OPTION_VARSTORE\
    varstore DEL_BOOT_OPTION, key = DEL_BOOT_OPTION_KEY_ID,\
        name = DelBootOption, guid = DEL_BOOT_OPTION_GUID;
#define LEGACY_DEV_INFO_VARSTORE\
    varstore LEGACY_DEV_INFO, key = LEGACY_DEV_KEY_ID,\
        name = LegacyDev, guid = LEGACY_DEV_ORDER_GUID;
#define LEGACY_GROUP_INFO_VARSTORE\
    varstore LEGACY_GROUP_INFO, key = LEGACY_GROUP_KEY_ID,\
        name = LegacyGroup, guid = LEGACY_DEV_ORDER_GUID;
#define LEGACY_DEV_ORDER_VARSTORE\
    varstore LEGACY_DEV_ORDER, key = LEGACY_ORDER_KEY_ID,\
        name = LegacyDevOrder, guid = LEGACY_DEV_ORDER_GUID;
#define AMI_CALLBACK_VARSTORE\
    varstore AMI_CALLBACK, key = AMI_CALLBACK_KEY_ID,\
        name = AMICallback, guid = AMI_CALLBACK_GUID;
#define BOOT_NOW_COUNT_VARSTORE\
    varstore BOOT_NOW_COUNT, key = BOOT_NOW_COUNT_KEY_ID,\
        name = BootNowCount, guid = BOOT_NOW_COUNT_GUID;
#define EFI_SHELL_VARSTORE\
    varstore EFI_SHELL, key = EFI_SHELL_KEY_ID,\
        name = Shell, guid = EFI_SHELL_FILE_GUID;
#else // #ifdef VFRCOMPILE
//**********************************************************************//
//                        C Definitions                                 //
//**********************************************************************//
//Type of the Setup Callback Handling function registered using 
// ITEM_CALLBACK eLink
typedef EFI_STATUS (SETUP_ITEM_CALLBACK_HANDLER)(
    EFI_HII_HANDLE HiiHandle, 
    UINT16 Class, 
    UINT16 SubClass, 
    UINT16 Key
);

typedef struct{
    UINT16 Class;
    UINT16 SubClass;
    UINT16 Key;
    SETUP_ITEM_CALLBACK_HANDLER *UpdateItem;
} SETUP_ITEM_CALLBACK;

#if EFI_SPECIFICATION_VERSION>0x20000
typedef struct{
    EFI_HII_CONFIG_ACCESS_PROTOCOL *This;
    EFI_BROWSER_ACTION Action;
    EFI_QUESTION_ID KeyValue;
    UINT8 Type;
    EFI_IFR_TYPE_VALUE *Value;
    EFI_BROWSER_ACTION_REQUEST *ActionRequest;
} CALLBACK_PARAMETERS;
#else
typedef struct{
    EFI_FORM_CALLBACK_PROTOCOL *This;
    UINT16 KeyValue;
    EFI_IFR_DATA_ARRAY *Data;
    EFI_HII_CALLBACK_PACKET **Packet;
} CALLBACK_PARAMETERS;
#endif // EFI_SPECIFICATION_VERSION>0x20000

//Defined in the Setup Module
VOID InitString(EFI_HII_HANDLE HiiHandle, STRING_REF StrRef, CHAR16 *sFormat, ...);
CALLBACK_PARAMETERS* GetCallbackParameters();
#endif

//Boot Flow Definitions
// EF152FB4-7B2F-427D-BDB4-7E0A05826E64
#define	BOOT_FLOW_VARIABLE_GUID \
	{ 0xEF152FB4, 0x7B2F, 0x427D, 0xBD, 0xB4, 0x7E, 0x0A, 0x05, 0x82, 0x6E, 0x64 }

#define	BOOT_FLOW_CONDITION_RECOVERY            2
#define	BOOT_FLOW_CONDITION_FIRST_BOOT          4
#define BOOT_FLOW_CONDITION_PCI_OUT_OF_RESOURCE 9
#define	BOOT_FLOW_CONDITION_OS_UPD_CAP 			0xB


/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif
#endif
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2010, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************