## @file
#  TPM device configuration for TPM 2.0
#  
#  By this module, user may select TPM device, clear TPM state, etc.
#  NOTE: This module is only for reference only, each platform should have its own setup page.
#
# Copyright (c) 2015 - 2106, 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                      = Tcg2ConfigDxe
  MODULE_UNI_FILE                = Tcg2ConfigDxe.uni
  FILE_GUID                      = 4D9CBEF0-15A0-4D0C-83DB-5213E710C23F
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = Tcg2ConfigDriverEntryPoint
  UNLOAD_IMAGE                   = Tcg2ConfigDriverUnload

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  Tcg2ConfigDriver.c
  Tcg2ConfigImpl.c
  Tcg2ConfigImpl.h
  Tcg2Config.vfr
  Tcg2ConfigStrings.uni
  Tcg2ConfigNvData.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  MemoryAllocationLib
  UefiLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  UefiDriverEntryPoint
  UefiHiiServicesLib
  DebugLib
  HiiLib
  PcdLib
  PrintLib
  Tpm2DeviceLib
  Tpm2CommandLib
  Tcg2PhysicalPresenceLib
  IoLib

[Guids]
  ## PRODUCES           ## HII
  ## SOMETIMES_PRODUCES ## Variable:L"TCG2_CONFIGURATION"
  ## SOMETIMES_CONSUMES ## Variable:L"TCG2_CONFIGURATION"
  ## PRODUCES           ## Variable:L"TCG2_DEVICE_DETECTION"
  ## SOMETIMES_CONSUMES ## Variable:L"TCG2_DEVICE_DETECTION"
  gTcg2ConfigFormSetGuid

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiDevicePathProtocolGuid                    ## PRODUCES
  gEdkiiVariableLockProtocolGuid                ## CONSUMES
  gEfiTcg2ProtocolGuid                          ## CONSUMES

[Pcd]
  gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid            ## CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdTcg2HashAlgorithmBitmap    ## CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress             ## CONSUMES

[Depex]
  gEfiTcg2ProtocolGuid              AND
  gEfiHiiConfigRoutingProtocolGuid  AND
  gEfiHiiDatabaseProtocolGuid       AND
  gEfiVariableArchProtocolGuid      AND
  gEfiVariableWriteArchProtocolGuid
  
[UserExtensions.TianoCore."ExtraFiles"]
  Tcg2ConfigDxeExtra.uni
