1## @file
2#   Fault Tolerant Write Smm Driver.
3#
4#   This driver installs SMM Fault Tolerant Write (FTW) protocol, which provides fault
5#   tolerant write capability in SMM environment for block devices. Its implementation
6#   depends on the full functionality SMM FVB protocol that support read, write/erase
7#   flash access.
8#
9# Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
10#
11#  This program and the accompanying materials
12#  are licensed and made available under the terms and conditions of the BSD License
13#  which accompanies this distribution. The full text of the license may be found at
14#  http://opensource.org/licenses/bsd-license.php
15#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17#
18##
19
20[Defines]
21  INF_VERSION                    = 0x00010005
22  BASE_NAME                      = SmmFaultTolerantWriteDxe
23  MODULE_UNI_FILE                = SmmFaultTolerantWriteDxe.uni
24  FILE_GUID                      = 470CB248-E8AC-473c-BB4F-81069A1FE6FD
25  MODULE_TYPE                    = DXE_SMM_DRIVER
26  VERSION_STRING                 = 1.0
27  PI_SPECIFICATION_VERSION       = 0x0001000A
28  ENTRY_POINT                    = SmmFaultTolerantWriteInitialize
29
30#
31# The following information is for reference only and not required by the build tools.
32#
33#  VALID_ARCHITECTURES           = IA32 X64
34#
35
36[Sources]
37  FtwMisc.c
38  UpdateWorkingBlock.c
39  FaultTolerantWrite.c
40  FaultTolerantWriteSmm.c
41  FaultTolerantWrite.h
42  FaultTolerantWriteSmmCommon.h
43
44[Packages]
45  MdePkg/MdePkg.dec
46  MdeModulePkg/MdeModulePkg.dec
47
48[LibraryClasses]
49  SmmServicesTableLib
50  MemoryAllocationLib
51  BaseMemoryLib
52  UefiDriverEntryPoint
53  DebugLib
54  UefiLib
55  PcdLib
56  ReportStatusCodeLib
57  SmmMemLib
58
59[Guids]
60  #
61  # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER
62  #
63  ## CONSUMES           ## GUID
64  ## PRODUCES           ## GUID
65  gEdkiiWorkingBlockSignatureGuid
66
67[Protocols]
68  gEfiSmmSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable  ## SOMETIMES_CONSUMES
69  ## NOTIFY
70  ## CONSUMES
71  gEfiSmmFirmwareVolumeBlockProtocolGuid
72  ## PRODUCES
73  ## UNDEFINED # SmiHandlerRegister
74  gEfiSmmFaultTolerantWriteProtocolGuid
75  gEfiSmmEndOfDxeProtocolGuid                      ## CONSUMES
76
77[FeaturePcd]
78  gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable    ## CONSUMES
79
80[Pcd]
81  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase    ## SOMETIMES_CONSUMES
82  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64  ## CONSUMES
83  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize    ## CONSUMES
84  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase      ## SOMETIMES_CONSUMES
85  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64    ## CONSUMES
86  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize      ## CONSUMES
87
88#
89# gBS->CalculateCrc32() is consumed in EntryPoint.
90# PI spec said: When the DXE Foundation is notified that the EFI_RUNTIME_ARCH_PROTOCOL
91# has been installed, then the Boot Service CalculateCrc32() is available.
92# So add gEfiRuntimeArchProtocolGuid Depex here.
93#
94[Depex]
95  gEfiSmmFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid
96
97[UserExtensions.TianoCore."ExtraFiles"]
98  SmmFaultTolerantWriteDxeExtra.uni
99