* Re: [edk2-devel] [PATCH] edk2-staging/EmulatorPkg: Add a sample memory configuration HII driver
[not found] <16B25D0D5E069C47.9643@groups.io>
@ 2021-10-29 8:39 ` Abner Chang
0 siblings, 0 replies; only message in thread
From: Abner Chang @ 2021-10-29 8:39 UTC (permalink / raw)
To: devel@edk2.groups.io, Chang, Abner (HPS SW/FW Technologist)
Cc: Wang, Nickle (HPS SW), Liming Gao, Andrew Fish, Ray Ni
This patch is sent in behalf of Nickle Wang who is the author of this change.
Reviewed-by: Abner Chang <abner.chang@hpe.com>
> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Abner Chang
> Sent: Friday, October 29, 2021 9:45 AM
> To: devel@edk2.groups.io
> Cc: Wang, Nickle (HPS SW) <nickle.wang@hpe.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Ray Ni
> <ray.ni@intel.com>
> Subject: [edk2-devel] [PATCH] edk2-staging/EmulatorPkg: Add a sample
> memory configuration HII driver
>
> This is an HII sample driver of memory configuration. This demonstrates
> the communication between platform configuration (EDK2/HII) and Redfish
> service (Memory resource) base on RedfishClientPkg.
>
> The language ("x-uef-redfish-*") defined in the Redfish-specific uni file is
> the connection between HII configuration and the Redfish schema.
>
> e.g.
> #langdef x-uefi-redfish-Memory.v1_7_1 "Memory.v1_7_1"
>
> The HII option strings those applied with "x-uef-redfish-* HII language
> are connected to the corresponding Redfish properties.
>
> e.g.
> #string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "/Memory/{1}/BaseModuleType"
>
> The changes made on BIOS setup page or remote (OOB to Redfish service)
> will be
> sync-up each other through EDKII Redfish feature driver using the transport
> (REST_EX) provided by RedfishPkg.
>
> On EDK2, HTTP based REST EX protocol instance is used to consume and
> update
> the Redfish properties.
>
> Check this for the RedfishClientPkg design architecture,
> https://github.com/tianocore/edk2-staging/blob/edk2-redfish-
> client/RedfishClientPkg/Readme.md
>
> Below for RedfishPkg design architecture,
> https://github.com/tianocore/edk2/blob/master/RedfishPkg/Readme.md
>
> Signed-off-by: Nickle Wang <nickle.wang@hpe.com>
> Cc: Abner Chang <abner.chang@hpe.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Andrew Fish <afish@apple.com>
> Cc: Ray Ni <ray.ni@intel.com>
> ---
> .../Hii2RedfishMemoryDxe.inf | 55 ++++
> .../Hii2RedfishMemoryData.h | 71 +++++
> .../Hii2RedfishMemoryDxe.h | 44 +++
> .../Hii2RedfishMemoryVfr.vfr | 219 +++++++++++++
> .../Hii2RedfishMemoryDxe.c | 294 ++++++++++++++++++
> .../Hii2RedfishMemoryDxeMap.uni | 38 +++
> .../Hii2RedfishMemoryDxeStrings.uni | 68 ++++
> 7 files changed, 789 insertions(+)
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
>
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> new file mode 100644
> index 00000000000..3376f7e7b49
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> @@ -0,0 +1,55 @@
> +## @file
> +# HII-to-Redfish memory driver.
> +#
> +# (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010005
> + BASE_NAME = Hii2RedfishMemoryDxe
> + FILE_GUID = 58134796-EB3A-4635-9664-6B7F68A8A9A1
> + MODULE_TYPE = UEFI_DRIVER
> + VERSION_STRING = 1.0
> + ENTRY_POINT = Hii2RedfishMemoryDxeDriverEntryPoint
> + UNLOAD_IMAGE = Hii2RedfishMemoryDxeDriverUnload
> +
> +[Sources]
> + Hii2RedfishMemoryDxe.c
> + Hii2RedfishMemoryDxe.h
> + Hii2RedfishMemoryData.h
> + Hii2RedfishMemoryVfr.vfr
> + Hii2RedfishMemoryDxeStrings.uni
> + Hii2RedfishMemoryDxeMap.uni
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + EmulatorPkg/EmulatorPkg.dec
> +
> +[LibraryClasses]
> + UefiDriverEntryPoint
> + BaseLib
> + BaseMemoryLib
> + DebugLib
> + PcdLib
> + MemoryAllocationLib
> + UefiBootServicesTableLib
> + UefiRuntimeServicesTableLib
> + UefiLib
> + PrintLib
> + HiiLib
> +
> +[Protocols]
> + gEfiDevicePathProtocolGuid
> + gEfiHiiConfigAccessProtocolGuid
> +
> +
> +[Guids]
> + gHii2RedfishMemoryFormsetGuid
> +
> +[Depex]
> + gEfiHiiDatabaseProtocolGuid
> +
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> new file mode 100644
> index 00000000000..f5ffaaec631
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> @@ -0,0 +1,71 @@
> +/** @file
> + The header file of HII-to-Redfish memory driver.
> +
> + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_MEMORY_DATA_H_
> +#define HII_2_REDFISH_MEMORY_DATA_H_
> +
> +#include <Uefi/UefiMultiPhase.h>
> +#include <Guid/HiiPlatformSetupFormset.h>
> +
> +#define HII_2_REDFISH_MEMORY_FORMSET_GUID \
> + { \
> + 0xC2BE579E, 0x3C57, 0x499C, { 0xA9, 0xDF, 0xE6, 0x23, 0x8A, 0x49, 0x64,
> 0xF8 } \
> + }
> +
> +extern EFI_GUID gHii2RedfishMemoryFormsetGuid;
> +
> +#define FORM_ID 0x001
> +#define FROM_ID_MEMORY_1 0x002
> +#define FROM_ID_MEMORY_2 0x003
> +#define FROM_ID_MEMORY_3 0x004
> +#define FROM_ID_MEMORY_4 0x005
> +
> +#define QUESTION_ID_MEMORY_1_BASE_MODULE_TYPE 0x100
> +#define QUESTION_ID_MEMORY_1_BUS_WIDTH_BITS 0x101
> +#define QUESTION_ID_MEMORY_1_CONFIGURATION_LOCKED 0x102
> +
> +#define QUESTION_ID_MEMORY_2_BASE_MODULE_TYPE 0x200
> +#define QUESTION_ID_MEMORY_2_BUS_WIDTH_BITS 0x201
> +#define QUESTION_ID_MEMORY_2_CONFIGURATION_LOCKED 0x202
> +
> +#define QUESTION_ID_MEMORY_3_BASE_MODULE_TYPE 0x300
> +#define QUESTION_ID_MEMORY_3_BUS_WIDTH_BITS 0x301
> +#define QUESTION_ID_MEMORY_3_CONFIGURATION_LOCKED 0x302
> +
> +#define QUESTION_ID_MEMORY_4_BASE_MODULE_TYPE 0x400
> +#define QUESTION_ID_MEMORY_4_BUS_WIDTH_BITS 0x401
> +#define QUESTION_ID_MEMORY_4_CONFIGURATION_LOCKED 0x402
> +
> +#define MEMORY_MAX_NO 0x04
> +#define ID_STRING_MIN 0
> +#define ID_STRING_MAX 15
> +#define ID_STRING_MAX_WITH_TERMINATOR 16
> +
> +#pragma pack(1)
> +//
> +// Definiton of HII_2_REDFISH_MEMORY_SET
> +//
> +typedef struct {
> + CHAR16 ModuleProductId[ID_STRING_MAX_WITH_TERMINATOR];
> + UINT8 BaseModuleType;
> + UINT8 BusWidthBits;
> + UINT8 ConfigurationLocked;
> + UINT8 Reserved; // for 16 bit boundary of ModuleProductId
> +} HII_2_REDFISH_MEMORY_SET;
> +
> +//
> +// Definiton of HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA
> +//
> +typedef struct {
> + HII_2_REDFISH_MEMORY_SET Memory[MEMORY_MAX_NO];
> +} HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA;
> +
> +#pragma pack()
> +
> +#endif
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> new file mode 100644
> index 00000000000..98bfd7246a4
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> @@ -0,0 +1,44 @@
> +/** @file
> + HII-to-Redfish memory driver header file.
> +
> + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_MEMORY_DXE_H_
> +#define HII_2_REDFISH_MEMORY_DXE_H_
> +
> +#include <Uefi.h>
> +#include <Library/BaseLib.h>
> +#include <Library/UefiLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/MemoryAllocationLib.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +#include <Library/UefiRuntimeServicesTableLib.h>
> +#include <Library/PrintLib.h>
> +#include <Library/HiiLib.h>
> +#include <Library/DevicePathLib.h>
> +
> +#include <Protocol/HiiConfigAccess.h>
> +#include <Guid/VariableFormat.h>
> +
> +#include "Hii2RedfishMemoryData.h"
> +
> +extern UINT8 Hii2RedfishMemoryVfrBin[];
> +
> +#pragma pack(1)
> +
> +///
> +/// HII specific Vendor Device Path definition.
> +///
> +typedef struct {
> + VENDOR_DEVICE_PATH VendorDevicePath;
> + EFI_DEVICE_PATH_PROTOCOL End;
> +} HII_VENDOR_DEVICE_PATH;
> +
> +#pragma pack()
> +
> +#endif
> \ No newline at end of file
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> new file mode 100644
> index 00000000000..288686f8303
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> @@ -0,0 +1,219 @@
> +/** @file
> + HII-to-Redfish memory driver VFR file.
> +
> + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +
> +#include "Hii2RedfishMemoryData.h"
> +
> +formset
> + guid = HII_2_REDFISH_MEMORY_FORMSET_GUID,
> + title = STRING_TOKEN(STR_FORM_SET_TITLE),
> + help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
> + classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,
> +
> + //
> + // Define a EFI variable Storage (EFI_IFR_VARSTORE_EFI)
> + //
> + efivarstore HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA,
> + attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS |
> EFI_VARIABLE_NON_VOLATILE, // EFI variable attribures
> + name = Hii2RedfishMemoryEfiVar,
> + guid = HII_2_REDFISH_MEMORY_FORMSET_GUID;
> +
> + //
> + // Define a Form (EFI_IFR_FORM)
> + //
> + form formid = FORM_ID, // Form ID
> + title = STRING_TOKEN(STR_FORM_TITLE); // Form title
> +
> + goto FROM_ID_MEMORY_1, // Destination Form ID
> + prompt = STRING_TOKEN(STR_FORM_TITLE_MEMORY_1), // Prompt
> string
> + help = STRING_TOKEN(STR_FORM_HELP_MEMORY_1); // Help string
> +
> + goto FROM_ID_MEMORY_2, // Destination Form ID
> + prompt = STRING_TOKEN(STR_FORM_TITLE_MEMORY_2), // Prompt
> string
> + help = STRING_TOKEN(STR_FORM_HELP_MEMORY_2); // Help string
> +
> + goto FROM_ID_MEMORY_3, // Destination Form ID
> + prompt = STRING_TOKEN(STR_FORM_TITLE_MEMORY_3), // Prompt
> string
> + help = STRING_TOKEN(STR_FORM_HELP_MEMORY_3); // Help string
> +
> + goto FROM_ID_MEMORY_4, // Destination Form ID
> + prompt = STRING_TOKEN(STR_FORM_TITLE_MEMORY_4), // Prompt
> string
> + help = STRING_TOKEN(STR_FORM_HELP_MEMORY_4); // Help string
> +
> + endform;
> +
> + form formid = FROM_ID_MEMORY_1, // Form ID
> + title = STRING_TOKEN(STR_FORM_TITLE_MEMORY_1); // Form title
> +
> + oneof varid = Hii2RedfishMemoryEfiVar.Memory[0].BaseModuleType,
> + questionid = QUESTION_ID_MEMORY_1_BASE_MODULE_TYPE,
> + prompt =
> STRING_TOKEN(STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_1_BASE_MODULE_TYPE_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> + option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT, flags = 0;
> + option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), value =
> STR_MEMORY_MINI_UDIMM_PROMPT, flags = 0;
> + endoneof;
> +
> + string varid = Hii2RedfishMemoryEfiVar.Memory[0].ModuleProductId,
> + prompt =
> STRING_TOKEN(STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_1_MODULE_PRODUCT_ID_HELP),
> + flags = READ_ONLY,
> + minsize = ID_STRING_MIN,
> + maxsize = ID_STRING_MAX,
> + endstring;
> +
> + numeric varid = Hii2RedfishMemoryEfiVar.Memory[0].BusWidthBits,
> + prompt =
> STRING_TOKEN(STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT),
> + help = STRING_TOKEN(STR_MEMORY_1_BUS_WIDTH_BITS_HELP),
> + minimum = 0,
> + maximum = 0xff,
> + step = 1,
> + default = 20,
> + endnumeric;
> +
> + checkbox varid =
> Hii2RedfishMemoryEfiVar.Memory[0].ConfigurationLocked,
> + prompt =
> STRING_TOKEN(STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_1_CONFIGURATION_LOCKED_HELP),
> + flags = CHECKBOX_DEFAULT,
> + default = TRUE,
> + endcheckbox;
> +
> + endform;
> +
> + form formid = FROM_ID_MEMORY_2, // Form ID
> + title = STRING_TOKEN(STR_FORM_TITLE_MEMORY_2); // Form title
> +
> + oneof varid = Hii2RedfishMemoryEfiVar.Memory[1].BaseModuleType,
> + questionid = QUESTION_ID_MEMORY_2_BASE_MODULE_TYPE,
> + prompt =
> STRING_TOKEN(STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_2_BASE_MODULE_TYPE_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> + option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT, flags = 0;
> + option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), value =
> STR_MEMORY_MINI_UDIMM_PROMPT, flags = 0;
> + endoneof;
> +
> + string varid = Hii2RedfishMemoryEfiVar.Memory[1].ModuleProductId,
> + prompt =
> STRING_TOKEN(STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_2_MODULE_PRODUCT_ID_HELP),
> + flags = READ_ONLY,
> + minsize = ID_STRING_MIN,
> + maxsize = ID_STRING_MAX,
> + endstring;
> +
> + numeric varid = Hii2RedfishMemoryEfiVar.Memory[1].BusWidthBits,
> + prompt =
> STRING_TOKEN(STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT),
> + help = STRING_TOKEN(STR_MEMORY_2_BUS_WIDTH_BITS_HELP),
> + minimum = 0,
> + maximum = 0xff,
> + step = 1,
> + default = 20,
> + endnumeric;
> +
> + checkbox varid =
> Hii2RedfishMemoryEfiVar.Memory[1].ConfigurationLocked,
> + prompt =
> STRING_TOKEN(STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_2_CONFIGURATION_LOCKED_HELP),
> + flags = CHECKBOX_DEFAULT,
> + default = TRUE,
> + endcheckbox;
> +
> + endform;
> +
> + form formid = FROM_ID_MEMORY_3, // Form ID
> + title = STRING_TOKEN(STR_FORM_TITLE_MEMORY_3); // Form title
> +
> + oneof varid = Hii2RedfishMemoryEfiVar.Memory[2].BaseModuleType,
> + questionid = QUESTION_ID_MEMORY_3_BASE_MODULE_TYPE,
> + prompt =
> STRING_TOKEN(STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_3_BASE_MODULE_TYPE_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> + option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT, flags = 0;
> + option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), value =
> STR_MEMORY_MINI_UDIMM_PROMPT, flags = 0;
> + endoneof;
> +
> + string varid = Hii2RedfishMemoryEfiVar.Memory[2].ModuleProductId,
> + prompt =
> STRING_TOKEN(STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_3_MODULE_PRODUCT_ID_HELP),
> + flags = READ_ONLY,
> + minsize = ID_STRING_MIN,
> + maxsize = ID_STRING_MAX,
> + endstring;
> +
> + numeric varid = Hii2RedfishMemoryEfiVar.Memory[2].BusWidthBits,
> + prompt =
> STRING_TOKEN(STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT),
> + help = STRING_TOKEN(STR_MEMORY_3_BUS_WIDTH_BITS_HELP),
> + minimum = 0,
> + maximum = 0xff,
> + step = 1,
> + default = 20,
> + endnumeric;
> +
> + checkbox varid =
> Hii2RedfishMemoryEfiVar.Memory[2].ConfigurationLocked,
> + prompt =
> STRING_TOKEN(STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_3_CONFIGURATION_LOCKED_HELP),
> + flags = CHECKBOX_DEFAULT,
> + default = TRUE,
> + endcheckbox;
> +
> + endform;
> +
> + form formid = FROM_ID_MEMORY_4, // Form ID
> + title = STRING_TOKEN(STR_FORM_TITLE_MEMORY_3); // Form title
> +
> + oneof varid = Hii2RedfishMemoryEfiVar.Memory[3].BaseModuleType,
> + questionid = QUESTION_ID_MEMORY_4_BASE_MODULE_TYPE,
> + prompt =
> STRING_TOKEN(STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_4_BASE_MODULE_TYPE_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> + option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> + option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT, flags = 0;
> + option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT), value =
> STR_MEMORY_MINI_UDIMM_PROMPT, flags = 0;
> + endoneof;
> +
> + string varid = Hii2RedfishMemoryEfiVar.Memory[3].ModuleProductId,
> + prompt =
> STRING_TOKEN(STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_4_MODULE_PRODUCT_ID_HELP),
> + flags = READ_ONLY,
> + minsize = ID_STRING_MIN,
> + maxsize = ID_STRING_MAX,
> + endstring;
> +
> + numeric varid = Hii2RedfishMemoryEfiVar.Memory[3].BusWidthBits,
> + prompt =
> STRING_TOKEN(STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT),
> + help = STRING_TOKEN(STR_MEMORY_4_BUS_WIDTH_BITS_HELP),
> + minimum = 0,
> + maximum = 0xff,
> + step = 1,
> + default = 20,
> + endnumeric;
> +
> + checkbox varid =
> Hii2RedfishMemoryEfiVar.Memory[3].ConfigurationLocked,
> + prompt =
> STRING_TOKEN(STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT),
> + help =
> STRING_TOKEN(STR_MEMORY_4_CONFIGURATION_LOCKED_HELP),
> + flags = CHECKBOX_DEFAULT,
> + default = TRUE,
> + endcheckbox;
> +
> + endform;
> +
> +endformset;
> \ No newline at end of file
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> new file mode 100644
> index 00000000000..4c13a197fa4
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> @@ -0,0 +1,294 @@
> +/** @file
> + HII-to-Redfish memory driver.
> +
> + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "Hii2RedfishMemoryDxe.h"
> +
> +EFI_GUID mHii2RedfishMemoryGuid =
> HII_2_REDFISH_MEMORY_FORMSET_GUID;
> +EFI_HII_HANDLE mHiiHandle;
> +EFI_HANDLE DriverHandle;
> +CHAR16 Hii2RedfishEfiVar[] = L"Hii2RedfishMemoryEfiVar";
> +
> +///
> +/// HII specific Vendor Device Path definition.
> +///
> +HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath = {
> + {
> + {
> + HARDWARE_DEVICE_PATH,
> + HW_VENDOR_DP,
> + {
> + (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
> + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
> + }
> + },
> + HII_2_REDFISH_MEMORY_FORMSET_GUID
> + },
> + {
> + END_DEVICE_PATH_TYPE,
> + END_ENTIRE_DEVICE_PATH_SUBTYPE,
> + {
> + (UINT8) (END_DEVICE_PATH_LENGTH),
> + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)
> + }
> + }
> +};
> +
> +/**
> + Initial HII variable if it does not exist.
> +
> + @retval EFI_SUCESS HII variable is initialized.
> +
> +**/
> +EFI_STATUS
> +InitialHiiVairable (
> + VOID
> + )
> +{
> + EFI_STATUS Status;
> + UINTN BufferSize;
> + HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA Hii2RedfishMemoryVar;
> + UINTN Index;
> +
> + //
> + // Get Buffer Storage data from EFI variable.
> + // Try to get the current setting from variable.
> + //
> + BufferSize = sizeof (HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA);
> + Status = gRT->GetVariable (
> + Hii2RedfishEfiVar,
> + &gHii2RedfishMemoryFormsetGuid,
> + NULL,
> + &BufferSize,
> + &Hii2RedfishMemoryVar
> + );
> + if (!EFI_ERROR (Status)) {
> + return EFI_SUCCESS;
> + }
> +
> + //
> + // Initialization
> + //
> + for (Index = 0; Index < MEMORY_MAX_NO; Index++) {
> + Hii2RedfishMemoryVar.Memory[Index].BaseModuleType =
> STR_MEMORY_RDIMM_PROMPT;
> + Hii2RedfishMemoryVar.Memory[Index].BusWidthBits = 20;
> + Hii2RedfishMemoryVar.Memory[Index].ConfigurationLocked = TRUE;
> + StrCpyS (Hii2RedfishMemoryVar.Memory[Index].ModuleProductId,
> ID_STRING_MAX_WITH_TERMINATOR, L"1234");
> + }
> +
> + Status = gRT->SetVariable (
> + Hii2RedfishEfiVar,
> + &gHii2RedfishMemoryFormsetGuid,
> + VARIABLE_ATTRIBUTE_NV_BS,
> + BufferSize,
> + &Hii2RedfishMemoryVar
> + );
> +
> + return Status;
> +}
> +
> +/**
> + This function allows a caller to extract the current configuration for one
> + or more named elements from the target driver.
> +
> + @param[in] This Points to the
> EFI_HII_CONFIG_ACCESS_PROTOCOL.
> + @param[in] Request A null-terminated Unicode string in
> + <ConfigRequest> format.
> + @param[out] Progress On return, points to a character in the Request
> + string. Points to the string's null terminator if
> + request was successful. Points to the most recent
> + '&' before the first failing name/value pair (or
> + the beginning of the string if the failure is in
> + the first name/value pair) if the request was not
> + successful.
> + @param[out] Results A null-terminated Unicode string in
> + <ConfigAltResp> format which has all values filled
> + in for the names in the Request string. String to
> + be allocated by the called function.
> +
> + @retval EFI_SUCCESS The Results is filled with the requested values.
> + @retval EFI_OUT_OF_RESOURCES Not enough memory to store the
> results.
> + @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown
> name.
> + @retval EFI_NOT_FOUND Routing data doesn't match any storage in
> this
> + driver.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishMemoryExtractConfig (
> + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
> + IN CONST EFI_STRING Request,
> + OUT EFI_STRING *Progress,
> + OUT EFI_STRING *Results
> + )
> +{
> + if (Progress == NULL || Results == NULL) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + if (Request == NULL) {
> + return EFI_UNSUPPORTED;
> + }
> +
> + //
> + // Check whether request for EFI Varstore. EFI varstore get data
> + // through hii database, not support in this path.
> + //
> + if (HiiIsConfigHdrMatch(Request, &gHii2RedfishMemoryFormsetGuid,
> L"Hii2RedfishMemoryEfiVar")) {
> + return EFI_UNSUPPORTED;
> + }
> +
> + return EFI_NOT_FOUND;
> +}
> +
> +
> +/**
> + This function processes the results of changes in configuration.
> +
> + @param[in] This Points to the
> EFI_HII_CONFIG_ACCESS_PROTOCOL.
> + @param[in] Configuration A null-terminated Unicode string in
> <ConfigResp>
> + format.
> + @param[out] Progress A pointer to a string filled in with the offset of
> + the most recent '&' before the first failing
> + name/value pair (or the beginning of the string if
> + the failure is in the first name/value pair) or
> + the terminating NULL if all was successful.
> +
> + @retval EFI_SUCCESS The Results is processed successfully.
> + @retval EFI_INVALID_PARAMETER Configuration is NULL.
> + @retval EFI_NOT_FOUND Routing data doesn't match any storage in
> this
> + driver.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishMemoryRouteConfig (
> + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
> + IN CONST EFI_STRING Configuration,
> + OUT EFI_STRING *Progress
> + )
> +{
> + DEBUG ((DEBUG_INFO, "%a, unsupported\n", __FUNCTION__));
> +
> + return EFI_UNSUPPORTED;
> +}
> +
> +
> +/**
> + This function processes the results of changes in configuration.
> +
> + @param[in] This Points to the
> EFI_HII_CONFIG_ACCESS_PROTOCOL.
> + @param[in] Action Specifies the type of action taken by the browser.
> + @param[in] QuestionId A unique value which is sent to the original
> + exporting driver so that it can identify the type
> + of data to expect.
> + @param[in] Type The type of value for the question.
> + @param[in] Value A pointer to the data being sent to the original
> + exporting driver.
> + @param[out] ActionRequest On return, points to the action requested
> by the
> + callback function.
> +
> + @retval EFI_SUCCESS The callback successfully handled the action.
> + @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold
> the
> + variable and its data.
> + @retval EFI_DEVICE_ERROR The variable could not be saved.
> + @retval EFI_UNSUPPORTED The specified Action is not supported by
> the
> + callback.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishMemoryDriverCallback (
> + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
> + IN EFI_BROWSER_ACTION Action,
> + IN EFI_QUESTION_ID QuestionId,
> + IN UINT8 Type,
> + IN EFI_IFR_TYPE_VALUE *Value,
> + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
> + )
> +{
> + DEBUG ((DEBUG_INFO, "%a, action: 0x%x QID: 0x%x\n", __FUNCTION__,
> Action, QuestionId));
> +
> + return EFI_UNSUPPORTED;
> +}
> +
> +EFI_HII_CONFIG_ACCESS_PROTOCOL mHii2RedfishConfigAccess = {
> + Hii2RedfishMemoryExtractConfig,
> + Hii2RedfishMemoryRouteConfig,
> + Hii2RedfishMemoryDriverCallback
> +};
> +
> +/**
> + Main entry for this driver.
> +
> + @param[in] ImageHandle Image handle this driver.
> + @param[in] SystemTable Pointer to SystemTable.
> +
> + @retval EFI_SUCESS This function always complete successfully.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishMemoryDxeDriverEntryPoint (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +{
> + EFI_STATUS Status;
> +
> + DriverHandle = NULL;
> + Status = gBS->InstallMultipleProtocolInterfaces (
> + &DriverHandle,
> + &gEfiDevicePathProtocolGuid,
> + &mHiiVendorDevicePath,
> + &gEfiHiiConfigAccessProtocolGuid,
> + &mHii2RedfishConfigAccess,
> + NULL
> + );
> +
> + //
> + // Publish our HII data
> + //
> + mHiiHandle = HiiAddPackages (
> + &mHii2RedfishMemoryGuid,
> + DriverHandle,
> + Hii2RedfishMemoryDxeStrings,
> + Hii2RedfishMemoryVfrBin,
> + NULL
> + );
> + if (mHiiHandle == NULL) {
> + return EFI_OUT_OF_RESOURCES;
> + }
> +
> + Status = InitialHiiVairable ();
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "%a, failed to initial variable: %r\n",
> __FUNCTION__, Status));
> + }
> +
> + return EFI_SUCCESS;
> +}
> +
> +/**
> + Unloads the application and its installed protocol.
> +
> + @param[in] ImageHandle Handle that identifies the image to be
> unloaded.
> +
> + @retval EFI_SUCCESS The image has been unloaded.
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishMemoryDxeDriverUnload (
> + IN EFI_HANDLE ImageHandle
> + )
> +{
> + if (mHiiHandle != NULL) {
> + HiiRemovePackages (mHiiHandle);
> + }
> +
> + return EFI_SUCCESS;
> +}
> diff --git
> a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> new file mode 100644
> index 00000000000..66e2ece21f5
> --- /dev/null
> +++
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> @@ -0,0 +1,38 @@
> +/** @file
> + HII-to-Redfish memory driver.
> +
> + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +#langdef x-uefi-redfish-Memory.v1_7_1 "Memory.v1_7_1"
> +
> +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{1}/BaseModuleType"
> +#string STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{1}/BusWidthBits"
> +#string STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{1}/ConfigurationLocked"
> +#string STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{1}/ModuleProductID"
> +
> +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{2}/BaseModuleType"
> +#string STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{2}/BusWidthBits"
> +#string STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{2}/ConfigurationLocked"
> +#string STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{2}/ModuleProductID"
> +
> +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{3}/BaseModuleType"
> +#string STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{3}/BusWidthBits"
> +#string STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{3}/ConfigurationLocked"
> +#string STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{3}/ModuleProductID"
> +
> +#string STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{5}/BaseModuleType"
> +#string STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT #language x-
> uefi-redfish-Memory.v1_7_1 "/Memory/{5}/BusWidthBits"
> +#string STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{5}/ConfigurationLocked"
> +#string STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT #language
> x-uefi-redfish-Memory.v1_7_1 "/Memory/{5}/ModuleProductID"
> +
> +#string STR_MEMORY_RDIMM_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "RDIMM"
> +#string STR_MEMORY_UDIMM_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "UDIMM"
> +#string STR_MEMORY_SO_DIMM_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "SO_DIMM"
> +#string STR_MEMORY_LRDIMM_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "LRDIMM"
> +#string STR_MEMORY_MINI_RDIMM_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "Mini_RDIMM"
> +#string STR_MEMORY_MINI_UDIMM_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1 "Mini_UDIMM"
> \ No newline at end of file
> diff --git
> a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> new file mode 100644
> index 00000000000..92e8b8b5f3d
> --- /dev/null
> +++
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> @@ -0,0 +1,68 @@
> +/** @file
> + HII-to-Redfish memory driver.
> +
> + (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +#langdef en-US "English"
> +
> +#string STR_FORM_SET_TITLE #language en-US "HII to Redfish
> (Memory)"
> +#string STR_FORM_SET_TITLE_HELP #language en-US "HII to
> Redfish (Memory)"
> +#string STR_FORM_TITLE #language en-US "HII to Redfish
> Memory properties"
> +
> +#string STR_FORM_TITLE_MEMORY_1 #language en-US "Memory
> 1"
> +#string STR_FORM_HELP_MEMORY_1 #language en-US "Memory
> 1"
> +#string STR_FORM_TITLE_MEMORY_2 #language en-US "Memory
> 2"
> +#string STR_FORM_HELP_MEMORY_2 #language en-US "Memory
> 2"
> +#string STR_FORM_TITLE_MEMORY_3 #language en-US "Memory
> 3"
> +#string STR_FORM_HELP_MEMORY_3 #language en-US "Memory
> 3"
> +#string STR_FORM_TITLE_MEMORY_4 #language en-US "Memory
> 5"
> +#string STR_FORM_HELP_MEMORY_4 #language en-US "Memory
> 5"
> +
> +
> +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language en-
> US "Base module type"
> +#string STR_MEMORY_1_BASE_MODULE_TYPE_HELP #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_1_BUS_WIDTH_BITS_HELP #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT #language
> en-US "Configuration Locked"
> +#string STR_MEMORY_1_CONFIGURATION_LOCKED_HELP #language en-
> US "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT #language en-
> US "Module Product ID"
> +#string STR_MEMORY_1_MODULE_PRODUCT_ID_HELP #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT #language en-
> US "Base module type"
> +#string STR_MEMORY_2_BASE_MODULE_TYPE_HELP #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_2_BUS_WIDTH_BITS_HELP #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT #language
> en-US "Configuration Locked"
> +#string STR_MEMORY_2_CONFIGURATION_LOCKED_HELP #language en-
> US "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT #language en-
> US "Module Product ID"
> +#string STR_MEMORY_2_MODULE_PRODUCT_ID_HELP #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT #language en-
> US "Base module type"
> +#string STR_MEMORY_3_BASE_MODULE_TYPE_HELP #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_3_BUS_WIDTH_BITS_HELP #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT #language
> en-US "Configuration Locked"
> +#string STR_MEMORY_3_CONFIGURATION_LOCKED_HELP #language en-
> US "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT #language en-
> US "Module Product ID"
> +#string STR_MEMORY_3_MODULE_PRODUCT_ID_HELP #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT #language en-
> US "Base module type"
> +#string STR_MEMORY_4_BASE_MODULE_TYPE_HELP #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_4_BUS_WIDTH_BITS_HELP #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT #language
> en-US "Configuration Locked"
> +#string STR_MEMORY_4_CONFIGURATION_LOCKED_HELP #language en-
> US "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT #language en-
> US "Module Product ID"
> +#string STR_MEMORY_4_MODULE_PRODUCT_ID_HELP #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_RDIMM_PROMPT #language en-US
> "RDIMM"
> +#string STR_MEMORY_UDIMM_PROMPT #language en-US
> "UDIMM"
> +#string STR_MEMORY_SO_DIMM_PROMPT #language en-US
> "SO_DIMM"
> +#string STR_MEMORY_LRDIMM_PROMPT #language en-US
> "LRDIMM"
> +#string STR_MEMORY_MINI_RDIMM_PROMPT #language en-US
> "Mini_RDIMM"
> +#string STR_MEMORY_MINI_UDIMM_PROMPT #language en-US
> "Mini_UDIMM"
> --
> 2.21.0.windows.1
>
>
>
>
>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-10-29 8:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <16B25D0D5E069C47.9643@groups.io>
2021-10-29 8:39 ` [edk2-devel] [PATCH] edk2-staging/EmulatorPkg: Add a sample memory configuration HII driver Abner Chang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox