public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Chang, Abner" <abner.chang@amd.com>
To: Nickle Wang <nicklew@nvidia.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Igor Kulchytskyy <igork@ami.com>
Subject: Re: [edk2-redfish-client][PATCH 1/3] RedfishClientPkg: Add a sample memory configuration HII driver
Date: Wed, 7 Jun 2023 06:56:30 +0000	[thread overview]
Message-ID: <MN2PR12MB3966411A4F9C62676E531F73EA53A@MN2PR12MB3966.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20230606133810.4542-1-nicklew@nvidia.com>

[AMD Official Use Only - General]

Hi Nickle,
I have no problem with this patch except for the file naming and function that use "2" instead of "To".
Could you replace "2" with "To" in those naming?

Thanks
Abner

> -----Original Message-----
> From: Nickle Wang <nicklew@nvidia.com>
> Sent: Tuesday, June 6, 2023 9:38 PM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>
> Subject: [edk2-redfish-client][PATCH 1/3] RedfishClientPkg: Add a sample
> memory configuration HII driver
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> 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.
>
> The HII option strings those applied with "x-uef-redfish-* HII language
> are connected to the corresponding Redfish properties.
>
> e.g.
> 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-redfish-
> client/blob/main/RedfishClientPkg/Readme.md
>
> Below for RedfishPkg design architecture,
> https://github.com/tianocore/edk2/blob/master/RedfishPkg/Readme.md
>
> Signed-off-by: Nickle Wang <nicklew@nvidia.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> ---
>  RedfishClientPkg/RedfishClientPkg.dec         |   2 +
>  .../RedfishClientComponents.dsc.inc           |   2 +
>  RedfishClientPkg/RedfishClientPkg.dsc         |   2 +
>  .../Hii2RedfishMemoryDxe.inf                  |  56 ++++
>  .../Hii2RedfishMemoryData.h                   |  71 +++++
>  .../Hii2RedfishMemoryDxe.h                    |  44 +++
>  .../Hii2RedfishMemoryVfr.vfr                  | 219 +++++++++++++
>  .../Hii2RedfishMemoryDxe.c                    | 292 ++++++++++++++++++
>  .../Hii2RedfishMemoryDxeMap.uni               |  38 +++
>  .../Hii2RedfishMemoryDxeStrings.uni           |  68 ++++
>  RedfishClientPkg/RedfishClient.fdf.inc        |   4 +-
>  11 files changed, 797 insertions(+), 1 deletion(-)
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
>  create mode 100644
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
>
> diff --git a/RedfishClientPkg/RedfishClientPkg.dec
> b/RedfishClientPkg/RedfishClientPkg.dec
> index 84bceca3..af241cf6 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dec
> +++ b/RedfishClientPkg/RedfishClientPkg.dec
> @@ -57,6 +57,8 @@
>    ## Include/RedfishBase.h
>    gEfiRedfishClientVariableGuid                   = { 0x91c46a3d, 0xed1a, 0x477b,
> { 0xa5, 0x33, 0x87, 0x2d, 0xcd, 0xb0, 0xfc, 0xc1 } }
>
> +  gHii2RedfishMemoryFormsetGuid                   = { 0XC2BE579E, 0X3C57,
> 0X499C, { 0XA9, 0XDF, 0XE6, 0X23, 0X8A, 0X49, 0X64, 0XF8 }}
> +
>  [PcdsFixedAtBuild]
>
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|UI
> NT32|0x10000001
>
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8|UI
> NT32|0x10000002
> diff --git a/RedfishClientPkg/RedfishClientComponents.dsc.inc
> b/RedfishClientPkg/RedfishClientComponents.dsc.inc
> index e83f4bc9..3451c185 100644
> --- a/RedfishClientPkg/RedfishClientComponents.dsc.inc
> +++ b/RedfishClientPkg/RedfishClientComponents.dsc.inc
> @@ -7,6 +7,7 @@
>  # "RedfishClientDefines.dsc.inc".
>  #
>  # (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP<BR>
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
>  #
>  #    SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
> @@ -16,6 +17,7 @@
>    RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.inf
>    RedfishClientPkg/RedfishETagDxe/RedfishETagDxe.inf
>    RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf
> +  RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
>  !endif
>    #
>    # Below two modules should be pulled in by build tool.
> diff --git a/RedfishClientPkg/RedfishClientPkg.dsc
> b/RedfishClientPkg/RedfishClientPkg.dsc
> index d3b645b6..ac9f8e9d 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dsc
> +++ b/RedfishClientPkg/RedfishClientPkg.dsc
> @@ -37,6 +37,8 @@
>    Ucs2Utf8Lib|RedfishPkg/Library/BaseUcs2Utf8Lib/BaseUcs2Utf8Lib.inf
>    RedfishCrtLib|RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf
>    BaseSortLib|MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
> +  HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
> +
> UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesL
> ib.inf
>
>  [LibraryClasses.ARM, LibraryClasses.AARCH64]
>    #
> diff --git
> a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> new file mode 100644
> index 00000000..2dd6b0dd
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> @@ -0,0 +1,56 @@
> +## @file
> +#  HII-to-Redfish memory driver.
> +#
> +#  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +#  Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> +#
> +#  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
> +  RedfishClientPkg/RedfishClientPkg.dec
> +
> +[LibraryClasses]
> +  UefiDriverEntryPoint
> +  BaseLib
> +  BaseMemoryLib
> +  DebugLib
> +  PcdLib
> +  MemoryAllocationLib
> +  UefiBootServicesTableLib
> +  UefiRuntimeServicesTableLib
> +  UefiLib
> +  PrintLib
> +  HiiLib
> +
> +[Protocols]
> +  gEfiDevicePathProtocolGuid
> +  gEfiHiiConfigAccessProtocolGuid
> +
> +
> +[Guids]
> +  gHii2RedfishMemoryFormsetGuid
> +
> +[Depex]
> +  gEfiHiiDatabaseProtocolGuid
> +
> diff --git
> a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> new file mode 100644
> index 00000000..df8449d7
> --- /dev/null
> +++ b/RedfishClientPkg/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/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> new file mode 100644
> index 00000000..c00972ad
> --- /dev/null
> +++ b/RedfishClientPkg/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
> diff --git
> a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> new file mode 100644
> index 00000000..99f5e9a4
> --- /dev/null
> +++ b/RedfishClientPkg/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;
> diff --git
> a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> new file mode 100644
> index 00000000..83710240
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> @@ -0,0 +1,292 @@
> +/** @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", __func__));
> +
> +  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", __func__, 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", __func__,
> 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/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> new file mode 100644
> index 00000000..de1a6ef3
> --- /dev/null
> +++
> b/RedfishClientPkg/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"
> diff --git
> a/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.u
> ni
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.u
> ni
> new file mode 100644
> index 00000000..bfa082fd
> --- /dev/null
> +++
> b/RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.u
> ni
> @@ -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"
> diff --git a/RedfishClientPkg/RedfishClient.fdf.inc
> b/RedfishClientPkg/RedfishClient.fdf.inc
> index fa4e5389..7421440b 100644
> --- a/RedfishClientPkg/RedfishClient.fdf.inc
> +++ b/RedfishClientPkg/RedfishClient.fdf.inc
> @@ -2,10 +2,11 @@
>  # Redfish Client FDF include file for [FV*] section of all Architectures.
>  #
>  # This file can be included to the [FV*] section(s) of a platform FDF file
> -# by using "!include RedfishClientPkg/RedfisClientLibs.fdf.inc" to specify the
> module instances
> +# by using "!include RedfishClientPkg/RedfishClientLibs.fdf.inc" to specify the
> module instances
>  # to be built in the firmware volume.
>  #
>  # (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP<BR>
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
>  #
>  #    SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
> @@ -19,6 +20,7 @@
>    INF
> RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSystemD
> xe.inf
>    INF
> RedfishClientPkg/Features/ComputerSystemCollectionDxe/ComputerSystem
> CollectionDxe.inf
>    INF RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf
> +  INF RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
>
>    !include RedfishClientPkg/RedfishJsonStructureDxe.fdf.inc
>    #
> --
> 2.17.1


      reply	other threads:[~2023-06-07  6:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-06 13:38 [edk2-redfish-client][PATCH 1/3] RedfishClientPkg: Add a sample memory configuration HII driver Nickle Wang
2023-06-07  6:56 ` Chang, Abner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN2PR12MB3966411A4F9C62676E531F73EA53A@MN2PR12MB3966.namprd12.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox