FmpDevicePkg: Add package, library classes, and PCDs
[mirror_edk2.git] / FmpDevicePkg / FmpDevicePkg.dec
CommitLineData
cec7b8fb
KM
1## @file\r
2# Firmware Management Protocol Device Package\r
3#\r
4# This package provides an implementation of a Firmware Management Protocol\r
5# instance that supports the update of firmware storage devices using UEFI\r
6# Capsules. The behavior of the Firmware Management Protocol instance is\r
7# customized using libraries and PCDs.\r
8#\r
9# Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>\r
10# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>\r
11#\r
12# Redistribution and use in source and binary forms, with or without\r
13# modification, are permitted provided that the following conditions are met:\r
14# 1. Redistributions of source code must retain the above copyright notice,\r
15# this list of conditions and the following disclaimer.\r
16# 2. Redistributions in binary form must reproduce the above copyright notice,\r
17# this list of conditions and the following disclaimer in the documentation\r
18# and/or other materials provided with the distribution.\r
19#\r
20# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
21# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
22# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
23# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r
24# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
25# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
26# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
27# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\r
28# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\r
29# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
30#\r
31##\r
32\r
33[Defines]\r
34 DEC_SPECIFICATION = 0x00010005\r
35 PACKAGE_NAME = FmpDevicePkg\r
36 PACKAGE_UNI_FILE = FmpDevicePkg.uni\r
37 PACKAGE_GUID = 080b5b4f-27c6-11e8-84d1-f8597177a00a\r
38 PACKAGE_VERSION = 0.1\r
39\r
40[Includes]\r
41 Include\r
42\r
43[LibraryClasses]\r
44 ## @libraryclass Provides services to retrieve values from a capsule's FMP\r
45 # Payload Header. The structure is not included in the\r
46 # library class. Instead, services are provided to retrieve\r
47 # information from the FMP Payload Header. If information is\r
48 # added to the FMP Payload Header, then new services may be\r
49 # added to this library class to retrieve the new information.\r
50 FmpPayloadHeaderLib|Include/Library/FmpPayloadHeaderLib.h\r
51\r
52 ## @libraryclass Provides platform policy services used during a capsule\r
53 # update.\r
54 CapsuleUpdatePolicyLib|Include/Library/CapsuleUpdatePolicyLib.h\r
55\r
56 ## @libraryclass Provides firmware device specific services to support\r
57 # updates of a firmware image stored in a firmware device.\r
58 FmpDeviceLib|Include/Library/FmpDeviceLib.h\r
59\r
60[Guids]\r
61 ## Firmware Management Protocol Device Package Token Space GUID\r
62 gFmpDevicePkgTokenSpaceGuid = { 0x40b2d964, 0xfe11, 0x40dc, { 0x82, 0x83, 0x2e, 0xfb, 0xda, 0x29, 0x53, 0x56 } }\r
63\r
64[PcdsFixedAtBuild]\r
65 ## Indicates if a full system reset is required before a firmware update to a\r
66 # firmware devices takes effect.<BR><BR>\r
67 # TRUE - System reset is required.<BR>\r
68 # FALSE - System reset is not required.<BR>\r
69 # @Prompt FMP Device System Reset Required.\r
70 gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceSystemResetRequired|TRUE|BOOLEAN|0x40000008\r
71\r
72 ## The SHA-256 hash of a PKCS7 test key that is used to detect if a test key\r
73 # is being used to authenticate capsules. Test key detection is disabled by\r
74 # setting the value to {0}.\r
75 # @Prompt SHA-256 hash of PKCS7 test key.\r
76 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\r
77\r
78[PcdsFixedAtBuild, PcdsPatchableInModule]\r
79 ## The color of the progress bar during a firmware update. Each firmware\r
80 # device can set its own color. The default color is white.<BR><BR>\r
81 # Bits 7..0 - Red<BR>\r
82 # Bits 15..8 - Green<BR>\r
83 # Bits 23..16 - Blue<BR>\r
84 # @Prompt Firmware Device Progress Bar Color.\r
85 gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor|0x00FFFFFF|UINT32|0x40000004\r
86\r
87 ## The Null-terminated Unicode string used to fill in the ImageIdName field of\r
88 # the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the\r
89 # GetImageInfo() service of the Firmware Management Protocol for the firmware\r
90 # device. An ImageIdName string must be provided for each firmware device.\r
91 # The default value is an empty string.\r
92 # @Prompt Firmware Device ImageIdName string.\r
93 gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L""|VOID*|0x40000007\r
94\r
95 ## The build time value used to fill in the LowestSupportedVersion field of\r
96 # the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the\r
97 # GetImageInfo() service of the Firmware Management Protocol. This value is\r
98 # only used if the firmware device does not provide a method to report the\r
99 # lowest supported version value from the current firmware image and the\r
100 # UEFI variable used to provide the lowest supported version value does not\r
101 # exist. The default value is 0.\r
102 # @Prompt Build Time Firmware Device Lowest Support Version.\r
103 gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceBuildTimeLowestSupportedVersion|0x0|UINT32|0x4000000C\r
104\r
105 ## The time in seconds to arm a watchdog timer during the update of a firmware\r
106 # device. The watchdog is re-armed each time the FmpDeviceLib calls the\r
107 # Progress() function passed into FmpDeviceSetImage() function. The\r
108 # FmpDeviceLib calls Progress() to update the percent completion of a\r
109 # firmware update. If the watchdog timer expires, the system reboots. A\r
110 # value of 0 disables the watchdog timer. The default value is 0 (watchdog\r
111 # disabled).\r
112 # @Prompt Firmware Device Watchdog Time in Seconds.\r
113 gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds|0x0|UINT8|0x4000000D\r
114\r
115[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]\r
116 ## One or more PKCS7 certificates used to verify a firmware device capsule\r
117 # update image. Encoded using the Variable-Length Opaque Data format of RFC\r
118 # 4506 External Data Representation Standard (XDR). The default value is\r
119 # empty with 0 certificates.\r
120 # @Prompt One or more XDR encoded PKCS7 certificates used to verify firmware device capsule update images.\r
121 gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr|{0x0}|VOID*|0x4000000E\r
122\r
123 ## An event GUID that locks the firmware device when the event is signaled.\r
124 # If this PCD is not a valid GUID value, then the firmware device is locked\r
125 # when gEfiEndOfDxeEventGroupGuid (End of DXE Phase) is signaled. The\r
126 # default value is empty, so by default the firmware device is locked at the\r
127 # end of the DXE phase.\r
128 # @Prompt Firmware Device Lock Event GUID.\r
129 gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{0}|VOID*|0x4000000F\r
130\r
131[UserExtensions.TianoCore."ExtraFiles"]\r
132 FmpDevicePkgExtra.uni\r