Skip to content

Commit

Permalink
FmpDevicePkg: Add FmpDependencyDevice library class and NULL instance
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Liming Gao <[email protected]>
Cc: Sean Brogan <[email protected]>
Signed-off-by: Wei6 Xu <[email protected]>
Reviewed-by: Sean Brogan <[email protected]>
Reviewed-by: Liming Gao <[email protected]>
  • Loading branch information
xuweiintel authored and mergify[bot] committed May 15, 2020
1 parent 6c49664 commit ba86bb2
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 0 deletions.
5 changes: 5 additions & 0 deletions FmpDevicePkg/FmpDevicePkg.dec
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@
# 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
Expand Down
2 changes: 2 additions & 0 deletions FmpDevicePkg/FmpDevicePkg.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
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]
Expand Down Expand Up @@ -95,6 +96,7 @@
FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.inf
FmpDevicePkg/Library/FmpDependencyCheckLib/FmpDependencyCheckLib.inf
FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf
FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf
FmpDevicePkg/FmpDxe/FmpDxeLib.inf

#
Expand Down
51 changes: 51 additions & 0 deletions FmpDevicePkg/Include/Library/FmpDependencyDeviceLib.h
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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."

0 comments on commit ba86bb2

Please sign in to comment.