## @file
#   Fault Tolerant Write Smm Driver.
#
#   This driver installs SMM Fault Tolerant Write (FTW) protocol, which provides fault
#   tolerant write capability in SMM environment for block devices. Its implementation
#   depends on the full functionality SMM FVB protocol that support read, write/erase
#   flash access.
#
# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = SmmFaultTolerantWriteDxe
  MODULE_UNI_FILE                = SmmFaultTolerantWriteDxe.uni
  FILE_GUID                      = 470CB248-E8AC-473c-BB4F-81069A1FE6FD
  MODULE_TYPE                    = DXE_SMM_DRIVER
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x0001000A
  ENTRY_POINT                    = SmmFaultTolerantWriteInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  FtwMisc.c
  UpdateWorkingBlock.c
  FaultTolerantWrite.c
  FaultTolerantWriteTraditionalMm.c
  FaultTolerantWriteSmm.c
  FaultTolerantWrite.h
  FaultTolerantWriteSmmCommon.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MmServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiDriverEntryPoint
  DebugLib
  UefiLib
  PcdLib
  ReportStatusCodeLib
  SmmMemLib
  BaseLib

[Guids]
  #
  # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER
  #
  ## CONSUMES           ## GUID
  ## PRODUCES           ## GUID
  gEdkiiWorkingBlockSignatureGuid

[Protocols]
  gEfiSmmSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable  ## SOMETIMES_CONSUMES
  ## NOTIFY
  ## CONSUMES
  gEfiSmmFirmwareVolumeBlockProtocolGuid
  ## PRODUCES
  ## UNDEFINED # SmiHandlerRegister
  gEfiSmmFaultTolerantWriteProtocolGuid
  gEfiMmEndOfDxeProtocolGuid                      ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable    ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase    ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase      ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize      ## CONSUMES

#
# gBS->CalculateCrc32() is consumed in EntryPoint.
# PI spec said: When the DXE Foundation is notified that the EFI_RUNTIME_ARCH_PROTOCOL
# has been installed, then the Boot Service CalculateCrc32() is available.
# So add gEfiRuntimeArchProtocolGuid Depex here.
#
[Depex]
  gEfiSmmFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  SmmFaultTolerantWriteDxeExtra.uni
