## @file
#  Firmware Performance Pei Module.
#
#  In S3 resume boot mode, it updates S3 Resume Performance Record in ACPI Firmware Performance Data Table.
#
#  This module register report status code listener to collect performance data
#  for S3 Resume Performance Record on S3 resume boot path.
#
#  Copyright (c) 2011 - 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                      = FirmwarePerformancePei
  MODULE_UNI_FILE                = FirmwarePerformancePei.uni
  FILE_GUID                      = ADF01BF6-47D6-495d-B95B-687777807214
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = FirmwarePerformancePeiEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  FirmwarePerformancePei.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  PeimEntryPoint
  PeiServicesLib
  BaseLib
  DebugLib
  TimerLib
  BaseMemoryLib
  LockBoxLib
  PcdLib
  HobLib

[Ppis]
  gEfiPeiRscHandlerPpiGuid                      ## CONSUMES
  gEfiPeiReadOnlyVariable2PpiGuid               ## CONSUMES

[Guids]
  ## SOMETIMES_CONSUMES   ## UNDEFINED # RestoreLockBox
  gEfiFirmwarePerformanceGuid
  gFirmwarePerformanceS3PointerGuid             ## SOMETIMES_CONSUMES ## UNDEFINED # RestoreLockBox
  gEdkiiFpdtExtendedFirmwarePerformanceGuid     ## SOMETIMES_CONSUMES ## HOB

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwarePerformanceDataTableS3Support   ## CONSUMES

[Depex]
  gEfiPeiMasterBootModePpiGuid AND gEfiPeiRscHandlerPpiGuid

# [BootMode]
# S3_RESUME             ## SOMETIMES_CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  FirmwarePerformancePeiExtra.uni
