## @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>
#
#  This program and the accompanying materials
#  are licensed and made available under the terms and conditions of the BSD License
#  which accompanies this distribution. The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
##

[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

[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

[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]
  gEfiFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  FaultTolerantWriteDxeExtra.uni
