## @file
#  Capsule Runtime Driver produces two UEFI capsule runtime services: (UpdateCapsule, QueryCapsuleCapabilities).
#
#  It installs the Capsule Architectural Protocol defined in PI1.0a to signify
#  the capsule runtime services are ready.
#
#  Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
#  Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
#  Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = CapsuleRuntimeDxe
  MODULE_UNI_FILE                = CapsuleRuntimeDxe.uni
  FILE_GUID                      = 42857F0A-13F2-4B21-8A23-53D3F714B840
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = CapsuleServiceInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC AARCH64 RISCV64 LOONGARCH64
#

[Sources]
  CapsuleService.c
  CapsuleService.h

[Sources.Ia32, Sources.EBC, Sources.AARCH64, Sources.RISCV64, Sources.LOONGARCH64]
  SaveLongModeContext.c

[Sources.Ia32, Sources.X64, Sources.AARCH64, Sources.RISCV64, Sources.LOONGARCH64]
  CapsuleCache.c

[Sources.Ia32, Sources.X64, Sources.EBC, Sources.RISCV64, Sources.LOONGARCH64]
  CapsuleReset.c

[Sources.AARCH64]
  Arm/CapsuleReset.c

[Sources.EBC]
  CapsuleCacheNull.c

[Sources.X64]
  X64/SaveLongModeContext.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  PcdLib
  DebugLib
  UefiRuntimeServicesTableLib
  UefiDriverEntryPoint
  CapsuleLib
  UefiRuntimeLib
  BaseLib
  PrintLib
  BaseMemoryLib
  CacheMaintenanceLib
  VariablePolicyHelperLib

[LibraryClasses.X64]
  UefiLib
  BaseMemoryLib

[Guids]
  ## SOMETIMES_PRODUCES   ## Variable:L"CapsuleUpdateData" # (Process across reset capsule image) for capsule updated data
  ## SOMETIMES_PRODUCES   ## Variable:L"CapsuleLongModeBuffer" # The long mode buffer used by IA32 Capsule PEIM to call X64 CapsuleCoalesce code to handle >4GB capsule blocks
  gEfiCapsuleVendorGuid
  gEfiFmpCapsuleGuid                            ## SOMETIMES_CONSUMES   ## GUID # FMP capsule GUID

[Protocols]
  gEfiCapsuleArchProtocolGuid                   ## PRODUCES

[Protocols.X64]
  ## UNDEFINED ## NOTIFY
  ## SOMETIMES_CONSUMES
  gEdkiiVariablePolicyProtocolGuid

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdSupportProcessCapsuleAtRuntime   ## CONSUMES

[FeaturePcd.X64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode      ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule   ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule      ## SOMETIMES_CONSUMES # Populate Image requires reset support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleInRamSupport         ## CONSUMES

[Pcd.X64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsulePeiLongModeStackSize   ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable                ## SOMETIMES_CONSUMES

[Depex]
  gEfiVariableWriteArchProtocolGuid             # Depends on variable write functionality to produce capsule data variable

# [Hob.X64]
# UNDEFINED                 ## SOMETIMES_CONSUMES # CPU

[UserExtensions.TianoCore."ExtraFiles"]
  CapsuleRuntimeDxeExtra.uni
