## @file
# Coreboot Support PEI Module
#
# Parses coreboot table in memory and report resource information into pei core. It will install
# the memory as required.
#
#  Copyright (c) 2014 - 2016, 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                      = CbSupportPeim
  FILE_GUID                      = 352C6AF8-315B-4bd6-B04F-31D4ED1EBE57
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = CbPeiEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  CbSupportPei.c
  CbSupportPei.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
  CorebootModulePkg/CorebootModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec

[LibraryClasses]
  PeimEntryPoint
  PeiServicesLib
  BaseLib
  BaseMemoryLib
  DebugLib
  HobLib
  PcdLib
  CbParseLib
  MtrrLib
  IoLib
  CbPlatformSupportLib

[Guids]
  gEfiSmmPeiSmramMemoryReserveGuid
  gEfiMemoryTypeInformationGuid
  gEfiFirmwareFileSystem2Guid
  gUefiSystemTableInfoGuid
  gUefiFrameBufferInfoGuid
  gUefiAcpiBoardInfoGuid

[Ppis]
  gEfiPeiMasterBootModePpiGuid

[Pcd]
  gUefiCorebootModulePkgTokenSpaceGuid.PcdPayloadFdMemBase
  gUefiCorebootModulePkgTokenSpaceGuid.PcdPayloadFdMemSize
  gUefiCorebootModulePkgTokenSpaceGuid.PcdCbHeaderPointer
  gUefiCorebootModulePkgTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory
  gUefiCorebootModulePkgTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS
  gUefiCorebootModulePkgTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType
  gUefiCorebootModulePkgTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData
  gUefiCorebootModulePkgTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode

[Depex]
  TRUE