REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2696

This library provides firmware device specific services to support
saving dependency to firmware device and getting dependency from
firmware device.

Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Sean Brogan <sean.bro...@microsoft.com>
Signed-off-by: Wei6 Xu <wei6...@intel.com>
---
 FmpDevicePkg/FmpDevicePkg.dec                      |  5 +++
 FmpDevicePkg/FmpDevicePkg.dsc                      |  2 +
 .../Include/Library/FmpDependencyDeviceLib.h       | 51 ++++++++++++++++++++++
 .../FmpDependencyDeviceLib.c                       | 50 +++++++++++++++++++++
 .../FmpDependencyDeviceLibNull.inf                 | 29 ++++++++++++
 .../FmpDependencyDeviceLibNull.uni                 | 12 +++++
 6 files changed, 149 insertions(+)
 create mode 100644 FmpDevicePkg/Include/Library/FmpDependencyDeviceLib.h
 create mode 100644 
FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLib.c
 create mode 100644 
FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
 create mode 100644 
FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.uni

diff --git a/FmpDevicePkg/FmpDevicePkg.dec b/FmpDevicePkg/FmpDevicePkg.dec
index 871d5ce890..cab63f5a47 100644
--- a/FmpDevicePkg/FmpDevicePkg.dec
+++ b/FmpDevicePkg/FmpDevicePkg.dec
@@ -41,10 +41,15 @@
 
   ##  @libraryclass  Provides platform specific services to support dependency
   #                  check during update of firmware image.
   FmpDependencyCheckLib|Include/Library/FmpDependencyCheckLib.h
 
+  ##  @libraryclass  Provides firmware device specific services to support
+  #                  saving dependency to firmware device and getting 
dependency
+  #                  from firmware device.
+  FmpDependencyDeviceLib|Include/Library/FmpDependencyDeviceLib.h
+
 [LibraryClasses.Common.Private]
   ##  @libraryclass  Provides services to retrieve values from a capsule's FMP
   #                  Payload Header.  The structure is not included in the
   #                  library class.  Instead, services are provided to retrieve
   #                  information from the FMP Payload Header.  If information 
is
diff --git a/FmpDevicePkg/FmpDevicePkg.dsc b/FmpDevicePkg/FmpDevicePkg.dsc
index 7e80806171..bdb73f2828 100644
--- a/FmpDevicePkg/FmpDevicePkg.dsc
+++ b/FmpDevicePkg/FmpDevicePkg.dsc
@@ -62,10 +62,11 @@
   
CapsuleUpdatePolicyLib|FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleUpdatePolicyLibNull.inf
   
FmpPayloadHeaderLib|FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf
   FmpDeviceLib|FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf
   FmpDependencyLib|FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.inf
   
FmpDependencyCheckLib|FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf
+  
FmpDependencyDeviceLib|FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
   TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
 
 [LibraryClasses.ARM, LibraryClasses.AARCH64]
   #
   # It is not possible to prevent the ARM compiler for generic intrinsic 
functions.
@@ -93,10 +94,11 @@
   FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf
   FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf
   FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.inf
   FmpDevicePkg/Library/FmpDependencyCheckLib/FmpDependencyCheckLib.inf
   FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf
+  
FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
   FmpDevicePkg/FmpDxe/FmpDxeLib.inf
 
   #
   # Modules
   #
diff --git a/FmpDevicePkg/Include/Library/FmpDependencyDeviceLib.h 
b/FmpDevicePkg/Include/Library/FmpDependencyDeviceLib.h
new file mode 100644
index 0000000000..4351173b7e
--- /dev/null
+++ b/FmpDevicePkg/Include/Library/FmpDependencyDeviceLib.h
@@ -0,0 +1,51 @@
+/** @file
+  Provides firmware device specific services to support saving dependency to
+  firmware device and getting dependency from firmware device.
+
+  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef __FMP_DEPENDENCY_DEVICE_LIB__
+#define __FMP_DEPENDENCY_DEVICE_LIB__
+
+#include <PiDxe.h>
+#include <Protocol/FirmwareManagement.h>
+
+/**
+  Save dependency to Fmp device.
+
+  @param[in]  Depex       Fmp dependency.
+  @param[in]  DepexSize   Size, in bytes, of the Fmp dependency.
+
+  @retval  EFI_SUCCESS       Save Fmp dependency succeeds.
+  @retval  EFI_UNSUPPORTED   Save Fmp dependency is not supported.
+  @retval  Others            Save Fmp dependency fails.
+
+**/
+EFI_STATUS
+EFIAPI
+SaveFmpDependency (
+  IN EFI_FIRMWARE_IMAGE_DEP  *Depex,
+  IN UINT32                  DepexSize
+  );
+
+/**
+  Get dependency from the Fmp device.
+  This caller is responsible for freeing the dependency buffer.
+
+  @param[out]  DepexSize   Size, in bytes, of the dependency.
+
+  @retval  The pointer to dependency.
+  @retval  NULL
+
+**/
+EFI_FIRMWARE_IMAGE_DEP*
+EFIAPI
+GetFmpDependency (
+  OUT UINT32  *DepexSize
+  );
+
+#endif
diff --git 
a/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLib.c 
b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLib.c
new file mode 100644
index 0000000000..0839681430
--- /dev/null
+++ b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLib.c
@@ -0,0 +1,50 @@
+/** @file
+  Null instance of FmpDependencyDeviceLib.
+
+  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#include <PiDxe.h>
+#include <Library/FmpDependencyDeviceLib.h>
+
+/**
+  Save dependency to Fmp device.
+
+  @param[in]  Depex       Fmp dependency.
+  @param[in]  DepexSize   Size, in bytes, of the Fmp dependency.
+
+  @retval  EFI_SUCCESS       Save Fmp dependency succeeds.
+  @retval  EFI_UNSUPPORTED   Save Fmp dependency is not supported.
+  @retval  Others            Save Fmp dependency fails.
+
+**/
+EFI_STATUS
+EFIAPI
+SaveFmpDependency (
+  IN EFI_FIRMWARE_IMAGE_DEP  *Depex,
+  IN UINT32                  DepexSize
+  )
+{
+  return EFI_UNSUPPORTED;
+}
+
+/**
+  Get dependency from the Fmp device.
+  This caller is responsible for freeing the dependency buffer.
+
+  @param[out]  DepexSize   Size, in bytes, of the dependency.
+
+  @retval  The pointer to dependency.
+  @retval  NULL
+
+**/
+EFI_FIRMWARE_IMAGE_DEP*
+EFIAPI
+GetFmpDependency (
+  OUT UINT32  *DepexSize
+  )
+{
+  return NULL;
+}
diff --git 
a/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
 
b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
new file mode 100644
index 0000000000..d318cc9a67
--- /dev/null
+++ 
b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
@@ -0,0 +1,29 @@
+## @file
+#  Fmp Dependency Device Library Null instance.
+#
+#  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+  INF_VERSION     = 0x00010005
+  BASE_NAME       = FmpDependencyDeviceLibNull
+  MODULE_UNI_FILE = FmpDependencyDeviceLibNull.uni
+  FILE_GUID       = 05BE67B1-0748-4022-97E6-7C0D2F992AA6
+  MODULE_TYPE     = DXE_DRIVER
+  VERSION_STRING  = 1.0
+  LIBRARY_CLASS   = FmpDependencyDeviceLib|DXE_DRIVER UEFI_DRIVER
+
+#
+# The following information is for reference only and not required by the 
build tools.
+#
+#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
+#
+
+[Sources]
+  FmpDependencyDeviceLib.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+  FmpDevicePkg/FmpDevicePkg.dec
diff --git 
a/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.uni
 
b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.uni
new file mode 100644
index 0000000000..730ff65cbd
--- /dev/null
+++ 
b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.uni
@@ -0,0 +1,12 @@
+// /** @file
+// Fmp Dependency Device Library Null instance.
+//
+// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+#string STR_MODULE_ABSTRACT     #language en-US  "Fmp Dependency Device 
Library Null instance."
+
+#string STR_MODULE_DESCRIPTION  #language en-US  "Null instance that does not 
support saving and getting  dependency for Fmp device."
-- 
2.16.2.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#59606): https://edk2.groups.io/g/devel/message/59606
Mute This Topic: https://groups.io/mt/74215664/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to