 ## @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>
# Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x0001001B
  BASE_NAME                      = FaultTolerantWriteStandaloneMm
  FILE_GUID                      = 3aade4ec-63cc-4a48-a928-5a374dd463eb
  MODULE_TYPE                    = MM_STANDALONE
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x00010032
  ENTRY_POINT                    = StandaloneMmFaultTolerantWriteInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
#

[Sources]
  FtwMisc.c
  UpdateWorkingBlock.c
  FaultTolerantWrite.c
  FaultTolerantWriteStandaloneMm.c
  FaultTolerantWriteSmm.c
  FaultTolerantWrite.h
  FaultTolerantWriteSmmCommon.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  StandaloneMmPkg/StandaloneMmPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  MemoryAllocationLib
  MmServicesTableLib
  PcdLib
  ReportStatusCodeLib
  SafeIntLib
  StandaloneMmDriverEntryPoint
  VariableFlashInfoLib

[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

[Depex]
  TRUE
