public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Chang, Abner" <abner.chang@amd.com>
To: Nickle Wang <nickle.wang@hpe.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Andrew Fish <afish@apple.com>, Ray Ni <ray.ni@intel.com>,
	"Yang, Atom" <Atom.Yang@amd.com>,
	Nick Ramirez <nramirez@nvidia.com>
Subject: Re: [edk2-staging][PATCH v2 2/2] edk2-staging/EmulatorPkg: Introduce Hii2RedfishBiosDxe driver
Date: Mon, 25 Jul 2022 14:45:30 +0000	[thread overview]
Message-ID: <MN2PR12MB3966EBF2AAFE0BBA783801BEEA959@MN2PR12MB3966.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20220725013540.1699-2-nickle.wang@hpe.com>

[AMD Official Use Only - General]

Reviewed-by: Abner Chang <abner.chang@amd.com>

> -----Original Message-----
> From: Nickle Wang <nickle.wang@hpe.com>
> Sent: Monday, July 25, 2022 9:36 AM
> To: devel@edk2.groups.io
> Cc: Andrew Fish <afish@apple.com>; Ray Ni <ray.ni@intel.com>; Chang,
> Abner <Abner.Chang@amd.com>; Yang, Atom <Atom.Yang@amd.com>;
> Nick Ramirez <nramirez@nvidia.com>
> Subject: [edk2-staging][PATCH v2 2/2] edk2-staging/EmulatorPkg: Introduce
> Hii2RedfishBiosDxe driver
> 
> [CAUTION: External Email]
> 
> Add Hii2RedfishBiosDxe driver with configure language defined in UNI file in
> order to demonstrate the use of Redfish Platform Config Protocol. Feature
> drivers under RedfishClientPkg will work with this driver and provide the
> REST data to Redfish service.
> 
> Signed-off-by: Nickle Wang <nickle.wang@hpe.com>
> Cc: Andrew Fish <afish@apple.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Yang Atom <Atom.Yang@amd.com>
> Cc: Nick Ramirez <nramirez@nvidia.com>
> ---
>  EmulatorPkg/EmulatorPkg.dec                   |   1 +
>  EmulatorPkg/EmulatorPkg.dsc                   |   1 +
>  EmulatorPkg/EmulatorPkg.fdf                   |   1 +
>  .../Hii2RedfishBiosDxe/Hii2RedfishBiosData.h  |  46 +++
>  .../Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.c   | 291 ++++++++++++++++++
>  .../Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.h   |  44 +++
>  .../Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf |  55 ++++
>  .../Hii2RedfishBiosDxeMap.uni                 |  20 ++
>  .../Hii2RedfishBiosDxeStrings.uni             |  30 ++
>  .../Hii2RedfishBiosDxe/Hii2RedfishBiosVfr.vfr |  67 ++++
>  10 files changed, 556 insertions(+)
>  create mode 100644 EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosData.h
>  create mode 100644 EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.c
>  create mode 100644 EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.h
>  create mode 100644
> EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf
>  create mode 100644
> EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeMap.uni
>  create mode 100644
> EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeStrings.uni
>  create mode 100644 EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosVfr.vfr
> 
> diff --git a/EmulatorPkg/EmulatorPkg.dec b/EmulatorPkg/EmulatorPkg.dec
> index 52a62c09c9..e782b15266 100644
> --- a/EmulatorPkg/EmulatorPkg.dec
> +++ b/EmulatorPkg/EmulatorPkg.dec
> @@ -49,6 +49,7 @@
>    gEmuRedfishServiceGuid     = { 0x3fb208ac, 0x2185, 0x498c, { 0xbf, 0x46,
> 0xdc, 0x23, 0xda, 0x58, 0x7b, 0x55 } }
>    gHii2RedfishMemoryFormsetGuid  = { 0xC2BE579E, 0x3C57, 0x499C, { 0xA9,
> 0xDF, 0xE6, 0x23, 0x8A, 0x49, 0x64, 0xF8 }}
>    gHii2RedfishBootFormsetGuid  = { 0x8399a787, 0x108e, 0x4e53, { 0x9e, 0xde,
> 0x4b, 0x18, 0xcc, 0x9e, 0xab, 0x3b }}
> +  gHii2RedfishBiosFormsetGuid  = { 0xC2724AD1, 0x4049, 0x2404, { 0xF8,
> + 0xCE, 0x01, 0xA7, 0x9C, 0xEC, 0x16, 0xF6 }}
> 
>  [PcdsFeatureFlag]
>    ## If TRUE, if symbols only load on breakpoints and gdb entry diff --git
> a/EmulatorPkg/EmulatorPkg.dsc b/EmulatorPkg/EmulatorPkg.dsc index
> 1d59b4a1dd..dd1d9ef9ec 100644
> --- a/EmulatorPkg/EmulatorPkg.dsc
> +++ b/EmulatorPkg/EmulatorPkg.dsc
> @@ -491,6 +491,7 @@
>  !if $(REDFISH_ENABLE) == TRUE
>    EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
>    EmulatorPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> +  EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf
>  !endif
>  !include RedfishPkg/Redfish.dsc.inc
>  !include RedfishClientPkg/RedfishClient.dsc.inc
> diff --git a/EmulatorPkg/EmulatorPkg.fdf b/EmulatorPkg/EmulatorPkg.fdf
> index f9ff4320d9..9e594533d8 100644
> --- a/EmulatorPkg/EmulatorPkg.fdf
> +++ b/EmulatorPkg/EmulatorPkg.fdf
> @@ -215,6 +215,7 @@ INF  EmulatorPkg/EmuSnpDxe/EmuSnpDxe.inf
>  !if $(REDFISH_ENABLE) == TRUE
>    INF EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
>    INF EmulatorPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> +  INF EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf
>  !endif
>  !include RedfishPkg/Redfish.fdf.inc
>  !include RedfishClientPkg/RedfishClient.fdf.inc
> diff --git a/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosData.h
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosData.h
> new file mode 100644
> index 0000000000..1b27dfd168
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosData.h
> @@ -0,0 +1,46 @@
> +/** @file
> +  The header file of HII-to-Redfish BIOS example driver.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_BIOS_DATA_H_
> +#define HII_2_REDFISH_BIOS_DATA_H_
> +
> +#include <Uefi/UefiMultiPhase.h>
> +#include <Guid/HiiPlatformSetupFormset.h>
> +
> +#define HII_2_REDFISH_BIOS_FORMSET_GUID \
> +  { \
> +    0xC2724AD1, 0x4049, 0x2404, { 0xF8, 0xCE, 0x01, 0xA7, 0x9C, 0xEC, 0x16,
> 0xF6 } \
> +    }
> +
> +extern EFI_GUID gHii2RedfishBiosFormsetGuid;
> +
> +#define FORM_ID                                     0x001
> +#define FROM_ID_BIOS_OPTION_1                       0x002
> +#define FROM_ID_BIOS_OPTION_2                       0x003
> +#define FROM_ID_BIOS_OPTION_3                       0x004
> +#define FROM_ID_BIOS_OPTION_4                       0x005
> +
> +#define ID_STRING_MIN                                 0
> +#define ID_STRING_MAX                                 15
> +#define ID_STRING_MAX_WITH_TERMINATOR                 16
> +
> +#pragma pack()
> +
> +//
> +// Definiton of HII_2_REDFISH_BIOS_VARSTORE_DATA // typedef struct {
> +  UINT8    RefishBiosOption1Data;
> +  CHAR16   RefishBiosOption2Data [ID_STRING_MAX_WITH_TERMINATOR];
> +  UINT8    RefishBiosOption3Data;
> +  UINT8    RefishBiosOption4Data;
> +  UINT8    Reserved;
> +} HII_2_REDFISH_BIOS_EFI_VARSTORE_DATA;
> +
> +#endif
> diff --git a/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.c
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.c
> new file mode 100644
> index 0000000000..0d4c90c335
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.c
> @@ -0,0 +1,291 @@
> +/** @file
> +  HII-to-Redfish Bios example driver.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "Hii2RedfishBiosDxe.h"
> +
> +EFI_GUID        mHii2RedfishBiosGuid =
> HII_2_REDFISH_BIOS_FORMSET_GUID;
> +EFI_HII_HANDLE  mHiiHandle;
> +EFI_HANDLE      DriverHandle;
> +CHAR16          Hii2RedfishEfiVar[] = L"Hii2RedfishBiosEfiVar";
> +
> +///
> +/// 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_BIOS_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_BIOS_EFI_VARSTORE_DATA Hii2RedfishBiosVar;
> +
> +  //
> +  // Get Buffer Storage data from EFI variable.
> +  // Try to get the current setting from variable.
> +  //
> +  BufferSize = sizeof (HII_2_REDFISH_BIOS_EFI_VARSTORE_DATA);
> +  Status = gRT->GetVariable (
> +            Hii2RedfishEfiVar,
> +            &gHii2RedfishBiosFormsetGuid,
> +            NULL,
> +            &BufferSize,
> +            &Hii2RedfishBiosVar
> +            );
> +  if (!EFI_ERROR (Status)) {
> +    return EFI_SUCCESS;
> +  }
> +
> +  //
> +  // Initialization
> +  //
> +  Hii2RedfishBiosVar.RefishBiosOption1Data =
> STR_BIOS_OPTION_1_ITEM_1;
> + StrCpyS (Hii2RedfishBiosVar.RefishBiosOption2Data,
> + ID_STRING_MAX_WITH_TERMINATOR, L"Default");
> + Hii2RedfishBiosVar.RefishBiosOption3Data = 5;
> + Hii2RedfishBiosVar.RefishBiosOption4Data = TRUE;
> +
> +  Status = gRT->SetVariable (
> +                  Hii2RedfishEfiVar,
> +                  &gHii2RedfishBiosFormsetGuid,
> +                  VARIABLE_ATTRIBUTE_NV_BS,
> +                  BufferSize,
> +                  &Hii2RedfishBiosVar
> +                  );
> +
> +  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
> +Hii2RedfishBiosExtractConfig (
> +  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, &gHii2RedfishBiosFormsetGuid,
> L"Hii2RedfishBiosEfiVar")) {
> +      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
> +Hii2RedfishBiosRouteConfig (
> +  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
> +Hii2RedfishBiosDriverCallback (
> +  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 = {
> +  Hii2RedfishBiosExtractConfig,
> +  Hii2RedfishBiosRouteConfig,
> +  Hii2RedfishBiosDriverCallback
> +};
> +
> +/**
> +  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
> +Hii2RedfishBiosDxeDriverEntryPoint (
> +  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 (
> +                 &mHii2RedfishBiosGuid,
> +                 DriverHandle,
> +                 Hii2RedfishBiosDxeStrings,
> +                 Hii2RedfishBiosVfrBin,
> +                 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
> +Hii2RedfishBiosDxeDriverUnload (
> +  IN EFI_HANDLE  ImageHandle
> +  )
> +{
> +  if (mHiiHandle != NULL) {
> +    HiiRemovePackages (mHiiHandle);
> +  }
> +
> +  return EFI_SUCCESS;
> +}
> diff --git a/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.h
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.h
> new file mode 100644
> index 0000000000..b7f9aceeb0
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.h
> @@ -0,0 +1,44 @@
> +/** @file
> +  HII-to-Redfish BIOS example driver header file.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_BIOS_DXE_H_
> +#define HII_2_REDFISH_BIOS_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 "Hii2RedfishBiosData.h"
> +
> +extern UINT8 Hii2RedfishBiosVfrBin[];
> +
> +#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/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf
> new file mode 100644
> index 0000000000..06080113a1
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxe.inf
> @@ -0,0 +1,55 @@
> +## @file
> +#  HII-to-Redfish BIOS Example driver.
> +#
> +#  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR> # #
> +SPDX-License-Identifier: BSD-2-Clause-Patent # ##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = Hii2RedfishBiosDxe
> +  FILE_GUID                      = 9A7FA287-4038-CB66-DC70-92AE8C0FCF73
> +  MODULE_TYPE                    = UEFI_DRIVER
> +  VERSION_STRING                 = 1.0
> +  ENTRY_POINT                    = Hii2RedfishBiosDxeDriverEntryPoint
> +  UNLOAD_IMAGE                   = Hii2RedfishBiosDxeDriverUnload
> +
> +[Sources]
> +  Hii2RedfishBiosDxe.c
> +  Hii2RedfishBiosDxe.h
> +  Hii2RedfishBiosData.h
> +  Hii2RedfishBiosVfr.vfr
> +  Hii2RedfishBiosDxeStrings.uni
> +  Hii2RedfishBiosDxeMap.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]
> +  gHii2RedfishBiosFormsetGuid
> +
> +[Depex]
> +  gEfiHiiDatabaseProtocolGuid
> +
> diff --git a/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeMap.uni
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeMap.uni
> new file mode 100644
> index 0000000000..51d6d7ecb8
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeMap.uni
> @@ -0,0 +1,20 @@
> +/** @file
> +  HII-to-Redfish BIOS example driver.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +#langdef   x-uefi-redfish-Bios.v1_0_9 "Bios.v1_0_9"
> +
> +#string STR_BIOS_OPTION_1_PROMPT        #language x-uefi-redfish-
> Bios.v1_0_9   "/Bios/Attributes/BiosOption1"
> +#string STR_BIOS_OPTION_2_PROMPT        #language x-uefi-redfish-
> Bios.v1_0_9   "/Bios/Attributes/BiosOption2"
> +#string STR_BIOS_OPTION_3_PROMPT        #language x-uefi-redfish-
> Bios.v1_0_9   "/Bios/Attributes/BiosOption3"
> +#string STR_BIOS_OPTION_4_PROMPT        #language x-uefi-redfish-
> Bios.v1_0_9   "/Bios/Attributes/BiosOption4"
> +
> +#string STR_BIOS_OPTION_1_ITEM_1        #language x-uefi-redfish-
> Bios.v1_0_9   "Item #1"
> +#string STR_BIOS_OPTION_1_ITEM_2        #language x-uefi-redfish-
> Bios.v1_0_9   "Item #2"
> +#string STR_BIOS_OPTION_1_ITEM_3        #language x-uefi-redfish-
> Bios.v1_0_9   "Item #3"
> diff --git a/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeStrings.uni
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeStrings.uni
> new file mode 100644
> index 0000000000..84311e72a4
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosDxeStrings.uni
> @@ -0,0 +1,30 @@
> +#string /** @file
> +  HII-to-Redfish BIOS example driver.
> +
> +  (C) Copyright 2022 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
> (BIOS)"
> +#string STR_FORM_SET_TITLE_HELP                #language en-US    "HII to
> Redfish (BIOS)"
> +#string STR_FORM_TITLE                         #language en-US    "HII to Redfish
> BIOS properties"
> +
> +#string STR_BIOS_OPTION_1_PROMPT               #language en-US    "HII
> Redfish BIOS Option 1"
> +#string STR_BIOS_OPTION_2_PROMPT               #language en-US    "HII
> Redfish BIOS Option 2"
> +#string STR_BIOS_OPTION_3_PROMPT               #language en-US    "HII
> Redfish BIOS Option 3"
> +#string STR_BIOS_OPTION_4_PROMPT               #language en-US    "HII
> Redfish BIOS Option 4"
> +
> +#string STR_BIOS_OPTION_1_HELP                 #language en-US    "HII Redfish
> BIOS Option 1"
> +#string STR_BIOS_OPTION_2_HELP                 #language en-US    "HII Redfish
> BIOS Option 2"
> +#string STR_BIOS_OPTION_3_HELP                 #language en-US    "HII Redfish
> BIOS Option 3"
> +#string STR_BIOS_OPTION_4_HELP                 #language en-US    "HII Redfish
> BIOS Option 4"
> +
> +#string STR_BIOS_OPTION_1_ITEM_1               #language en-US    "Item #1"
> +#string STR_BIOS_OPTION_1_ITEM_2               #language en-US    "Item #2"
> +#string STR_BIOS_OPTION_1_ITEM_3               #language en-US    "Item #3"
> +
> diff --git a/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosVfr.vfr
> b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosVfr.vfr
> new file mode 100644
> index 0000000000..896feda541
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishBiosDxe/Hii2RedfishBiosVfr.vfr
> @@ -0,0 +1,67 @@
> +/** @file
> +  HII-to-Redfish BIOS example driver VFR file.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +
> +#include "Hii2RedfishBiosData.h"
> +
> +formset
> +  guid      = HII_2_REDFISH_BIOS_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_BIOS_EFI_VARSTORE_DATA,
> +    attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS |
> EFI_VARIABLE_NON_VOLATILE,  // EFI variable attribures
> +    name  = Hii2RedfishBiosEfiVar,
> +    guid  = HII_2_REDFISH_BIOS_FORMSET_GUID;
> +
> +  //
> +  // Define a Form (EFI_IFR_FORM)
> +  //
> +  form formid = FORM_ID,                          // Form ID
> +       title  = STRING_TOKEN(STR_FORM_TITLE);     // Form title
> +
> +    oneof varid = Hii2RedfishBiosEfiVar.RefishBiosOption1Data,
> +          questionid = FROM_ID_BIOS_OPTION_1,
> +          prompt = STRING_TOKEN(STR_BIOS_OPTION_1_PROMPT),
> +          help   = STRING_TOKEN(STR_BIOS_OPTION_1_HELP),
> +          flags  = INTERACTIVE | NUMERIC_SIZE_1,
> +          option text = STRING_TOKEN(STR_BIOS_OPTION_1_ITEM_1),       value
> = STR_BIOS_OPTION_1_ITEM_1, flags = DEFAULT;
> +          option text = STRING_TOKEN(STR_BIOS_OPTION_1_ITEM_2),       value
> = STR_BIOS_OPTION_1_ITEM_2,   flags = 0;
> +          option text = STRING_TOKEN(STR_BIOS_OPTION_1_ITEM_3),       value
> = STR_BIOS_OPTION_1_ITEM_3,   flags = 0;
> +    endoneof;
> +
> +    string varid = Hii2RedfishBiosEfiVar.RefishBiosOption2Data,
> +        prompt = STRING_TOKEN(STR_BIOS_OPTION_2_PROMPT),
> +        help = STRING_TOKEN(STR_BIOS_OPTION_2_HELP),
> +        flags = READ_ONLY,
> +        minsize = ID_STRING_MIN,
> +        maxsize = ID_STRING_MAX,
> +    endstring;
> +
> +    numeric varid   = Hii2RedfishBiosEfiVar.RefishBiosOption3Data,
> +            prompt  = STRING_TOKEN(STR_BIOS_OPTION_3_PROMPT),
> +            help    = STRING_TOKEN(STR_BIOS_OPTION_3_HELP),
> +            minimum = 0,
> +            maximum = 0xff,
> +            step    = 1,
> +            default = 20,
> +    endnumeric;
> +
> +    checkbox varid   = Hii2RedfishBiosEfiVar.RefishBiosOption4Data,
> +             prompt   = STRING_TOKEN(STR_BIOS_OPTION_4_PROMPT),
> +             help     = STRING_TOKEN(STR_BIOS_OPTION_4_PROMPT),
> +             flags    = CHECKBOX_DEFAULT,
> +             default  = TRUE,
> +    endcheckbox;
> +  endform;
> +endformset;
> --
> 2.32.0.windows.2

  reply	other threads:[~2022-07-25 14:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-25  1:35 [edk2-staging][PATCH v2 1/2] edk2-staging/EmulatorPkg: Introduce Hii2RedfishBootDxe driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 2/2] edk2-staging/EmulatorPkg: Introduce Hii2RedfishBiosDxe driver Nickle Wang
2022-07-25 14:45   ` Chang, Abner [this message]
2022-07-25 14:31 ` [edk2-staging][PATCH v2 1/2] edk2-staging/EmulatorPkg: Introduce Hii2RedfishBootDxe driver Chang, Abner

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=MN2PR12MB3966EBF2AAFE0BBA783801BEEA959@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