MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version
[mirror_edk2.git] / FmpDevicePkg / FmpDevicePkg.dec
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   ## The SHA-256 hash of a PKCS7 test key that is used to detect if a test key\r
66   #  is being used to authenticate capsules.  Test key detection is disabled by\r
67   #  setting the value to {0}.\r
68   # @Prompt SHA-256 hash of PKCS7 test key.\r
69   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
70 \r
71 [PcdsFixedAtBuild, PcdsPatchableInModule]\r
72   ## The color of the progress bar during a firmware update.  Each firmware\r
73   #  device can set its own color.  The default color is white.<BR><BR>\r
74   #  Bits  7..0  - Red<BR>\r
75   #  Bits 15..8  - Green<BR>\r
76   #  Bits 23..16 - Blue<BR>\r
77   # @Prompt Firmware Device Progress Bar Color.\r
78   gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor|0x00FFFFFF|UINT32|0x40000004\r
79 \r
80   ## The Null-terminated Unicode string used to fill in the ImageIdName field of\r
81   #  the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the\r
82   #  GetImageInfo() service of the Firmware Management Protocol for the firmware\r
83   #  device.  An ImageIdName string must be provided for each firmware device.\r
84   #  The default value is an empty string.\r
85   # @Prompt Firmware Device ImageIdName string.\r
86   gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L""|VOID*|0x40000007\r
87 \r
88   ## The build time value used to fill in the LowestSupportedVersion field of\r
89   #  the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the\r
90   #  GetImageInfo() service of the Firmware Management Protocol.  This value is\r
91   #  only used if the firmware device does not provide a method to report the\r
92   #  lowest supported version value from the current firmware image and the\r
93   #  UEFI variable used to provide the lowest supported version value does not\r
94   #  exist.  The default value is 0.\r
95   # @Prompt Build Time Firmware Device Lowest Support Version.\r
96   gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceBuildTimeLowestSupportedVersion|0x0|UINT32|0x4000000C\r
97 \r
98   ## The time in seconds to arm a watchdog timer during the update of a firmware\r
99   #  device.  The watchdog is re-armed each time the FmpDeviceLib calls the\r
100   #  Progress() function passed into FmpDeviceSetImage() function.  The\r
101   #  FmpDeviceLib calls Progress() to update the percent completion of a\r
102   #  firmware update.  If the watchdog timer expires, the system reboots.  A\r
103   #  value of 0 disables the watchdog timer.  The default value is 0 (watchdog\r
104   #  disabled).\r
105   # @Prompt Firmware Device Watchdog Time in Seconds.\r
106   gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds|0x0|UINT8|0x4000000D\r
107 \r
108 [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]\r
109   ## One or more PKCS7 certificates used to verify a firmware device capsule\r
110   #  update image.  Encoded using the Variable-Length Opaque Data format of RFC\r
111   #  4506 External Data Representation Standard (XDR).  The default value is\r
112   #  empty with 0 certificates.\r
113   # @Prompt One or more XDR encoded PKCS7 certificates used to verify firmware device capsule update images.\r
114   gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr|{0x0}|VOID*|0x4000000E\r
115 \r
116   ## An event GUID that locks the firmware device when the event is signaled.\r
117   #  If this PCD is not a valid GUID value, then the firmware device is locked\r
118   #  when gEfiEndOfDxeEventGroupGuid (End of DXE Phase) is signaled.  The\r
119   #  default value is empty, so by default the firmware device is locked at the\r
120   #  end of the DXE phase.\r
121   # @Prompt Firmware Device Lock Event GUID.\r
122   gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{0}|VOID*|0x4000000F\r
123 \r
124 [UserExtensions.TianoCore."ExtraFiles"]\r
125   FmpDevicePkgExtra.uni\r