Vlv2TbltDevicePkg/dsc/fdf: Add capsule/recovery support.

Add capsule and recovery support module in platform dsc and fdf.

Cc: David Wei <david.wei@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Chao Zhang <chao.b.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: David Wei <david.wei@intel.com>
diff --git a/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Vlv2TbltDevicePkg/PlatformPkg.fdf
index 93b4d2d..907c6bd 100644
--- a/Vlv2TbltDevicePkg/PlatformPkg.fdf
+++ b/Vlv2TbltDevicePkg/PlatformPkg.fdf
@@ -82,6 +82,9 @@
 SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaBaseAddress            = $(FLASH_AREA_BASE_ADDRESS)

 SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize                   = $(FLASH_AREA_SIZE)

 

+SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress = $(FLASH_REGION_VLVMICROCODE_BASE) + 0x60

+SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize = $(FLASH_REGION_VLVMICROCODE_SIZE) - 0x60

+

 !if $(MINNOW2_FSP_BUILD) == TRUE

 # put below PCD value setting into dsc file

 #SET gFspWrapperTokenSpaceGuid.PcdCpuMicrocodePatchAddress                = $(FLASH_REGION_VLVMICROCODE_BASE)

@@ -242,6 +245,34 @@
   $(OUTPUT_DIRECTORY)\$(TARGET)_$(TOOL_CHAIN_TAG)\$(DXE_ARCHITECTURE)\MicrocodeUpdates.bin

 }

 

+!if $(RECOVERY_ENABLE)

+[FV.FVRECOVERY_COMPONENTS]

+FvAlignment        = 16         #FV alignment and FV attributes setting.

+ERASE_POLARITY     = 1

+MEMORY_MAPPED      = TRUE

+STICKY_WRITE       = TRUE

+LOCK_CAP           = TRUE

+LOCK_STATUS        = TRUE

+WRITE_DISABLED_CAP = TRUE

+WRITE_ENABLED_CAP  = TRUE

+WRITE_STATUS       = TRUE

+WRITE_LOCK_CAP     = TRUE

+WRITE_LOCK_STATUS  = TRUE

+READ_DISABLED_CAP  = TRUE

+READ_ENABLED_CAP   = TRUE

+READ_STATUS        = TRUE

+READ_LOCK_CAP      = TRUE

+READ_LOCK_STATUS   = TRUE

+

+INF  RuleOverride = BINARY $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf

+INF  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf

+INF  MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf

+INF  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf

+INF  FatPkg/FatPei/FatPei.inf

+INF  MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf

+INF  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf

+!endif

+

 ################################################################################

 #

 # FV Section

@@ -306,6 +337,15 @@
 INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf

 !endif

 

+!if $(RECOVERY_ENABLE)

+FILE FV_IMAGE = 1E9D7604-EF45-46a0-BD8A-71AC78C17AC1 {

+  SECTION PEI_DEPEX_EXP = {gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid}

+  SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF {    # LZMA COMPRESS GUID

+    SECTION FV_IMAGE = FVRECOVERY_COMPONENTS

+  }

+}

+!endif

+

 [FV.FVRECOVERY]

 BlockSize          = $(FLASH_BLOCK_SIZE)

 FvAlignment        = 16         #FV alignment and FV attributes setting.

@@ -373,6 +413,11 @@
 

 INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  # FMP image decriptor

+INF RuleOverride = FMP_IMAGE_DESC Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf

+!endif

+

 [FV.FVMAIN]

 BlockSize          = $(FLASH_BLOCK_SIZE)

 FvAlignment        = 16

@@ -717,6 +762,30 @@
   !endif

 !endif

 

+!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)

+INF  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf

+!endif

+!if $(CAPSULE_ENABLE)

+INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf

+!endif

+!if $(MICOCODE_CAPSULE_ENABLE)

+INF  UefiCpuPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf

+!endif

+

+!if $(RECOVERY_ENABLE)

+FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiRsa2048Sha256TestPublicKeyFileGuid) {

+     SECTION RAW = BaseTools/Source/Python/Rsa2048Sha256Sign/TestSigningPublicKey.bin

+     SECTION UI = "Rsa2048Sha256TestSigningPublicKey"

+     }

+!endif

+

+!if $(CAPSULE_ENABLE)

+FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiPkcs7TestPublicKeyFileGuid) {

+     SECTION RAW = BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer

+     SECTION UI = "Pkcs7TestRoot"

+     }

+!endif

+

 [FV.FVMAIN_COMPACT]

 BlockSize          = $(FLASH_BLOCK_SIZE)

 FvAlignment        = 16

@@ -780,8 +849,8 @@
 READ_LOCK_STATUS   = TRUE

 

 

-[FV.Update_Data]

-BlockSize          = $(FLASH_BLOCK_SIZE)

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+[FV.CapsuleDispatchFv]

 FvAlignment        = 16

 ERASE_POLARITY     = 1

 MEMORY_MAPPED      = TRUE

@@ -799,71 +868,11 @@
 READ_LOCK_CAP      = TRUE

 READ_LOCK_STATUS   = TRUE

 

-FILE RAW = 88888888-8888-8888-8888-888888888888 {

-       FD = Vlv

-     }

+!if $(CAPSULE_ENABLE)

+INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf

+!endif

 

-[FV.BiosUpdateCargo]

-BlockSize          = $(FLASH_BLOCK_SIZE)

-FvAlignment        = 16

-ERASE_POLARITY     = 1

-MEMORY_MAPPED      = TRUE

-STICKY_WRITE       = TRUE

-LOCK_CAP           = TRUE

-LOCK_STATUS        = TRUE

-WRITE_DISABLED_CAP = TRUE

-WRITE_ENABLED_CAP  = TRUE

-WRITE_STATUS       = TRUE

-WRITE_LOCK_CAP     = TRUE

-WRITE_LOCK_STATUS  = TRUE

-READ_DISABLED_CAP  = TRUE

-READ_ENABLED_CAP   = TRUE

-READ_STATUS        = TRUE

-READ_LOCK_CAP      = TRUE

-READ_LOCK_STATUS   = TRUE

-

-

-

-[FV.BiosUpdate]

-BlockSize          = $(FLASH_BLOCK_SIZE)

-FvAlignment        = 16

-ERASE_POLARITY     = 1

-MEMORY_MAPPED      = TRUE

-STICKY_WRITE       = TRUE

-LOCK_CAP           = TRUE

-LOCK_STATUS        = TRUE

-WRITE_DISABLED_CAP = TRUE

-WRITE_ENABLED_CAP  = TRUE

-WRITE_STATUS       = TRUE

-WRITE_LOCK_CAP     = TRUE

-WRITE_LOCK_STATUS  = TRUE

-READ_DISABLED_CAP  = TRUE

-READ_ENABLED_CAP   = TRUE

-READ_STATUS        = TRUE

-READ_LOCK_CAP      = TRUE

-READ_LOCK_STATUS   = TRUE

-

-[Capsule.Capsule_Boot]

-#

-# gEfiCapsuleGuid supported by platform

-# { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 }}

-#

-CAPSULE_GUID  = 3B6686BD-0D76-4030-B70E-B5519E2FC5A0

-CAPSULE_FLAGS = PersistAcrossReset

-CAPSULE_HEADER_SIZE = 0x20

-

-FV = BiosUpdate

-

-[Capsule.Capsule_Reset]

-#

-# gEfiCapsuleGuid supported by platform

-# { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 }}

-#

-CAPSULE_GUID  = 3B6686BD-0D76-4030-B70E-B5519E2FC5A0

-CAPSULE_FLAGS = PersistAcrossReset

-CAPSULE_HEADER_SIZE = 0x20

-

-FV = BiosUpdate

+!endif

 

 ################################################################################

 #

@@ -1089,3 +1098,11 @@
     RAW ASL   Optional            |.aml

   }

 

+[Rule.Common.PEIM.FMP_IMAGE_DESC]

+  FILE PEIM = $(NAMED_GUID) {

+     RAW BIN                  |.acpi

+     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex

+     PE32      PE32    Align=4K          $(INF_OUTPUT)/$(MODULE_NAME).efi

+     UI       STRING="$(MODULE_NAME)" Optional

+     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)

+  }

diff --git a/Vlv2TbltDevicePkg/PlatformPkgConfig.dsc b/Vlv2TbltDevicePkg/PlatformPkgConfig.dsc
index db50b93..0932add 100644
--- a/Vlv2TbltDevicePkg/PlatformPkgConfig.dsc
+++ b/Vlv2TbltDevicePkg/PlatformPkgConfig.dsc
Binary files differ
diff --git a/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf b/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
index 33f2038..dccb2c9 100644
--- a/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
+++ b/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
@@ -82,6 +82,9 @@
 SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaBaseAddress            = $(FLASH_AREA_BASE_ADDRESS)

 SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize                   = $(FLASH_AREA_SIZE)

 

+SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress = $(FLASH_REGION_VLVMICROCODE_BASE) + 0x60

+SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize = $(FLASH_REGION_VLVMICROCODE_SIZE) - 0x60

+

 !if $(MINNOW2_FSP_BUILD) == TRUE

 # put below PCD value setting into dsc file

 #SET gFspWrapperTokenSpaceGuid.PcdCpuMicrocodePatchAddress                = $(FLASH_REGION_VLVMICROCODE_BASE)

@@ -199,6 +202,34 @@
   $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/$(DXE_ARCHITECTURE)/MicrocodeUpdates.bin

 }

 

+!if $(RECOVERY_ENABLE)

+[FV.FVRECOVERY_COMPONENTS]

+FvAlignment        = 16         #FV alignment and FV attributes setting.

+ERASE_POLARITY     = 1

+MEMORY_MAPPED      = TRUE

+STICKY_WRITE       = TRUE

+LOCK_CAP           = TRUE

+LOCK_STATUS        = TRUE

+WRITE_DISABLED_CAP = TRUE

+WRITE_ENABLED_CAP  = TRUE

+WRITE_STATUS       = TRUE

+WRITE_LOCK_CAP     = TRUE

+WRITE_LOCK_STATUS  = TRUE

+READ_DISABLED_CAP  = TRUE

+READ_ENABLED_CAP   = TRUE

+READ_STATUS        = TRUE

+READ_LOCK_CAP      = TRUE

+READ_LOCK_STATUS   = TRUE

+

+INF  RuleOverride = BINARY $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf

+INF  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf

+INF  MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf

+INF  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf

+INF  FatPkg/FatPei/FatPei.inf

+INF  MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf

+INF  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf

+!endif

+

 ################################################################################

 #

 # FV Section

@@ -263,6 +294,15 @@
 INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf

 !endif

 

+!if $(RECOVERY_ENABLE)

+FILE FV_IMAGE = 1E9D7604-EF45-46a0-BD8A-71AC78C17AC1 {

+  SECTION PEI_DEPEX_EXP = {gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid}

+  SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF {    # LZMA COMPRESS GUID

+    SECTION FV_IMAGE = FVRECOVERY_COMPONENTS

+  }

+}

+!endif

+

 [FV.FVRECOVERY]

 BlockSize          = $(FLASH_BLOCK_SIZE)

 FvAlignment        = 16         #FV alignment and FV attributes setting.

@@ -330,6 +370,11 @@
 

 INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  # FMP image decriptor

+INF RuleOverride = FMP_IMAGE_DESC Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf

+!endif

+

 [FV.FVMAIN]

 BlockSize          = $(FLASH_BLOCK_SIZE)

 FvAlignment        = 16

@@ -674,6 +719,30 @@
   !endif

 !endif

 

+!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)

+INF  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf

+!endif

+!if $(CAPSULE_ENABLE)

+INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf

+!endif

+!if $(MICOCODE_CAPSULE_ENABLE)

+INF  UefiCpuPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf

+!endif

+

+!if $(RECOVERY_ENABLE)

+FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiRsa2048Sha256TestPublicKeyFileGuid) {

+     SECTION RAW = BaseTools/Source/Python/Rsa2048Sha256Sign/TestSigningPublicKey.bin

+     SECTION UI = "Rsa2048Sha256TestSigningPublicKey"

+     }

+!endif

+     

+!if $(CAPSULE_ENABLE)

+FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiPkcs7TestPublicKeyFileGuid) {

+     SECTION RAW = BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer

+     SECTION UI = "Pkcs7TestRoot"

+     }

+!endif

+

 [FV.FVMAIN_COMPACT]

 BlockSize          = $(FLASH_BLOCK_SIZE)

 FvAlignment        = 16

@@ -737,8 +806,8 @@
 READ_LOCK_STATUS   = TRUE

 

 

-[FV.Update_Data]

-BlockSize          = $(FLASH_BLOCK_SIZE)

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+[FV.CapsuleDispatchFv]

 FvAlignment        = 16

 ERASE_POLARITY     = 1

 MEMORY_MAPPED      = TRUE

@@ -756,71 +825,11 @@
 READ_LOCK_CAP      = TRUE

 READ_LOCK_STATUS   = TRUE

 

-FILE RAW = 88888888-8888-8888-8888-888888888888 {

-       FD = Vlv

-     }

+!if $(CAPSULE_ENABLE)

+INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf

+!endif

 

-[FV.BiosUpdateCargo]

-BlockSize          = $(FLASH_BLOCK_SIZE)

-FvAlignment        = 16

-ERASE_POLARITY     = 1

-MEMORY_MAPPED      = TRUE

-STICKY_WRITE       = TRUE

-LOCK_CAP           = TRUE

-LOCK_STATUS        = TRUE

-WRITE_DISABLED_CAP = TRUE

-WRITE_ENABLED_CAP  = TRUE

-WRITE_STATUS       = TRUE

-WRITE_LOCK_CAP     = TRUE

-WRITE_LOCK_STATUS  = TRUE

-READ_DISABLED_CAP  = TRUE

-READ_ENABLED_CAP   = TRUE

-READ_STATUS        = TRUE

-READ_LOCK_CAP      = TRUE

-READ_LOCK_STATUS   = TRUE

-

-

-

-[FV.BiosUpdate]

-BlockSize          = $(FLASH_BLOCK_SIZE)

-FvAlignment        = 16

-ERASE_POLARITY     = 1

-MEMORY_MAPPED      = TRUE

-STICKY_WRITE       = TRUE

-LOCK_CAP           = TRUE

-LOCK_STATUS        = TRUE

-WRITE_DISABLED_CAP = TRUE

-WRITE_ENABLED_CAP  = TRUE

-WRITE_STATUS       = TRUE

-WRITE_LOCK_CAP     = TRUE

-WRITE_LOCK_STATUS  = TRUE

-READ_DISABLED_CAP  = TRUE

-READ_ENABLED_CAP   = TRUE

-READ_STATUS        = TRUE

-READ_LOCK_CAP      = TRUE

-READ_LOCK_STATUS   = TRUE

-

-[Capsule.Capsule_Boot]

-#

-# gEfiCapsuleGuid supported by platform

-# { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 }}

-#

-CAPSULE_GUID  = 3B6686BD-0D76-4030-B70E-B5519E2FC5A0

-CAPSULE_FLAGS = PersistAcrossReset

-CAPSULE_HEADER_SIZE = 0x20

-

-FV = BiosUpdate

-

-[Capsule.Capsule_Reset]

-#

-# gEfiCapsuleGuid supported by platform

-# { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 }}

-#

-CAPSULE_GUID  = 3B6686BD-0D76-4030-B70E-B5519E2FC5A0

-CAPSULE_FLAGS = PersistAcrossReset

-CAPSULE_HEADER_SIZE = 0x20

-

-FV = BiosUpdate

+!endif

 

 ################################################################################

 #

@@ -1050,3 +1059,12 @@
     RAW ASL   Optional            |.aml

   }

 

+[Rule.Common.PEIM.FMP_IMAGE_DESC]

+  FILE PEIM = $(NAMED_GUID) {

+     RAW BIN                  |.acpi

+     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex

+     PE32      PE32    Align=4K          $(INF_OUTPUT)/$(MODULE_NAME).efi

+     UI       STRING="$(MODULE_NAME)" Optional

+     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)

+  }

+

diff --git a/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
index 7125366..c3dc25f 100644
--- a/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
+++ b/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
@@ -183,10 +183,15 @@
 

   OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf

 !if $(CAPSULE_ENABLE) == TRUE

- CapsuleLib|IntelFrameworkModulePkg/Library/DxeCapsuleLib/DxeCapsuleLib.inf

+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf

 !else

   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf

 !endif

+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf

+  FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf

+  IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf

+  PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf

+  MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf

   LanguageLib|EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf

   SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf

   SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf

@@ -381,6 +386,8 @@
   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf

 !endif

 

+  FlashDeviceLib|$(PLATFORM_PACKAGE)/Library/FlashDeviceLib/FlashDeviceLibDxe.inf

+

 [LibraryClasses.X64.DXE_CORE]

   HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf

   MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf

@@ -450,6 +457,10 @@
   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf

 !endif

 

+!if $(CAPSULE_ENABLE)

+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf

+!endif

+

 [LibraryClasses.common.UEFI_DRIVER]

   PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf

 

@@ -694,6 +705,10 @@
   gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07

 !endif

 

+!if $(RECOVERY_ENABLE)

+  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap"

+!endif

+

 [PcdsPatchableInModule.common]

   gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6

   gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRESS_BASE)

@@ -886,6 +901,12 @@
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0

   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100

+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x7b, 0x26, 0x96, 0x40, 0x0a, 0xda, 0xeb, 0x42, 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4}

+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xb2, 0x9e, 0x9c, 0xaf, 0xad, 0x12, 0x3e, 0x4d, 0xa4, 0xd4, 0x96, 0xf6, 0xc9, 0x96, 0x62, 0x15}

+!endif

+

 [Components.IA32]

 

   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf

@@ -907,6 +928,14 @@
   }

   !endif

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  # FMP image decriptor

+  Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf {

+    <LibraryClasses>

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

+!endif

+

   MdeModulePkg/Core/Pei/PeiMain.inf {

 !if $(TARGET) == DEBUG

     <PcdsFixedAtBuild>

@@ -1011,6 +1040,24 @@
   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MpS3.inf

   EdkCompatibilityPkg/Compatibility/AcpiVariableHobOnSmramReserveHobThunk/AcpiVariableHobOnSmramReserveHobThunk.inf

   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PiSmmCommunicationPei.inf

+

+!if $(RECOVERY_ENABLE)

+  #

+  # Recovery

+  #

+  $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf

+  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf

+  MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf

+  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf

+  FatPkg/FatPei/FatPei.inf

+  MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf

+  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf {

+    <LibraryClasses>

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

+!endif

+

 !if $(CAPSULE_ENABLE) == TRUE

   MdeModulePkg/Universal/CapsulePei/CapsulePei.inf

 !endif

@@ -1146,6 +1193,11 @@
       DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

       PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

       SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+!if $(CAPSULE_ENABLE)

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+!else

+      FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf

+!endif

     !if $(FTPM_ENABLE) == TRUE

       Tpm2DeviceLib|Vlv2TbltDevicePkg/Library/Tpm2DeviceLibSeCDxe/Tpm2DeviceLibSeC.inf

     !else

@@ -1518,6 +1570,37 @@
 

   Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.inf

 

+!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)

+  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf

+  MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf

+!endif

+

+!if $(CAPSULE_ENABLE)

+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+  }

+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+  }

+!endif

+

+!if $(MICOCODE_CAPSULE_ENABLE)

+  UefiCpuPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+  }

+!endif

+

 [BuildOptions]

 #

 # Define Build Options both for EDK and EDKII drivers.

diff --git a/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
index 6efaf32..6d88154 100644
--- a/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
+++ b/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
@@ -183,10 +183,15 @@
 

   OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf

 !if $(CAPSULE_ENABLE) == TRUE

- CapsuleLib|IntelFrameworkModulePkg/Library/DxeCapsuleLib/DxeCapsuleLib.inf

+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf

 !else

   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf

 !endif

+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf

+  FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf

+  IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf

+  PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf

+  MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf

   LanguageLib|EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf

   SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf

   SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf

@@ -381,6 +386,8 @@
   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf

 !endif

 

+  FlashDeviceLib|$(PLATFORM_PACKAGE)/Library/FlashDeviceLib/FlashDeviceLibDxe.inf

+

 [LibraryClasses.IA32.DXE_CORE]

   HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf

   MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf

@@ -450,6 +457,10 @@
   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf

 !endif

 

+!if $(CAPSULE_ENABLE) == TRUE

+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf

+!endif

+

 [LibraryClasses.common.UEFI_DRIVER]

   PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf

 

@@ -694,6 +705,10 @@
   gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07

 !endif

 

+!if $(RECOVERY_ENABLE)

+  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap"

+!endif

+

 [PcdsPatchableInModule.common]

   gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6

   gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRESS_BASE)

@@ -888,6 +903,12 @@
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0

   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100

+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x7b, 0x26, 0x96, 0x40, 0x0a, 0xda, 0xeb, 0x42, 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4}

+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xb2, 0x9e, 0x9c, 0xaf, 0xad, 0x12, 0x3e, 0x4d, 0xa4, 0xd4, 0x96, 0xf6, 0xc9, 0x96, 0x62, 0x15}

+!endif

+

 [Components.IA32]

 

   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf

@@ -909,6 +930,14 @@
   }

   !endif

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  # FMP image decriptor

+  Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf {

+    <LibraryClasses>

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

+!endif

+

   MdeModulePkg/Core/Pei/PeiMain.inf {

 !if $(TARGET) == DEBUG

     <PcdsFixedAtBuild>

@@ -1008,6 +1037,24 @@
   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MpS3.inf

   EdkCompatibilityPkg/Compatibility/AcpiVariableHobOnSmramReserveHobThunk/AcpiVariableHobOnSmramReserveHobThunk.inf

   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PiSmmCommunicationPei.inf

+

+!if $(RECOVERY_ENABLE)

+  #

+  # Recovery

+  #

+  $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf

+  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf

+  MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf

+  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf

+  FatPkg/FatPei/FatPei.inf

+  MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf

+  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf {

+    <LibraryClasses>

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

+!endif

+

 !if $(CAPSULE_ENABLE) == TRUE

   MdeModulePkg/Universal/CapsulePei/CapsulePei.inf

 !endif

@@ -1133,6 +1180,11 @@
       DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

       PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

       SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+!if $(CAPSULE_ENABLE)

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+!else

+      FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf

+!endif

     !if $(FTPM_ENABLE) == TRUE

       Tpm2DeviceLib|Vlv2TbltDevicePkg/Library/Tpm2DeviceLibSeCDxe/Tpm2DeviceLibSeC.inf

     !else

@@ -1499,6 +1551,37 @@
 

   Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.inf

 

+!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)

+  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf

+  MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf

+!endif

+

+!if $(CAPSULE_ENABLE)

+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+  }

+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+  }

+!endif

+

+!if $(MICOCODE_CAPSULE_ENABLE)

+  UefiCpuPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+  }

+!endif

+

 [BuildOptions]

 #

 # Define Build Options both for EDK and EDKII drivers.

diff --git a/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
index 6bb503d..83cbb0a 100644
--- a/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
+++ b/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
@@ -183,10 +183,15 @@
 

   OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf

 !if $(CAPSULE_ENABLE) == TRUE

- CapsuleLib|IntelFrameworkModulePkg/Library/DxeCapsuleLib/DxeCapsuleLib.inf

+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf

 !else

   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf

 !endif

+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf

+  FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf

+  IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf

+  PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf

+  MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf

   LanguageLib|EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf

   SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf

   SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf

@@ -381,6 +386,8 @@
   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf

 !endif

 

+  FlashDeviceLib|$(PLATFORM_PACKAGE)/Library/FlashDeviceLib/FlashDeviceLibDxe.inf

+

 [LibraryClasses.X64.DXE_CORE]

   HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf

   MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf

@@ -450,6 +457,10 @@
   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf

 !endif

 

+!if $(CAPSULE_ENABLE)

+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf

+!endif

+

 [LibraryClasses.common.UEFI_DRIVER]

   PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf

 

@@ -694,6 +705,10 @@
   gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07

 !endif

 

+!if $(RECOVERY_ENABLE)

+  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap"

+!endif

+

 [PcdsPatchableInModule.common]

   gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6

   gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRESS_BASE)

@@ -885,6 +900,12 @@
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0

   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100

+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x7b, 0x26, 0x96, 0x40, 0x0a, 0xda, 0xeb, 0x42, 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4}

+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xb2, 0x9e, 0x9c, 0xaf, 0xad, 0x12, 0x3e, 0x4d, 0xa4, 0xd4, 0x96, 0xf6, 0xc9, 0x96, 0x62, 0x15}

+!endif

+

 [Components.IA32]

 

   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf

@@ -906,6 +927,14 @@
   }

   !endif

 

+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)

+  # FMP image decriptor

+  Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf {

+    <LibraryClasses>

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

+!endif

+

   MdeModulePkg/Core/Pei/PeiMain.inf {

 !if $(TARGET) == DEBUG

     <PcdsFixedAtBuild>

@@ -1005,6 +1034,24 @@
   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MpS3.inf

   EdkCompatibilityPkg/Compatibility/AcpiVariableHobOnSmramReserveHobThunk/AcpiVariableHobOnSmramReserveHobThunk.inf

   $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PiSmmCommunicationPei.inf

+

+!if $(RECOVERY_ENABLE)

+  #

+  # Recovery

+  #

+  $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf

+  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf

+  MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf

+  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf

+  FatPkg/FatPei/FatPei.inf

+  MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf

+  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf {

+    <LibraryClasses>

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

+!endif

+

 !if $(CAPSULE_ENABLE) == TRUE

   MdeModulePkg/Universal/CapsulePei/CapsulePei.inf

 !endif

@@ -1139,6 +1186,11 @@
       DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

       PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

       SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+!if $(CAPSULE_ENABLE)

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+!else

+      FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf

+!endif

     !if $(FTPM_ENABLE) == TRUE

       Tpm2DeviceLib|Vlv2TbltDevicePkg/Library/Tpm2DeviceLibSeCDxe/Tpm2DeviceLibSeC.inf

     !else

@@ -1505,6 +1557,37 @@
 

   Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.inf

 

+!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)

+  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf

+  MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf

+!endif

+

+!if $(CAPSULE_ENABLE)

+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+  }

+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf

+  }

+!endif

+

+!if $(MICOCODE_CAPSULE_ENABLE)

+  UefiCpuPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf {

+    <LibraryClasses>

+      DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf

+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf

+      SerialPortLib|$(PLATFORM_PACKAGE)/Library/SerialPortLib/SerialPortLib.inf

+  }

+!endif

+

 [BuildOptions]

 #

 # Define Build Options both for EDK and EDKII drivers.