aboutsummaryrefslogtreecommitdiff
path: root/src/include/ipxe/efi/Guid/MdeModuleHii.h
blob: 102025ac8c00cd15f149fafd169fbef3efbd402f (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
/** @file
  EDKII extented HII IFR guid opcodes.

Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __MDEMODULE_HII_H__
#define __MDEMODULE_HII_H__

FILE_LICENCE ( BSD2_PATENT );

#define NARROW_CHAR        0xFFF0
#define WIDE_CHAR          0xFFF1
#define NON_BREAKING_CHAR  0xFFF2

///
/// State defined for password statemachine .
///
#define BROWSER_STATE_VALIDATE_PASSWORD  0
#define BROWSER_STATE_SET_PASSWORD       1

///
/// GUIDed opcodes defined for EDKII implementation.
///
#define EFI_IFR_TIANO_GUID \
  { 0xf0b1735, 0x87a0, 0x4193, {0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce} }

#pragma pack(1)

///
/// EDKII implementation extension opcodes, new extension can be added here later.
///
#define EFI_IFR_EXTEND_OP_LABEL     0x0
#define EFI_IFR_EXTEND_OP_BANNER    0x1
#define EFI_IFR_EXTEND_OP_TIMEOUT   0x2
#define EFI_IFR_EXTEND_OP_CLASS     0x3
#define EFI_IFR_EXTEND_OP_SUBCLASS  0x4

///
/// Label opcode.
///
typedef struct _EFI_IFR_GUID_LABEL {
  EFI_IFR_OP_HEADER    Header;
  ///
  /// EFI_IFR_TIANO_GUID.
  ///
  EFI_GUID             Guid;
  ///
  /// EFI_IFR_EXTEND_OP_LABEL.
  ///
  UINT8                ExtendOpCode;
  ///
  /// Label Number.
  ///
  UINT16               Number;
} EFI_IFR_GUID_LABEL;

#define EFI_IFR_BANNER_ALIGN_LEFT    0
#define EFI_IFR_BANNER_ALIGN_CENTER  1
#define EFI_IFR_BANNER_ALIGN_RIGHT   2

///
/// Banner opcode.
///
typedef struct _EFI_IFR_GUID_BANNER {
  EFI_IFR_OP_HEADER    Header;
  ///
  /// EFI_IFR_TIANO_GUID.
  ///
  EFI_GUID             Guid;
  ///
  /// EFI_IFR_EXTEND_OP_BANNER
  ///
  UINT8                ExtendOpCode;
  EFI_STRING_ID        Title;       ///< The string token for the banner title.
  UINT16               LineNumber;  ///< 1-based line number.
  UINT8                Alignment;   ///< left, center, or right-aligned.
} EFI_IFR_GUID_BANNER;

///
/// Timeout opcode.
///
typedef struct _EFI_IFR_GUID_TIMEOUT {
  EFI_IFR_OP_HEADER    Header;
  ///
  /// EFI_IFR_TIANO_GUID.
  ///
  EFI_GUID             Guid;
  ///
  /// EFI_IFR_EXTEND_OP_TIMEOUT.
  ///
  UINT8                ExtendOpCode;
  UINT16               TimeOut;      ///< TimeOut Value.
} EFI_IFR_GUID_TIMEOUT;

#define EFI_NON_DEVICE_CLASS       0x00
#define EFI_DISK_DEVICE_CLASS      0x01
#define EFI_VIDEO_DEVICE_CLASS     0x02
#define EFI_NETWORK_DEVICE_CLASS   0x04
#define EFI_INPUT_DEVICE_CLASS     0x08
#define EFI_ON_BOARD_DEVICE_CLASS  0x10
#define EFI_OTHER_DEVICE_CLASS     0x20

///
/// Device Class opcode.
///
typedef struct _EFI_IFR_GUID_CLASS {
  EFI_IFR_OP_HEADER    Header;
  ///
  /// EFI_IFR_TIANO_GUID.
  ///
  EFI_GUID             Guid;
  ///
  /// EFI_IFR_EXTEND_OP_CLASS.
  ///
  UINT8                ExtendOpCode;
  UINT16               Class;          ///< Device Class from the above.
} EFI_IFR_GUID_CLASS;

#define EFI_SETUP_APPLICATION_SUBCLASS    0x00
#define EFI_GENERAL_APPLICATION_SUBCLASS  0x01
#define EFI_FRONT_PAGE_SUBCLASS           0x02
#define EFI_SINGLE_USE_SUBCLASS           0x03

///
/// SubClass opcode
///
typedef struct _EFI_IFR_GUID_SUBCLASS {
  EFI_IFR_OP_HEADER    Header;
  ///
  /// EFI_IFR_TIANO_GUID.
  ///
  EFI_GUID             Guid;
  ///
  /// EFI_IFR_EXTEND_OP_SUBCLASS.
  ///
  UINT8                ExtendOpCode;
  UINT16               SubClass;     ///< Sub Class type from the above.
} EFI_IFR_GUID_SUBCLASS;

///
/// GUIDed opcodes support for framework vfr.
///
#define EFI_IFR_FRAMEWORK_GUID \
  { 0x31ca5d1a, 0xd511, 0x4931, { 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7 } }

///
/// Two extended opcodes are added, and new extensions can be added here later.
/// One is for framework OneOf question Option Key value;
/// another is for framework vareqval.
///
#define EFI_IFR_EXTEND_OP_OPTIONKEY  0x0
#define EFI_IFR_EXTEND_OP_VAREQNAME  0x1

///
/// Store the framework vfr option key value.
///
typedef struct _EFI_IFR_GUID_OPTIONKEY {
  EFI_IFR_OP_HEADER     Header;
  ///
  /// EFI_IFR_FRAMEWORK_GUID.
  ///
  EFI_GUID              Guid;
  ///
  /// EFI_IFR_EXTEND_OP_OPTIONKEY.
  ///
  UINT8                 ExtendOpCode;
  ///
  /// OneOf Questiond ID binded by OneOf Option.
  ///
  EFI_QUESTION_ID       QuestionId;
  ///
  /// The OneOf Option Value.
  ///
  EFI_IFR_TYPE_VALUE    OptionValue;
  ///
  /// The Framework OneOf Option Key Value.
  ///
  UINT16                KeyValue;
} EFI_IFR_GUID_OPTIONKEY;

///
/// Store the framework vfr vareqval name number.
///
typedef struct _EFI_IFR_GUID_VAREQNAME {
  EFI_IFR_OP_HEADER    Header;
  ///
  /// EFI_IFR_FRAMEWORK_GUID.
  ///
  EFI_GUID             Guid;
  ///
  /// EFI_IFR_EXTEND_OP_VAREQNAME.
  ///
  UINT8                ExtendOpCode;
  ///
  /// Question ID of the Numeric Opcode created.
  ///
  EFI_QUESTION_ID      QuestionId;
  ///
  /// For vareqval (0x100), NameId is 0x100.
  /// This value will convert to a Unicode String following this rule;
  ///            sprintf(StringBuffer, "%d", NameId) .
  /// The the Unicode String will be used as a EFI Variable Name.
  ///
  UINT16               NameId;
} EFI_IFR_GUID_VAREQNAME;

///
/// EDKII implementation extension GUID, used to indaicate there are bit fields in the varstore.
///
#define EDKII_IFR_BIT_VARSTORE_GUID \
  {0x82DDD68B, 0x9163, 0x4187, {0x9B, 0x27, 0x20, 0xA8, 0xFD, 0x60,0xA7, 0x1D}}

///
/// EDKII implementation extension flags, used to indaicate the disply style and bit width for bit filed storage.
/// Two high bits for display style and the low six bits for bit width.
///
#define EDKII_IFR_DISPLAY_BIT           0xC0
#define EDKII_IFR_DISPLAY_INT_DEC_BIT   0x00
#define EDKII_IFR_DISPLAY_UINT_DEC_BIT  0x40
#define EDKII_IFR_DISPLAY_UINT_HEX_BIT  0x80

#define EDKII_IFR_NUMERIC_SIZE_BIT  0x3F

#pragma pack()

extern EFI_GUID  gEfiIfrTianoGuid;
extern EFI_GUID  gEfiIfrFrameworkGuid;
extern EFI_GUID  gEdkiiIfrBitVarstoreGuid;

#endif