2018-03-14 23:05:29 +01:00
|
|
|
## @file
|
|
|
|
# Firmware Management Protocol Device Package
|
|
|
|
#
|
|
|
|
# This package provides an implementation of a Firmware Management Protocol
|
|
|
|
# instance that supports the update of firmware storage devices using UEFI
|
|
|
|
# Capsules. The behavior of the Firmware Management Protocol instance is
|
|
|
|
# customized using libraries and PCDs.
|
|
|
|
#
|
|
|
|
# Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
|
2019-08-11 07:36:46 +02:00
|
|
|
# Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
|
2018-03-14 23:05:29 +01:00
|
|
|
#
|
2019-04-04 01:03:48 +02:00
|
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
2018-03-14 23:05:29 +01:00
|
|
|
#
|
|
|
|
##
|
|
|
|
|
|
|
|
[Defines]
|
|
|
|
DEC_SPECIFICATION = 0x00010005
|
|
|
|
PACKAGE_NAME = FmpDevicePkg
|
|
|
|
PACKAGE_UNI_FILE = FmpDevicePkg.uni
|
|
|
|
PACKAGE_GUID = 080b5b4f-27c6-11e8-84d1-f8597177a00a
|
|
|
|
PACKAGE_VERSION = 0.1
|
|
|
|
|
|
|
|
[Includes]
|
|
|
|
Include
|
|
|
|
|
2019-08-11 07:36:46 +02:00
|
|
|
[Includes.Common.Private]
|
|
|
|
PrivateInclude
|
2018-03-14 23:05:29 +01:00
|
|
|
|
2019-08-11 07:36:46 +02:00
|
|
|
[LibraryClasses]
|
2018-03-14 23:05:29 +01:00
|
|
|
## @libraryclass Provides platform policy services used during a capsule
|
|
|
|
# update.
|
|
|
|
CapsuleUpdatePolicyLib|Include/Library/CapsuleUpdatePolicyLib.h
|
|
|
|
|
|
|
|
## @libraryclass Provides firmware device specific services to support
|
|
|
|
# updates of a firmware image stored in a firmware device.
|
|
|
|
FmpDeviceLib|Include/Library/FmpDeviceLib.h
|
|
|
|
|
2019-08-11 07:36:46 +02:00
|
|
|
[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
|
|
|
|
# added to the FMP Payload Header, then new services may be
|
|
|
|
# added to this library class to retrieve the new information.
|
|
|
|
FmpPayloadHeaderLib|PrivateInclude/Library/FmpPayloadHeaderLib.h
|
|
|
|
|
2018-03-14 23:05:29 +01:00
|
|
|
[Guids]
|
|
|
|
## Firmware Management Protocol Device Package Token Space GUID
|
|
|
|
gFmpDevicePkgTokenSpaceGuid = { 0x40b2d964, 0xfe11, 0x40dc, { 0x82, 0x83, 0x2e, 0xfb, 0xda, 0x29, 0x53, 0x56 } }
|
|
|
|
|
2019-08-11 07:36:46 +02:00
|
|
|
[Protocols.Common.Private]
|
|
|
|
## Capsule Update Policy Protocol
|
2019-10-09 06:38:02 +02:00
|
|
|
gEdkiiCapsuleUpdatePolicyProtocolGuid = { 0x487784c5, 0x6299, 0x4ba6, { 0xb0, 0x96, 0x5c, 0xc5, 0x27, 0x7c, 0xf7, 0x57 } }
|
2019-08-11 07:36:46 +02:00
|
|
|
|
2019-07-26 09:45:19 +02:00
|
|
|
[PcdsFeatureFlag]
|
|
|
|
## Indicates if the Firmware Management Protocol supports access to
|
|
|
|
# to a firmware storage device. If set to FALSE, then only GetImageInfo()
|
2019-10-09 06:38:02 +02:00
|
|
|
# is supported. This is used by FMP drivers that require the smallest
|
2019-07-26 09:45:19 +02:00
|
|
|
# possible Firmware Management Protocol implementation that supports
|
|
|
|
# advertising the updatable firmware device in the ESRT.<BR>
|
|
|
|
# TRUE - All Firmware Management Protocol services supported.<BR>
|
|
|
|
# FALSE - Firmware Management Protocol returns EFI_UNSUPPORTED for
|
|
|
|
# all services except GetImageInfo().<BR>
|
|
|
|
# @Prompt Firmware Device Storage Access Enabled.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable|TRUE|BOOLEAN|0x40000011
|
|
|
|
|
2018-03-14 23:05:29 +01:00
|
|
|
[PcdsFixedAtBuild]
|
|
|
|
## The SHA-256 hash of a PKCS7 test key that is used to detect if a test key
|
|
|
|
# is being used to authenticate capsules. Test key detection is disabled by
|
|
|
|
# setting the value to {0}.
|
|
|
|
# @Prompt SHA-256 hash of PKCS7 test key.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest|{0x2E, 0x97, 0x89, 0x1B, 0xDB, 0xE7, 0x08, 0xAA, 0x8C, 0xB2, 0x8F, 0xAD, 0x20, 0xA9, 0x83, 0xC7, 0x84, 0x7D, 0x4F, 0xEE, 0x48, 0x25, 0xE9, 0x4D, 0x39, 0xFA, 0x34, 0x9A, 0xB8, 0xB1, 0xC4, 0x26}|VOID*|0x40000009
|
|
|
|
|
|
|
|
[PcdsFixedAtBuild, PcdsPatchableInModule]
|
|
|
|
## The color of the progress bar during a firmware update. Each firmware
|
|
|
|
# device can set its own color. The default color is white.<BR><BR>
|
|
|
|
# Bits 7..0 - Red<BR>
|
|
|
|
# Bits 15..8 - Green<BR>
|
|
|
|
# Bits 23..16 - Blue<BR>
|
|
|
|
# @Prompt Firmware Device Progress Bar Color.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor|0x00FFFFFF|UINT32|0x40000004
|
|
|
|
|
|
|
|
## The Null-terminated Unicode string used to fill in the ImageIdName field of
|
|
|
|
# the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
|
|
|
|
# GetImageInfo() service of the Firmware Management Protocol for the firmware
|
|
|
|
# device. An ImageIdName string must be provided for each firmware device.
|
|
|
|
# The default value is an empty string.
|
|
|
|
# @Prompt Firmware Device ImageIdName string.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L""|VOID*|0x40000007
|
|
|
|
|
|
|
|
## The build time value used to fill in the LowestSupportedVersion field of
|
|
|
|
# the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
|
|
|
|
# GetImageInfo() service of the Firmware Management Protocol. This value is
|
|
|
|
# only used if the firmware device does not provide a method to report the
|
|
|
|
# lowest supported version value from the current firmware image and the
|
|
|
|
# UEFI variable used to provide the lowest supported version value does not
|
|
|
|
# exist. The default value is 0.
|
|
|
|
# @Prompt Build Time Firmware Device Lowest Support Version.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceBuildTimeLowestSupportedVersion|0x0|UINT32|0x4000000C
|
|
|
|
|
|
|
|
## The time in seconds to arm a watchdog timer during the update of a firmware
|
|
|
|
# device. The watchdog is re-armed each time the FmpDeviceLib calls the
|
|
|
|
# Progress() function passed into FmpDeviceSetImage() function. The
|
|
|
|
# FmpDeviceLib calls Progress() to update the percent completion of a
|
|
|
|
# firmware update. If the watchdog timer expires, the system reboots. A
|
|
|
|
# value of 0 disables the watchdog timer. The default value is 0 (watchdog
|
|
|
|
# disabled).
|
|
|
|
# @Prompt Firmware Device Watchdog Time in Seconds.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds|0x0|UINT8|0x4000000D
|
|
|
|
|
2019-07-26 09:40:37 +02:00
|
|
|
## The Image Type ID to use if one is not provided by FmpDeviceLib. If this
|
|
|
|
# PCD is not a valid GUID value, then gEfiCallerIdGuid is used.
|
|
|
|
# @Prompt Firmware Device Image Type ID
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{0}|VOID*|0x40000010
|
|
|
|
|
2018-03-14 23:05:29 +01:00
|
|
|
[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
|
|
|
## One or more PKCS7 certificates used to verify a firmware device capsule
|
|
|
|
# update image. Encoded using the Variable-Length Opaque Data format of RFC
|
|
|
|
# 4506 External Data Representation Standard (XDR). The default value is
|
|
|
|
# empty with 0 certificates.
|
|
|
|
# @Prompt One or more XDR encoded PKCS7 certificates used to verify firmware device capsule update images.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr|{0x0}|VOID*|0x4000000E
|
|
|
|
|
|
|
|
## An event GUID that locks the firmware device when the event is signaled.
|
|
|
|
# If this PCD is not a valid GUID value, then the firmware device is locked
|
|
|
|
# when gEfiEndOfDxeEventGroupGuid (End of DXE Phase) is signaled. The
|
|
|
|
# default value is empty, so by default the firmware device is locked at the
|
|
|
|
# end of the DXE phase.
|
|
|
|
# @Prompt Firmware Device Lock Event GUID.
|
|
|
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{0}|VOID*|0x4000000F
|
|
|
|
|
|
|
|
[UserExtensions.TianoCore."ExtraFiles"]
|
|
|
|
FmpDevicePkgExtra.uni
|