## @file
# Fault Tolerant Write Dxe Driver.
#
# This driver installs Fault Tolerant Write (FTW) protocol,
# which provides fault tolerant write capability for block devices.
# Its implementation depends on the full functionality FVB protocol that support read, write/erase flash access.
#
# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = FaultTolerantWriteDxe
  MODULE_UNI_FILE                = FaultTolerantWriteDxe.uni
  FILE_GUID                      = FE5CEA76-4F72-49e8-986F-2CD899DFFE5D
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = FaultTolerantWriteInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  FtwMisc.c
  UpdateWorkingBlock.c
  FaultTolerantWrite.c
  FaultTolerantWriteDxe.c
  FaultTolerantWrite.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiDriverEntryPoint
  DebugLib
  UefiLib
  PcdLib
  ReportStatusCodeLib
  SafeIntLib
  VariableFlashInfoLib

[Guids]
  #
  # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER
  #
  ## CONSUMES           ## GUID
  ## PRODUCES           ## GUID
  gEdkiiWorkingBlockSignatureGuid

[Protocols]
  gEfiSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## SOMETIMES_CONSUMES
  ## NOTIFY
  ## CONSUMES
  gEfiFirmwareVolumeBlockProtocolGuid
  gEfiFaultTolerantWriteProtocolGuid            ## PRODUCES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable    ## 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]
  gEfiFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  FaultTolerantWriteDxeExtra.uni
