]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/Include/Common/MdeModuleHii.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / BaseTools / Source / C / Include / Common / MdeModuleHii.h
CommitLineData
30fdf114
LG
1/** @file\r
2 EDK II specific HII relative definition.\r
3\r
42c808d4 4 Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
30fdf114 5\r
2e351cbe 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
30fdf114 7\r
30fdf114
LG
8**/\r
9\r
10#ifndef _MDEMODULE_HII_H\r
11#define _MDEMODULE_HII_H\r
12\r
13#define NARROW_CHAR 0xFFF0\r
14#define WIDE_CHAR 0xFFF1\r
15#define NON_BREAKING_CHAR 0xFFF2\r
16\r
4234283c
LG
17///\r
18/// State defined for password statemachine .\r
19///\r
30fdf114
LG
20#define BROWSER_STATE_VALIDATE_PASSWORD 0\r
21#define BROWSER_STATE_SET_PASSWORD 1\r
22\r
4234283c
LG
23///\r
24/// GUIDed opcodes defined for EDKII implementation.\r
25///\r
30fdf114
LG
26#define EFI_IFR_TIANO_GUID \\r
27 { 0xf0b1735, 0x87a0, 0x4193, {0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce} }\r
28\r
29#pragma pack(1)\r
30\r
4234283c
LG
31///\r
32/// EDKII implementation extension opcodes, new extension can be added here later.\r
33///\r
30fdf114
LG
34#define EFI_IFR_EXTEND_OP_LABEL 0x0\r
35#define EFI_IFR_EXTEND_OP_BANNER 0x1\r
36#define EFI_IFR_EXTEND_OP_TIMEOUT 0x2\r
37#define EFI_IFR_EXTEND_OP_CLASS 0x3\r
38#define EFI_IFR_EXTEND_OP_SUBCLASS 0x4\r
39\r
4234283c
LG
40///\r
41/// Label opcode.\r
42///\r
30fdf114
LG
43typedef struct _EFI_IFR_GUID_LABEL {\r
44 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
45 ///\r
46 /// EFI_IFR_TIANO_GUID.\r
47 ///\r
30fdf114 48 EFI_GUID Guid;\r
4234283c
LG
49 ///\r
50 /// EFI_IFR_EXTEND_OP_LABEL.\r
51 ///\r
30fdf114 52 UINT8 ExtendOpCode;\r
4234283c
LG
53 ///\r
54 /// Label Number.\r
55 ///\r
30fdf114
LG
56 UINT16 Number;\r
57} EFI_IFR_GUID_LABEL;\r
58\r
59#define EFI_IFR_BANNER_ALIGN_LEFT 0\r
60#define EFI_IFR_BANNER_ALIGN_CENTER 1\r
61#define EFI_IFR_BANNER_ALIGN_RIGHT 2\r
62\r
4234283c
LG
63///\r
64/// Banner opcode.\r
65///\r
30fdf114
LG
66typedef struct _EFI_IFR_GUID_BANNER {\r
67 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
68 ///\r
69 /// EFI_IFR_TIANO_GUID.\r
70 ///\r
30fdf114 71 EFI_GUID Guid;\r
4234283c
LG
72 ///\r
73 /// EFI_IFR_EXTEND_OP_BANNER\r
74 ///\r
75 UINT8 ExtendOpCode;\r
76 EFI_STRING_ID Title; ///< The string token for the banner title.\r
77 UINT16 LineNumber; ///< 1-based line number.\r
78 UINT8 Alignment; ///< left, center, or right-aligned.\r
30fdf114
LG
79} EFI_IFR_GUID_BANNER;\r
80\r
4234283c
LG
81///\r
82/// Timeout opcode.\r
83///\r
30fdf114
LG
84typedef struct _EFI_IFR_GUID_TIMEOUT {\r
85 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
86 ///\r
87 /// EFI_IFR_TIANO_GUID.\r
88 ///\r
30fdf114 89 EFI_GUID Guid;\r
4234283c
LG
90 ///\r
91 /// EFI_IFR_EXTEND_OP_TIMEOUT.\r
92 ///\r
30fdf114 93 UINT8 ExtendOpCode;\r
4234283c 94 UINT16 TimeOut; ///< TimeOut Value.\r
30fdf114
LG
95} EFI_IFR_GUID_TIMEOUT;\r
96\r
97#define EFI_NON_DEVICE_CLASS 0x00\r
98#define EFI_DISK_DEVICE_CLASS 0x01\r
99#define EFI_VIDEO_DEVICE_CLASS 0x02\r
100#define EFI_NETWORK_DEVICE_CLASS 0x04\r
101#define EFI_INPUT_DEVICE_CLASS 0x08\r
102#define EFI_ON_BOARD_DEVICE_CLASS 0x10\r
103#define EFI_OTHER_DEVICE_CLASS 0x20\r
104\r
4234283c
LG
105///\r
106/// Device Class opcode.\r
107///\r
30fdf114
LG
108typedef struct _EFI_IFR_GUID_CLASS {\r
109 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
110 ///\r
111 /// EFI_IFR_TIANO_GUID.\r
112 ///\r
30fdf114 113 EFI_GUID Guid;\r
4234283c
LG
114 ///\r
115 /// EFI_IFR_EXTEND_OP_CLASS.\r
116 ///\r
30fdf114 117 UINT8 ExtendOpCode;\r
4234283c 118 UINT16 Class; ///< Device Class from the above.\r
30fdf114
LG
119} EFI_IFR_GUID_CLASS;\r
120\r
121#define EFI_SETUP_APPLICATION_SUBCLASS 0x00\r
122#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01\r
123#define EFI_FRONT_PAGE_SUBCLASS 0x02\r
124#define EFI_SINGLE_USE_SUBCLASS 0x03\r
125\r
4234283c
LG
126///\r
127/// SubClass opcode\r
128///\r
30fdf114
LG
129typedef struct _EFI_IFR_GUID_SUBCLASS {\r
130 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
131 ///\r
132 /// EFI_IFR_TIANO_GUID.\r
133 ///\r
30fdf114 134 EFI_GUID Guid;\r
4234283c
LG
135 ///\r
136 /// EFI_IFR_EXTEND_OP_SUBCLASS.\r
137 ///\r
30fdf114 138 UINT8 ExtendOpCode;\r
4234283c 139 UINT16 SubClass; ///< Sub Class type from the above.\r
30fdf114
LG
140} EFI_IFR_GUID_SUBCLASS;\r
141\r
4234283c
LG
142///\r
143/// GUIDed opcodes support for framework vfr.\r
144///\r
30fdf114
LG
145#define EFI_IFR_FRAMEWORK_GUID \\r
146 { 0x31ca5d1a, 0xd511, 0x4931, { 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7 } }\r
147\r
4234283c
LG
148///\r
149/// Two extended opcodes are added, and new extensions can be added here later.\r
150/// One is for framework OneOf question Option Key value;\r
151/// another is for framework vareqval.\r
152///\r
30fdf114
LG
153#define EFI_IFR_EXTEND_OP_OPTIONKEY 0x0\r
154#define EFI_IFR_EXTEND_OP_VAREQNAME 0x1\r
4234283c
LG
155\r
156///\r
157/// Store the framework vfr option key value.\r
158///\r
30fdf114
LG
159typedef struct _EFI_IFR_GUID_OPTIONKEY {\r
160 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
161 ///\r
162 /// EFI_IFR_FRAMEWORK_GUID.\r
163 ///\r
30fdf114 164 EFI_GUID Guid;\r
4234283c
LG
165 ///\r
166 /// EFI_IFR_EXTEND_OP_OPTIONKEY.\r
167 ///\r
30fdf114 168 UINT8 ExtendOpCode;\r
4234283c
LG
169 ///\r
170 /// OneOf Questiond ID binded by OneOf Option.\r
171 ///\r
30fdf114 172 EFI_QUESTION_ID QuestionId;\r
4234283c
LG
173 ///\r
174 /// The OneOf Option Value.\r
175 ///\r
30fdf114 176 EFI_IFR_TYPE_VALUE OptionValue;\r
4234283c
LG
177 ///\r
178 /// The Framework OneOf Option Key Value.\r
179 ///\r
180 UINT16 KeyValue;\r
30fdf114
LG
181} EFI_IFR_GUID_OPTIONKEY;\r
182\r
4234283c
LG
183///\r
184/// Store the framework vfr vareqval name number.\r
185///\r
30fdf114
LG
186typedef struct _EFI_IFR_GUID_VAREQNAME {\r
187 EFI_IFR_OP_HEADER Header;\r
4234283c
LG
188 ///\r
189 /// EFI_IFR_FRAMEWORK_GUID.\r
190 ///\r
30fdf114 191 EFI_GUID Guid;\r
4234283c
LG
192 ///\r
193 /// EFI_IFR_EXTEND_OP_VAREQNAME.\r
194 ///\r
30fdf114 195 UINT8 ExtendOpCode;\r
4234283c
LG
196 ///\r
197 /// Question ID of the Numeric Opcode created.\r
198 ///\r
30fdf114 199 EFI_QUESTION_ID QuestionId;\r
4234283c
LG
200 ///\r
201 /// For vareqval (0x100), NameId is 0x100.\r
202 /// This value will convert to a Unicode String following this rule;\r
203 /// sprintf(StringBuffer, "%d", NameId) .\r
fb0b35e0 204 /// The Unicode String will be used as a EFI Variable Name.\r
4234283c
LG
205 ///\r
206 UINT16 NameId;\r
30fdf114
LG
207} EFI_IFR_GUID_VAREQNAME;\r
208\r
42c808d4 209///\r
fb0b35e0 210/// EDKII implementation extension GUID, used to indicate there are bit fields in the varstore.\r
42c808d4
DB
211///\r
212#define EDKII_IFR_BIT_VARSTORE_GUID \\r
213 { 0x82DDD68B, 0x9163, 0x4187, {0x9B, 0x27, 0x20, 0xA8, 0xFD, 0x60 ,0xA7, 0x1D}}\r
214\r
215///\r
fb0b35e0 216/// EDKII implementation extension flags, used to indicate the display style and bit width for bit filed storage.\r
42c808d4
DB
217/// Two high bits for display style and the low six bits for bit width.\r
218///\r
219#define EDKII_IFR_DISPLAY_BIT 0xC0\r
220#define EDKII_IFR_DISPLAY_INT_DEC_BIT 0x00\r
221#define EDKII_IFR_DISPLAY_UINT_DEC_BIT 0x40\r
222#define EDKII_IFR_DISPLAY_UINT_HEX_BIT 0x80\r
223\r
224#define EDKII_IFR_NUMERIC_SIZE_BIT 0x3F\r
225\r
30fdf114
LG
226#pragma pack()\r
227\r
4234283c
LG
228extern EFI_GUID gEfiIfrTianoGuid;\r
229extern EFI_GUID gEfiIfrFrameworkGuid;\r
42c808d4 230extern EFI_GUID gEdkiiIfrBitVarStoreGuid;\r
4234283c 231\r
30fdf114
LG
232#endif\r
233\r