## @file
#  This module installs ACPI Firmware Performance Data Table (FPDT).
#
#  This module registers report status code listener to collect performance data
#  for Firmware Basic Boot Performance Record and other boot performance records,
#  and install FPDT to ACPI table.
#
#  Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = FirmwarePerformanceDxe
  MODULE_UNI_FILE                = FirmwarePerformanceDxe.uni
  FILE_GUID                      = 00160F8D-2B35-4df2-BBE0-B272A8D631F0
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = FirmwarePerformanceDxeEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  FirmwarePerformanceDxe.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  BaseLib
  DebugLib
  DxeServicesLib
  TimerLib
  BaseMemoryLib
  MemoryAllocationLib
  PcdLib
  HobLib
  LockBoxLib
  UefiLib

[Protocols]
  gEfiAcpiTableProtocolGuid                     ## CONSUMES
  gEfiRscHandlerProtocolGuid                    ## CONSUMES
  gEfiVariableArchProtocolGuid                  ## CONSUMES
  gEfiLockBoxProtocolGuid                       ## CONSUMES

[Guids]
  gEfiEventExitBootServicesGuid                 ## CONSUMES             ## Event
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_CONSUMES   ## Variable:L"FirmwarePerformance"
  ## PRODUCES             ## Variable:L"FirmwarePerformance"
  ## SOMETIMES_CONSUMES ## UNDEFINED # Used to do smm communication
  ## SOMETIMES_CONSUMES ## UNDEFINED # StatusCode Data
  gEfiFirmwarePerformanceGuid
  gEdkiiFpdtExtendedFirmwarePerformanceGuid     ## SOMETIMES_CONSUMES ## UNDEFINED # StatusCode Data
  gFirmwarePerformanceS3PointerGuid             ## PRODUCES ## UNDEFINED # SaveLockBox

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderLoad    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderStart   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId            ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision      ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision  ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwarePerformanceDataTableS3Support   ## CONSUMES

[Depex]
  gEfiRscHandlerProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  FirmwarePerformanceDxeExtra.uni
