summaryrefslogtreecommitdiffstats
path: root/src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h')
-rw-r--r--src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h221
1 files changed, 156 insertions, 65 deletions
diff --git a/src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h b/src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h
index 2a25c491..c6755173 100644
--- a/src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h
+++ b/src/include/gpxe/efi/Uefi/UefiInternalFormRepresentation.h
@@ -23,8 +23,6 @@
///
/// The following types are currently defined:
///
-typedef UINT32 RELOFST;
-
typedef VOID* EFI_HII_HANDLE;
typedef CHAR16* EFI_STRING;
typedef UINT16 EFI_IMAGE_ID;
@@ -32,45 +30,31 @@ typedef UINT16 EFI_QUESTION_ID;
typedef UINT16 EFI_STRING_ID;
typedef UINT16 EFI_FORM_ID;
typedef UINT16 EFI_VARSTORE_ID;
+
typedef UINT16 EFI_DEFAULT_ID;
+
typedef UINT32 EFI_HII_FONT_STYLE;
#pragma pack(1)
+//
+// Definitions for Package Lists and Package Headers
+// Section 27.3.1
+//
///
-/// HII package list
+/// The header found at the start of each package list.
///
typedef struct {
EFI_GUID PackageListGuid;
UINT32 PackageLength;
} EFI_HII_PACKAGE_LIST_HEADER;
-/**
-
- Each package starts with a header, as defined above, which
- indicates the size and type of the package. When added to a
- pointer pointing to the start of the header, Length points at
- the next package. The package lists form a package list when
- concatenated together and terminated with an
- EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The
- type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII
- packages, whose contents are determined by the Guid. The range
- of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN
- through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system
- firmware implementers.
-
- @param Length The size of the package in bytes.
-
- @param Type The package type. See EFI_HII_PACKAGE_TYPE_x,
- below.
-
- @param Data The package data, the format of which is
- determined by Type.
-
-**/
+///
+/// The header found at the start of each package.
+///
typedef struct {
UINT32 Length:24;
UINT32 Type:8;
@@ -78,32 +62,33 @@ typedef struct {
} EFI_HII_PACKAGE_HEADER;
//
-// EFI_HII_PACKAGE_TYPE_x.
+// Value of HII package type
//
#define EFI_HII_PACKAGE_TYPE_ALL 0x00
#define EFI_HII_PACKAGE_TYPE_GUID 0x01
-#define EFI_HII_PACKAGE_FORM 0x02
-#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x03
+#define EFI_HII_PACKAGE_FORMS 0x02
#define EFI_HII_PACKAGE_STRINGS 0x04
#define EFI_HII_PACKAGE_FONTS 0x05
#define EFI_HII_PACKAGE_IMAGES 0x06
#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
#define EFI_HII_PACKAGE_DEVICE_PATH 0x08
+#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09
#define EFI_HII_PACKAGE_END 0xDF
#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
//
-// Simplified Font Package
+// Definitions for Simplified Font Package
+// Section 27.3.2
//
-#define EFI_GLYPH_HEIGHT 19
-#define EFI_GLYPH_WIDTH 8
//
// Contents of EFI_NARROW_GLYPH.Attributes
//
#define EFI_GLYPH_NON_SPACING 0x01
#define EFI_GLYPH_WIDE 0x02
+#define EFI_GLYPH_HEIGHT 19
+#define EFI_GLYPH_WIDTH 8
typedef struct {
CHAR16 UnicodeWeight;
@@ -119,7 +104,10 @@ typedef struct {
UINT8 Pad[3];
} EFI_WIDE_GLYPH;
-
+///
+/// A simplified font package consists of a font header
+/// followed by a series of glyph structures.
+///
typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT16 NumberOfNarrowGlyphs;
@@ -129,9 +117,13 @@ typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
} EFI_HII_SIMPLE_FONT_PACKAGE_HDR;
//
-// Font Package
+// Definitions for Font Package
+// Section 27.3.3
//
+//
+// Value for font style
+//
#define EFI_HII_FONT_STYLE_NORMAL 0x00000000
#define EFI_HII_FONT_STYLE_BOLD 0x00000001
#define EFI_HII_FONT_STYLE_ITALIC 0x00000002
@@ -149,6 +141,12 @@ typedef struct _EFI_HII_GLYPH_INFO {
INT16 AdvanceX;
} EFI_HII_GLYPH_INFO;
+///
+/// The fixed header consists of a standard record header and
+/// then the character values in this section, the flags
+/// (including the encoding method) and the offsets of the glyph
+/// information, the glyph bitmaps and the character map.
+///
typedef struct _EFI_HII_FONT_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT32 HdrSize;
@@ -158,6 +156,9 @@ typedef struct _EFI_HII_FONT_PACKAGE_HDR {
CHAR16 FontFamily[1];
} EFI_HII_FONT_PACKAGE_HDR;
+//
+// Value of different glyph info block types
+//
#define EFI_HII_GIBT_END 0x00
#define EFI_HII_GIBT_GLYPH 0x10
#define EFI_HII_GIBT_GLYPHS 0x11
@@ -175,6 +176,10 @@ typedef struct _EFI_HII_GLYPH_BLOCK {
UINT8 BlockType;
} EFI_HII_GLYPH_BLOCK;
+//
+// Definition of different glyph info block types
+//
+
typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
@@ -210,25 +215,25 @@ typedef struct _EFI_HII_GIBT_EXT4_BLOCK {
typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
+ UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPH_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
UINT16 Count;
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
+ UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPHS_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
+ UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT16 Count;
- UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
+ UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;
typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {
@@ -242,16 +247,27 @@ typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {
} EFI_HII_GIBT_SKIP2_BLOCK;
//
-// Device Path Package
+// Definitions for Device Path Package
+// Section 27.3.4
//
+
+///
+/// The device path package is used to carry a device path
+/// associated with the package list.
+///
typedef struct _EFI_HII_DEVICE_PATH_PACKAGE {
EFI_HII_PACKAGE_HEADER Header;
// EFI_DEVICE_PATH_PROTOCOL DevicePath[];
} EFI_HII_DEVICE_PATH_PACKAGE;
//
-// GUID Package
+// Definitions for GUID Package
+// Section 27.3.5
//
+
+///
+/// The GUID package is used to carry data where the format is defined by a GUID.
+///
typedef struct _EFI_HII_GUID_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
EFI_GUID Guid;
@@ -259,12 +275,17 @@ typedef struct _EFI_HII_GUID_PACKAGE_HDR {
} EFI_HII_GUID_PACKAGE_HDR;
//
-// String Package
+// Definitions for String Package
+// Section 27.3.6
//
#define UEFI_CONFIG_LANG L"x-UEFI"
-#define UEFI_CONFIG_LANG2 L"x-i-UEFI" // BUGBUG, spec need to be updated.
+#define UEFI_CONFIG_LANG2 L"x-i-UEFI"
+///
+/// The fixed header consists of a standard record header and then the string identifiers
+/// contained in this section and the offsets of the string and language information.
+///
typedef struct _EFI_HII_STRING_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT32 HdrSize;
@@ -278,6 +299,9 @@ typedef struct {
UINT8 BlockType;
} EFI_HII_STRING_BLOCK;
+//
+// Value of different string information block types
+//
#define EFI_HII_SIBT_END 0x00
#define EFI_HII_SIBT_STRING_SCSU 0x10
#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
@@ -295,6 +319,10 @@ typedef struct {
#define EFI_HII_SIBT_EXT4 0x32
#define EFI_HII_SIBT_FONT 0x40
+//
+// Definition of different string information block types
+//
+
typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {
EFI_HII_STRING_BLOCK Header;
EFI_STRING_ID StringId;
@@ -389,7 +417,8 @@ typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {
} EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK;
//
-// Image Packages
+// Definitions for Image Package
+// Section 27.3.7
//
typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
@@ -402,6 +431,9 @@ typedef struct _EFI_HII_IMAGE_BLOCK {
UINT8 BlockType;
} EFI_HII_IMAGE_BLOCK;
+//
+// Value of different image information block types
+//
#define EFI_HII_IIBT_END 0x00
#define EFI_HII_IIBT_IMAGE_1BIT 0x10
#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
@@ -419,6 +451,10 @@ typedef struct _EFI_HII_IMAGE_BLOCK {
#define EFI_HII_IIBT_EXT2 0x31
#define EFI_HII_IIBT_EXT4 0x32
+//
+// Definition of different image information block types
+//
+
typedef struct _EFI_HII_IIBT_END_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
} EFI_HII_IIBT_END_BLOCK;
@@ -538,6 +574,10 @@ typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {
UINT16 SkipCount;
} EFI_HII_IIBT_SKIP2_BLOCK;
+//
+// Definitions for Palette Information
+//
+
typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {
UINT16 PaletteCount;
} EFI_HII_IMAGE_PALETTE_INFO_HEADER;
@@ -548,9 +588,13 @@ typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
} EFI_HII_IMAGE_PALETTE_INFO;
//
-// Forms Package
+// Definitions for Forms Package
+// Section 27.3.8
//
+///
+/// The Forms package is used to carry forms-based encoding data.
+///
typedef struct _EFI_HII_FORM_PACKAGE {
EFI_HII_PACKAGE_HEADER Header;
// EFI_IFR_OP_HEADER OpCodeHeader;
@@ -672,6 +716,10 @@ typedef union {
#define EFI_IFR_CATENATE_OP 0x5E
#define EFI_IFR_GUID_OP 0x5F
+//
+// Definitions of IFR Standard Headers
+// Section 27.3.8.2
+//
typedef struct _EFI_IFR_OP_HEADER {
UINT8 OpCode;
@@ -695,17 +743,27 @@ typedef struct _EFI_IFR_QUESTION_HEADER {
UINT8 Flags;
} EFI_IFR_QUESTION_HEADER;
+//
+// Flag values of EFI_IFR_QUESTION_HEADER
+//
#define EFI_IFR_FLAG_READ_ONLY 0x01
#define EFI_IFR_FLAG_CALLBACK 0x04
#define EFI_IFR_FLAG_RESET_REQUIRED 0x10
#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
+//
+// Definition for Opcode Reference
+// Section 27.3.8.3
+//
typedef struct _EFI_IFR_DEFAULTSTORE {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID DefaultName;
UINT16 DefaultId;
} EFI_IFR_DEFAULTSTORE;
+//
+// Default Identifier of default store
+//
#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
#define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
@@ -855,6 +913,9 @@ typedef struct _EFI_IFR_DATE {
UINT8 Flags;
} EFI_IFR_DATE;
+//
+// Flags that describe the behavior of the question.
+//
#define EFI_QF_DATE_YEAR_SUPPRESS 0x01
#define EFI_QF_DATE_MONTH_SUPPRESS 0x02
#define EFI_QF_DATE_DAY_SUPPRESS 0x04
@@ -894,16 +955,19 @@ typedef struct _EFI_IFR_NUMERIC {
MINMAXSTEP_DATA data;
} EFI_IFR_NUMERIC;
+//
+// Flags related to the numeric question
+//
#define EFI_IFR_NUMERIC_SIZE 0x03
-#define EFI_IFR_NUMERIC_SIZE_1 0x00
-#define EFI_IFR_NUMERIC_SIZE_2 0x01
-#define EFI_IFR_NUMERIC_SIZE_4 0x02
-#define EFI_IFR_NUMERIC_SIZE_8 0x03
+#define EFI_IFR_NUMERIC_SIZE_1 0x00
+#define EFI_IFR_NUMERIC_SIZE_2 0x01
+#define EFI_IFR_NUMERIC_SIZE_4 0x02
+#define EFI_IFR_NUMERIC_SIZE_8 0x03
#define EFI_IFR_DISPLAY 0x30
-#define EFI_IFR_DISPLAY_INT_DEC 0x00
-#define EFI_IFR_DISPLAY_UINT_DEC 0x10
-#define EFI_IFR_DISPLAY_UINT_HEX 0x20
+#define EFI_IFR_DISPLAY_INT_DEC 0x00
+#define EFI_IFR_DISPLAY_UINT_DEC 0x10
+#define EFI_IFR_DISPLAY_UINT_HEX 0x20
typedef struct _EFI_IFR_ONE_OF {
EFI_IFR_OP_HEADER Header;
@@ -945,14 +1009,17 @@ typedef struct _EFI_IFR_TIME {
UINT8 Flags;
} EFI_IFR_TIME;
+//
+// A bit-mask that determines which unique settings are active for this opcode.
+//
#define QF_TIME_HOUR_SUPPRESS 0x01
#define QF_TIME_MINUTE_SUPPRESS 0x02
#define QF_TIME_SECOND_SUPPRESS 0x04
#define QF_TIME_STORAGE 0x30
-#define QF_TIME_STORAGE_NORMAL 0x00
-#define QF_TIME_STORAGE_TIME 0x10
-#define QF_TIME_STORAGE_WAKEUP 0x20
+#define QF_TIME_STORAGE_NORMAL 0x00
+#define QF_TIME_STORAGE_TIME 0x10
+#define QF_TIME_STORAGE_WAKEUP 0x20
typedef struct _EFI_IFR_DISABLE_IF {
EFI_IFR_OP_HEADER Header;
@@ -994,6 +1061,9 @@ typedef struct _EFI_IFR_ONE_OF_OPTION {
EFI_IFR_TYPE_VALUE Value;
} EFI_IFR_ONE_OF_OPTION;
+//
+// Types of the option's value.
+//
#define EFI_IFR_TYPE_NUM_SIZE_8 0x00
#define EFI_IFR_TYPE_NUM_SIZE_16 0x01
#define EFI_IFR_TYPE_NUM_SIZE_32 0x02
@@ -1036,11 +1106,6 @@ typedef struct _EFI_IFR_EQ_ID_LIST {
UINT16 ValueList[1];
} EFI_IFR_EQ_ID_LIST;
-typedef struct _EFI_IFR_QUESTION_REF1 {
- EFI_IFR_OP_HEADER Header;
- EFI_QUESTION_ID QuestionId;
-} EFI_IFR_QUESTION_REF1;
-
typedef struct _EFI_IFR_UINT8 {
EFI_IFR_OP_HEADER Header;
UINT8 Value;
@@ -1051,10 +1116,6 @@ typedef struct _EFI_IFR_UINT16 {
UINT16 Value;
} EFI_IFR_UINT16;
-typedef struct _EFI_IFR_QUESTION_REF2 {
- EFI_IFR_OP_HEADER Header;
-} EFI_IFR_QUESTION_REF2;
-
typedef struct _EFI_IFR_UINT32 {
EFI_IFR_OP_HEADER Header;
UINT32 Value;
@@ -1065,6 +1126,15 @@ typedef struct _EFI_IFR_UINT64 {
UINT64 Value;
} EFI_IFR_UINT64;
+typedef struct _EFI_IFR_QUESTION_REF1 {
+ EFI_IFR_OP_HEADER Header;
+ EFI_QUESTION_ID QuestionId;
+} EFI_IFR_QUESTION_REF1;
+
+typedef struct _EFI_IFR_QUESTION_REF2 {
+ EFI_IFR_OP_HEADER Header;
+} EFI_IFR_QUESTION_REF2;
+
typedef struct _EFI_IFR_QUESTION_REF3 {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_QUESTION_REF3;
@@ -1142,11 +1212,23 @@ typedef struct _EFI_IFR_TO_BOOLEAN {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TO_BOOLEAN;
+//
+// For EFI_IFR_TO_STRING, when converting from
+// unsigned integers, these flags control the format:
+// 0 = unsigned decimal
+// 1 = signed decimal
+// 2 = hexadecimal (lower-case alpha)
+// 3 = hexadecimal (upper-case alpha)
+//
#define EFI_IFR_STRING_UNSIGNED_DEC 0
#define EFI_IFR_STRING_SIGNED_DEC 1
#define EFI_IFR_STRING_LOWERCASE_HEX 2
#define EFI_IFR_STRING_UPPERCASE_HEX 3
-
+//
+// When converting from a buffer, these flags control the format:
+// 0 = ASCII
+// 8 = Unicode
+//
#define EFI_IFR_STRING_ASCII 0
#define EFI_IFR_STRING_UNICODE 8
@@ -1247,6 +1329,9 @@ typedef struct _EFI_IFR_CONDITIONAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_CONDITIONAL;
+//
+// Flags governing the matching criteria of EFI_IFR_FIND
+//
#define EFI_IFR_FF_CASE_SENSITIVE 0x00
#define EFI_IFR_FF_CASE_INSENSITIVE 0x01
@@ -1263,6 +1348,10 @@ typedef struct _EFI_IFR_TOKEN {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TOKEN;
+//
+// Flags specifying whether to find the first matching string
+// or the first non-matching string.
+//
#define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
@@ -1272,7 +1361,9 @@ typedef struct _EFI_IFR_SPAN {
} EFI_IFR_SPAN;
//
-// Keyboard Package
+// Definitions for Keyboard Package
+// Section 27.3.9
+// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
//
typedef enum {