## @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 |