FmpDevicePkg.dec 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. ## @file
  2. # Firmware Management Protocol Device Package
  3. #
  4. # This package provides an implementation of a Firmware Management Protocol
  5. # instance that supports the update of firmware storage devices using UEFI
  6. # Capsules. The behavior of the Firmware Management Protocol instance is
  7. # customized using libraries and PCDs.
  8. #
  9. # Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
  10. # Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.<BR>
  11. #
  12. # SPDX-License-Identifier: BSD-2-Clause-Patent
  13. #
  14. ##
  15. [Defines]
  16. DEC_SPECIFICATION = 0x00010005
  17. PACKAGE_NAME = FmpDevicePkg
  18. PACKAGE_UNI_FILE = FmpDevicePkg.uni
  19. PACKAGE_GUID = 080b5b4f-27c6-11e8-84d1-f8597177a00a
  20. PACKAGE_VERSION = 0.1
  21. [Includes]
  22. Include
  23. [Includes.Common.Private]
  24. PrivateInclude
  25. [LibraryClasses]
  26. ## @libraryclass Provides platform policy services used during a capsule
  27. # update.
  28. CapsuleUpdatePolicyLib|Include/Library/CapsuleUpdatePolicyLib.h
  29. ## @libraryclass Provides firmware device specific services to support
  30. # updates of a firmware image stored in a firmware device.
  31. FmpDeviceLib|Include/Library/FmpDeviceLib.h
  32. ## @libraryclass Provides generic services to support capsule dependency
  33. # expression evaluation.
  34. FmpDependencyLib|Include/Library/FmpDependencyLib.h
  35. ## @libraryclass Provides platform specific services to support dependency
  36. # check during update of firmware image.
  37. FmpDependencyCheckLib|Include/Library/FmpDependencyCheckLib.h
  38. ## @libraryclass Provides firmware device specific services to support
  39. # saving dependency to firmware device and getting dependency
  40. # from firmware device.
  41. FmpDependencyDeviceLib|Include/Library/FmpDependencyDeviceLib.h
  42. [LibraryClasses.Common.Private]
  43. ## @libraryclass Provides services to retrieve values from a capsule's FMP
  44. # Payload Header. The structure is not included in the
  45. # library class. Instead, services are provided to retrieve
  46. # information from the FMP Payload Header. If information is
  47. # added to the FMP Payload Header, then new services may be
  48. # added to this library class to retrieve the new information.
  49. FmpPayloadHeaderLib|PrivateInclude/Library/FmpPayloadHeaderLib.h
  50. [Guids]
  51. ## Firmware Management Protocol Device Package Token Space GUID
  52. gFmpDevicePkgTokenSpaceGuid = { 0x40b2d964, 0xfe11, 0x40dc, { 0x82, 0x83, 0x2e, 0xfb, 0xda, 0x29, 0x53, 0x56 } }
  53. [Protocols.Common.Private]
  54. ## Capsule Update Policy Protocol
  55. gEdkiiCapsuleUpdatePolicyProtocolGuid = { 0x487784c5, 0x6299, 0x4ba6, { 0xb0, 0x96, 0x5c, 0xc5, 0x27, 0x7c, 0xf7, 0x57 } }
  56. [PcdsFeatureFlag]
  57. ## Indicates if the Firmware Management Protocol supports access to
  58. # to a firmware storage device. If set to FALSE, then only GetImageInfo()
  59. # is supported. This is used by FMP drivers that require the smallest
  60. # possible Firmware Management Protocol implementation that supports
  61. # advertising the updatable firmware device in the ESRT.<BR>
  62. # TRUE - All Firmware Management Protocol services supported.<BR>
  63. # FALSE - Firmware Management Protocol returns EFI_UNSUPPORTED for
  64. # all services except GetImageInfo().<BR>
  65. # @Prompt Firmware Device Storage Access Enabled.
  66. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable|TRUE|BOOLEAN|0x40000011
  67. [PcdsFixedAtBuild]
  68. ## The SHA-256 hash of a PKCS7 test key that is used to detect if a test key
  69. # is being used to authenticate capsules. Test key detection is disabled by
  70. # setting the value to {0}.
  71. # @Prompt SHA-256 hash of PKCS7 test key.
  72. 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
  73. [PcdsFixedAtBuild, PcdsPatchableInModule]
  74. ## The color of the progress bar during a firmware update. Each firmware
  75. # device can set its own color. The default color is white.<BR><BR>
  76. # Bits 7..0 - Red<BR>
  77. # Bits 15..8 - Green<BR>
  78. # Bits 23..16 - Blue<BR>
  79. # @Prompt Firmware Device Progress Bar Color.
  80. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor|0x00FFFFFF|UINT32|0x40000004
  81. ## The Null-terminated Unicode string used to fill in the ImageIdName field of
  82. # the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
  83. # GetImageInfo() service of the Firmware Management Protocol for the firmware
  84. # device. An ImageIdName string must be provided for each firmware device.
  85. # The default value is an empty string.
  86. # @Prompt Firmware Device ImageIdName string.
  87. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L""|VOID*|0x40000007
  88. ## The build time value used to fill in the LowestSupportedVersion field of
  89. # the EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
  90. # GetImageInfo() service of the Firmware Management Protocol. This value is
  91. # only used if the firmware device does not provide a method to report the
  92. # lowest supported version value from the current firmware image and the
  93. # UEFI variable used to provide the lowest supported version value does not
  94. # exist. The default value is 0.
  95. # @Prompt Build Time Firmware Device Lowest Support Version.
  96. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceBuildTimeLowestSupportedVersion|0x0|UINT32|0x4000000C
  97. ## The time in seconds to arm a watchdog timer during the update of a firmware
  98. # device. The watchdog is re-armed each time the FmpDeviceLib calls the
  99. # Progress() function passed into FmpDeviceSetImage() function. The
  100. # FmpDeviceLib calls Progress() to update the percent completion of a
  101. # firmware update. If the watchdog timer expires, the system reboots. A
  102. # value of 0 disables the watchdog timer. The default value is 0 (watchdog
  103. # disabled).
  104. # @Prompt Firmware Device Watchdog Time in Seconds.
  105. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds|0x0|UINT8|0x4000000D
  106. ## The Image Type ID to use if one is not provided by FmpDeviceLib. If this
  107. # PCD is not a valid GUID value, then gEfiCallerIdGuid is used.
  108. # @Prompt Firmware Device Image Type ID
  109. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{0}|VOID*|0x40000010
  110. [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
  111. ## One or more PKCS7 certificates used to verify a firmware device capsule
  112. # update image. Encoded using the Variable-Length Opaque Data format of RFC
  113. # 4506 External Data Representation Standard (XDR). The default value is
  114. # empty with 0 certificates.
  115. # @Prompt One or more XDR encoded PKCS7 certificates used to verify firmware device capsule update images.
  116. gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr|{0x0}|VOID*|0x4000000E
  117. ## An event GUID that locks the firmware device when the event is signaled.
  118. # If this PCD is not a valid GUID value, then the firmware device is locked
  119. # when gEfiEndOfDxeEventGroupGuid (End of DXE Phase) is signaled. The
  120. # default value is empty, so by default the firmware device is locked at the
  121. # end of the DXE phase.
  122. # @Prompt Firmware Device Lock Event GUID.
  123. gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{0}|VOID*|0x4000000F
  124. [UserExtensions.TianoCore."ExtraFiles"]
  125. FmpDevicePkgExtra.uni