## @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 ARM AARCH64 RISCV64 LOONGARCH64
#

[Sources]
  CapsuleService.c
  CapsuleService.h

[Sources.Ia32, Sources.EBC, Sources.ARM, Sources.AARCH64, Sources.RISCV64, Sources.LOONGARCH64]
  SaveLongModeContext.c

[Sources.Ia32, Sources.X64, Sources.ARM, Sources.AARCH64, Sources.RISCV64, Sources.LOONGARCH64]
  CapsuleCache.c

[Sources.Ia32, Sources.X64, Sources.EBC, Sources.RISCV64, Sources.LOONGARCH64]
  CapsuleReset.c

[Sources.ARM, 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

[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
  gEdkiiVariableLockProtocolGuid

[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
