From 5c526736370b475e85c59fafe3900101a95e93d3 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Mon, 23 Feb 2009 15:18:48 +0000 Subject: Move MdeModuleHii.h into Include\Guid directory Move Capsule.h into MdePkg\Include\Protocol directory because Capsule is defined in PI1.0a. Merge WorkingBlockHeader.h into SystemNvDataGuid.h Remove unused NvDataFvHob. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7606 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Include/Guid/MdeModuleHii.h | 240 +++++++++++++++++++++++++++ MdeModulePkg/Include/Guid/SystemNvDataGuid.h | 56 ++++--- 2 files changed, 273 insertions(+), 23 deletions(-) create mode 100644 MdeModulePkg/Include/Guid/MdeModuleHii.h (limited to 'MdeModulePkg/Include/Guid') diff --git a/MdeModulePkg/Include/Guid/MdeModuleHii.h b/MdeModulePkg/Include/Guid/MdeModuleHii.h new file mode 100644 index 0000000000..e66a944c08 --- /dev/null +++ b/MdeModulePkg/Include/Guid/MdeModuleHii.h @@ -0,0 +1,240 @@ +/** @file + EDKII extented HII IFR guid opcodes. + +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __MDEMODULE_HII_H__ +#define __MDEMODULE_HII_H__ + +#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 + + +/// +/// HII specific Vendor Device Path Node definition. +/// +#pragma pack(1) +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + UINT32 Reserved; + UINT64 UniqueId; +} HII_VENDOR_DEVICE_PATH_NODE; +#pragma pack() + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + HII_VENDOR_DEVICE_PATH_NODE Node; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +/// +/// 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 opcode are added, new extension 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 converte 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; + +#pragma pack() + +extern EFI_GUID gEfiIfrTianoGuid; +extern EFI_GUID gEfiIfrFrameworkGuid; + +#endif + diff --git a/MdeModulePkg/Include/Guid/SystemNvDataGuid.h b/MdeModulePkg/Include/Guid/SystemNvDataGuid.h index 583f7a30bf..048ea651da 100644 --- a/MdeModulePkg/Include/Guid/SystemNvDataGuid.h +++ b/MdeModulePkg/Include/Guid/SystemNvDataGuid.h @@ -1,10 +1,5 @@ -/** @file - This file defines NvData Hob GUIDs for System Non Volatile HOB entries - and the corresponding hob data structure. NvData Hob can be used to report - the region of the system non volatile data for the specific purpose, - such as FTW region, Error log region. - - It also defines NvDataFv GUID. +/** @file + This file defines NvDataFv GUID and FTW working block structure header. This guid can be used as FileSystemGuid in EFI_FIRMWARE_VOLUME_HEADER if this FV image contains NV data, such as NV variable data. This guid can also be used as the signature of FTW working block header. @@ -26,27 +21,42 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define EFI_SYSTEM_NV_DATA_FV_GUID \ {0xfff12b8d, 0x7696, 0x4c8b, {0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50} } -#define EFI_SYSTEM_NV_DATA_HOB_GUID \ - {0xd6e5092d, 0xc7b2, 0x4872, {0xaf, 0x66, 0xfd, 0xc0, 0xe6, 0xf9, 0x5e, 0x78} } - /// -/// Hob entry for NV data region +/// NvDataFv GUID used as the signature of FTW working block header. /// -typedef struct { - EFI_GUID SystemNvDataHobGuid; ///> EFI_SYSTEM_NV_DATA_HOB_GUID - EFI_GUID SystemNvDataFvGuid; ///> Guid specifies the NvData Fv for the specific purpose, such as FTW, Error Log. - EFI_LBA StartLba; ///> The starting logical block index. - UINTN StartLbaOffset; ///> Offset into the starting block at which to the start of NvData region. - EFI_LBA EndLba; ///> The last logical block index. - UINTN EndLbaOffset; ///> Offset into the last block at which to the end of Nvdata region. - UINT32 DataTypeSignature; ///> NvData type in the specified NV range. -} NV_SYSTEM_DATA_GUID_TYPE; +extern EFI_GUID gEfiSystemNvDataFvGuid; -extern EFI_GUID gEfiSystemNvDataHobGuid; +#define WORKING_BLOCK_VALID 0x1 +#define WORKING_BLOCK_INVALID 0x2 /// -/// NvDataFv GUID used as the signature of FTW working block header. +/// EDKII Fault tolerant working block header +/// The header is immediately followed by the write queue data. /// -extern EFI_GUID gEfiSystemNvDataFvGuid; +typedef struct { + /// + /// System Non Volatile FV Guid + /// + EFI_GUID Signature; + /// + /// 32bit CRC caculated for this header + /// + UINT32 Crc; + /// + /// Working block valid bit + /// + UINT8 WorkingBlockValid : 1; + UINT8 WorkingBlockInvalid : 1; + UINT8 Reserved : 6; + UINT8 Reserved3[3]; + /// + /// Total size of the following write queue range. + /// + UINT64 WriteQueueSize; + /// + /// Write Queue data + /// UINT8 WriteQueue[WriteQueueSize]; + /// +} EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER; #endif -- cgit v1.2.3