## @file
#  Provides ACPI methods for TPM 2.0 support
#
#  Spec Compliance Info:
#     "TCG ACPI Specification Version 1.2 Revision 8"
#     "Physical Presence Interface Specification Version 1.30 Revision 00.52"
#       along with
#     "Errata Version 0.4 for TCG PC Client Platform Physical Presence Interface Specification"
#     "Platform Reset Attack Mitigation Specification Version 1.00"
#    TPM2.0 ACPI device object
#     "TCG PC Client Platform Firmware Profile Specification for TPM Family 2.0 Level 00 Revision 1.03 v51"
#       along with
#     "Errata for PC Client Specific Platform Firmware Profile Specification Version 1.0 Revision 1.03"
#
#  This driver implements TPM 2.0 definition block in ACPI table and
#  registers SMI callback functions for Tcg2 physical presence and
#  MemoryClear to handle the requests from ACPI method.
#
#  Caution: This module requires additional review when modified.
#  This driver will have external input - variable and ACPINvs data in SMM mode.
#  This external input must be validated carefully to avoid security issue.
#
# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = Tcg2Smm
  MODULE_UNI_FILE                = Tcg2Smm.uni
  FILE_GUID                      = 44A20657-10B8-4049-A148-ACD8812AF257
  MODULE_TYPE                    = DXE_SMM_DRIVER
  PI_SPECIFICATION_VERSION       = 0x0001000A
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeTcgSmm

[Sources]
  Tcg2Smm.h
  Tcg2Smm.c
  Tcg2TraditionalMm.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  UefiDriverEntryPoint
  MmServicesTableLib
  UefiBootServicesTableLib
  DebugLib
  DxeServicesLib
  TpmMeasurementLib
  Tpm2CommandLib
  Tcg2PhysicalPresenceLib
  PcdLib
  SmmMemLib

[Guids]
  ## SOMETIMES_PRODUCES ## Variable:L"MemoryOverwriteRequestControl"
  ## SOMETIMES_CONSUMES ## Variable:L"MemoryOverwriteRequestControl"
  gEfiMemoryOverwriteControlDataGuid

  gEfiTpmDeviceInstanceTpm20DtpmGuid                            ## PRODUCES           ## GUID       # TPM device identifier
  gTcg2MmSwSmiRegisteredGuid                                    ## PRODUCES
  gTpmNvsMmGuid                                                 ## CONSUMES

[Protocols]
  gEfiSmmSwDispatch2ProtocolGuid                                ## CONSUMES
  gEfiSmmVariableProtocolGuid                                   ## CONSUMES
  gEfiMmReadyToLockProtocolGuid                                 ## CONSUMES

[Pcd]
  gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid              ## CONSUMES

[Depex]
  gEfiSmmSwDispatch2ProtocolGuid AND
  gEfiSmmVariableProtocolGuid AND
  gEfiTcg2ProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  Tcg2SmmExtra.uni
