blob: c83d773b6e30429fc91ede72b5c05cdf4afa3ad2 [file] [log] [blame]
## @file
# This is the Platform PEIM to initialize whole platform on PEI phase.
#
# This PEIM includes 3 parts, pre memory initialization, MRC
# wrapper and post memory initialization.
# On pre memory, following action is performed,
# 1. Initizluize GMCH.
# 2. Detect boot mode.
# 3. Detect video adapter to determine whether we need pre allocated
# memory.
#
# After that MRC wrapper calls MRC to initialize memory and install a PPI
# notify to do post memory
# initialization. MRC wrapper performance following actions,
# 1. Install EFI Memory.
# 2. Create HOB of system memory.
#
# On post memory, following action is performed,
# 1. QNC initialization after MRC.
# 2. SIO initialization.
# 3. Install ResetSystem and FinvFv PPI, relocate Stall to memory on
# recovery boot mode.
# 4. Set MTRR for PEI
# 5. Create FV HOB and Flash HOB
# 6. Install RecoveryModule and AtaController PPI if on recovery boot mode.
#
# This PEIM does not have any register access directly, it depends on
# IntelQNCLib, QNCAccess libraries to access Chipset
# registers.
#
# Platform.c - Provide main flow and entrypoint of PEIM.
# MemoryCallback.c - Includes a memory call back function notified when
# MRC is done.
# Recovery.c - provides the platform recoveyr functionality.
# MrcWrapper.c - Contains the logic to call MRC PPI and do Framework
# memory specific stuff like build memory map, build
# resource description hob for DXE phase,etc.
# Bootmode.c - Detect boot mode.
# Copyright (c) 2013 Intel Corporation.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Intel Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = PlatformEarlyInitPei
FILE_GUID = 9618C0DC-50A4-496c-994F-7241F282ED01
MODULE_TYPE = PEIM
VERSION_STRING = 1.0
ENTRY_POINT = PeiInitPlatform
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64
#
[Sources]
Generic/Recovery.c
PlatformErratas.c
MrcWrapper.c
MrcWrapper.h
Common/FlashMap.c
PlatformEarlyInit.c
PlatformEarlyInit.h
MemoryCallback.c
BootMode.c
CommonHeader.h
PeiFvSecurity.c
PeiFvSecurity.h
Capsule.c
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
UefiCpuPkg/UefiCpuPkg.dec
IA32FamilyCpuBasePkg/IA32FamilyCpuBasePkg.dec
IntelFrameworkPkg/IntelFrameworkPkg.dec
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
QuarkPlatformPkg/QuarkPlatformPkg.dec
QuarkSocPkg/QuarkSocPkg.dec
[LibraryClasses]
ResetSystemLib
PrintLib
TimerLib
RecoveryOemHookLib
PcdLib
IntelQNCLib
IohLib
ReportStatusCodeLib
PciLib
PciExpressLib
IoLib
PciCf8Lib
HobLib
BaseMemoryLib
PeiServicesTablePointerLib
PeiServicesLib
BaseLib
PeimEntryPoint
DebugLib
MemoryAllocationLib
PerformanceLib
CacheMaintenanceLib
MtrrLib
QNCAccessLib
SwBpeLib
MfhLib
PlatformHelperLib
PlatformPcieHelperLib
PlatformDataLib
SecurityAuthenticationLib
RedirectPeiServicesLib
[Guids]
gEfiMemoryConfigDataGuid # ALWAYS_CONSUMED L"MemoryConfig"
gEfiAcpiVariableGuid # ALWAYS_CONSUMED L"AcpiGlobalVariab"
gEfiMemoryTypeInformationGuid # ALWAYS_CONSUMED L"MemoryTypeInformation"
gEfiFlashMapHobGuid
gEfiPlatformMemoryLayoutGuid # ALWAYS_PRODUCED Hob: GUID_EXTENSION
gEfiMemoryConfigDataGuid # SOMETIMES_PRODUCED Hob: GUID_EXTENSION
gEfiSmmPeiSmramMemoryReserveGuid # ALWAYS_PRODUCED Hob: GUID_EXTENSION
gEfiFirmwareFileSystem2Guid # ALWAYS_CONSUMED
gEfiCapsuleGuid # ALWAYS_CONSUMED
gPeiCapsuleOnDataCDGuid
gPeiCapsuleOnFatIdeDiskGuid
gPeiCapsuleOnFatUsbDiskGuid
gEfiPciGInfoHobGuid
gEfiMemoryOverwriteControlDataGuid # SOMETIMES_CONSUMED
gEfiPlatformInfoGuid
gEfiQuarkCapsuleGuid
gEfiQuarkCapsuleSecurityHeaderGuid
gEfiCapsuleVendorGuid
[Ppis]
gCltMemoryInitPpiGuid # PPI ALWAYS_CONSUMED
gEfiPeiMemoryDiscoveredPpiGuid # PPI ALWAYS_PRODUCED
gPeiAtaControllerPpiGuid # PPI SOMETIMES_PRODUCED
gEfiPeiStallPpiGuid # PPI ALWAYS_PRODUCED
gPeiFlashMapPpiGuid
gEfiPeiDeviceRecoveryModulePpiGuid # PPI SOMETIMES_CONSUMED
gEfiPeiRecoveryModulePpiGuid # PPI SOMETIMES_PRODUCED
gEfiPeiResetPpiGuid # PPI ALWAYS_PRODUCED
gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_CONSUMED
gEfiPeiBootInRecoveryModePpiGuid # PPI SOMETIMES_PRODUCED
gEfiPeiMasterBootModePpiGuid # PPI ALWAYS_PRODUCED
gPeiSStateBootModePpiGuid
gEfiPeiFirmwareVolumeInfoPpiGuid
gEfiEndOfPeiSignalPpiGuid
gEfiPeiVirtualBlockIoPpiGuid
gPeiCapsulePpiGuid # PPI ALWAYS_CONSUMED
[FeaturePcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatUsbDisk
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnDataCD
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatFloppyDisk
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnIdeDisk
gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
gQuarkPlatformTokenSpaceGuid.PcdEnableSecureLock
gQuarkPlatformTokenSpaceGuid.WaitIfResetDueToError
[FixedPcd]
gQuarkPlatformTokenSpaceGuid.PcdFvSecurityHeaderSize
gQuarkPlatformTokenSpaceGuid.PcdEsramStage1Base
gQuarkPlatformTokenSpaceGuid.PcdFlashFvFixedStage1AreaBase
gQuarkPlatformTokenSpaceGuid.PcdFlashFvFixedStage1AreaSize
gQuarkPlatformTokenSpaceGuid.PcdFlashAreaSize
gQuarkPlatformTokenSpaceGuid.PcdFlashAreaBaseAddress
gQuarkPlatformTokenSpaceGuid.PcdEccScrubBlkSize
gQuarkPlatformTokenSpaceGuid.PcdEccScrubInterval
gQuarkPlatformTokenSpaceGuid.PcdFlashNvStorageSize
gQuarkPlatformTokenSpaceGuid.PcdFlashNvStorageBase
gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecovery2Size
gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecovery2Base
gQuarkPlatformTokenSpaceGuid.PcdEnableFastBoot
gQuarkPlatformTokenSpaceGuid.PcdFlashQNCMicrocodeSize
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPmbaIoBaseAddress
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeIoBase
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeIoSize
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartFunctionNumber
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartBusNumber
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartDevNumber
gEfiQuarkSCSocIdTokenSpaceGuid.PcdPeiQNCUsbControllerMemoryBaseAddress
gEfiQuarkNcSocIdTokenSpaceGuid.PcdRcbaMmioBaseAddress
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory32Base
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory32Size
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory64Base
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory64Size
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciExpressSize
gEfiQuarkNcSocIdTokenSpaceGuid.PcdGbaIoBaseAddress
gEfiQuarkNcSocIdTokenSpaceGuid.PcdQuarkMicrocodeFile
gEfiQuarkNcSocIdTokenSpaceGuid.PcdTSegSize
gEfiQuarkNcSocIdTokenSpaceGuid.PcdESramMemorySize
[Pcd]
gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecoverySize
gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecoveryBase
gQuarkPlatformTokenSpaceGuid.PcdFlashFvMainSize
gQuarkPlatformTokenSpaceGuid.PcdFlashFvMainBase
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState
gEfiCpuTokenSpaceGuid.PcdIsPowerOnReset
gQuarkPlatformTokenSpaceGuid.PcdFlashFvPayloadBase
gQuarkPlatformTokenSpaceGuid.PcdFlashFvPayloadSize
[Depex]
gEfiPeiReadOnlyVariable2PpiGuid AND gCltMemoryInitPpiGuid