2015-12-15 20:23:57 +01:00
|
|
|
## @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.
|
2016-01-07 23:43:22 +01:00
|
|
|
# Copyright (c) 2013 - 2016 Intel Corporation.
|
2015-12-15 20:23:57 +01:00
|
|
|
#
|
|
|
|
# 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 = 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
|
|
|
|
PlatformEarlyInit.c
|
|
|
|
PlatformEarlyInit.h
|
|
|
|
MemoryCallback.c
|
|
|
|
BootMode.c
|
|
|
|
CommonHeader.h
|
|
|
|
PeiFvSecurity.c
|
|
|
|
PeiFvSecurity.h
|
|
|
|
|
|
|
|
[Packages]
|
|
|
|
MdePkg/MdePkg.dec
|
|
|
|
MdeModulePkg/MdeModulePkg.dec
|
|
|
|
UefiCpuPkg/UefiCpuPkg.dec
|
|
|
|
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
|
|
|
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
|
|
|
QuarkPlatformPkg/QuarkPlatformPkg.dec
|
|
|
|
QuarkSocPkg/QuarkSocPkg.dec
|
|
|
|
|
|
|
|
[LibraryClasses]
|
|
|
|
ResetSystemLib
|
|
|
|
PrintLib
|
|
|
|
TimerLib
|
|
|
|
RecoveryOemHookLib
|
|
|
|
PcdLib
|
|
|
|
IntelQNCLib
|
|
|
|
ReportStatusCodeLib
|
|
|
|
PciLib
|
|
|
|
PciExpressLib
|
|
|
|
IoLib
|
|
|
|
PciCf8Lib
|
|
|
|
HobLib
|
|
|
|
BaseMemoryLib
|
|
|
|
PeiServicesTablePointerLib
|
|
|
|
PeiServicesLib
|
|
|
|
BaseLib
|
|
|
|
PeimEntryPoint
|
|
|
|
DebugLib
|
|
|
|
MemoryAllocationLib
|
|
|
|
PerformanceLib
|
|
|
|
CacheMaintenanceLib
|
|
|
|
MtrrLib
|
|
|
|
QNCAccessLib
|
|
|
|
PlatformHelperLib
|
|
|
|
PlatformPcieHelperLib
|
2016-01-07 23:43:22 +01:00
|
|
|
I2cLib
|
2015-12-15 20:23:57 +01:00
|
|
|
|
|
|
|
[Guids]
|
|
|
|
gEfiMemoryConfigDataGuid # ALWAYS_CONSUMED L"MemoryConfig"
|
|
|
|
gEfiAcpiVariableGuid # ALWAYS_CONSUMED L"AcpiGlobalVariab"
|
|
|
|
gEfiMemoryTypeInformationGuid # ALWAYS_CONSUMED L"MemoryTypeInformation"
|
|
|
|
gEfiMemoryConfigDataGuid # SOMETIMES_PRODUCED Hob: GUID_EXTENSION
|
|
|
|
gEfiSmmPeiSmramMemoryReserveGuid # ALWAYS_PRODUCED Hob: GUID_EXTENSION
|
|
|
|
gEfiFirmwareFileSystem2Guid # ALWAYS_CONSUMED
|
|
|
|
gEfiCapsuleGuid # ALWAYS_CONSUMED
|
|
|
|
gPeiCapsuleOnDataCDGuid
|
|
|
|
gPeiCapsuleOnFatIdeDiskGuid
|
|
|
|
gPeiCapsuleOnFatUsbDiskGuid
|
|
|
|
gEfiMemoryOverwriteControlDataGuid # SOMETIMES_CONSUMED
|
|
|
|
gEfiQuarkCapsuleGuid
|
|
|
|
|
|
|
|
[Ppis]
|
|
|
|
gQNCMemoryInitPpiGuid # PPI ALWAYS_CONSUMED
|
|
|
|
gEfiPeiMemoryDiscoveredPpiGuid # PPI ALWAYS_PRODUCED
|
|
|
|
gPeiAtaControllerPpiGuid # PPI SOMETIMES_PRODUCED
|
|
|
|
gEfiPeiStallPpiGuid # PPI ALWAYS_PRODUCED
|
|
|
|
gEfiPeiDeviceRecoveryModulePpiGuid # PPI SOMETIMES_CONSUMED
|
|
|
|
gEfiPeiRecoveryModulePpiGuid # PPI SOMETIMES_PRODUCED
|
|
|
|
gEfiPeiResetPpiGuid # PPI ALWAYS_PRODUCED
|
|
|
|
gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_CONSUMED
|
|
|
|
gEfiPeiBootInRecoveryModePpiGuid # PPI SOMETIMES_PRODUCED
|
|
|
|
gEfiPeiMasterBootModePpiGuid # PPI ALWAYS_PRODUCED
|
|
|
|
gEfiPeiFirmwareVolumeInfoPpiGuid
|
|
|
|
gEfiEndOfPeiSignalPpiGuid
|
|
|
|
gEfiPeiVirtualBlockIoPpiGuid
|
|
|
|
gPeiCapsulePpiGuid # PPI ALWAYS_CONSUMED
|
|
|
|
|
|
|
|
[FeaturePcd]
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatUsbDisk
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnDataCD
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatFloppyDisk
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnIdeDisk
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
|
|
|
|
gQuarkPlatformTokenSpaceGuid.WaitIfResetDueToError
|
|
|
|
|
|
|
|
[Pcd]
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdEsramStage1Base
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashAreaSize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashAreaBaseAddress
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdEccScrubBlkSize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdEccScrubInterval
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashQNCMicrocodeSize
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPmbaIoBaseAddress
|
|
|
|
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeIoBase
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeIoSize
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartFunctionNumber
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartBusNumber
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartDevNumber
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioBusNumber
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioDevNumber
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioFunctionNumber
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioBarRegister
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioMmioBase
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohMac0MmioBase
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohMac1MmioBase
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdPeiQNCUsbControllerMemoryBaseAddress
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdRcbaMmioBaseAddress
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory32Base
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory32Size
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory64Base
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory64Size
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciExpressSize
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdGbaIoBaseAddress
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdQuarkMicrocodeFile
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdTSegSize
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdESramMemorySize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecoverySize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecoveryBase
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashFvMainSize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashFvMainBase
|
|
|
|
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashFvPayloadBase
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdFlashFvPayloadSize
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdEnableFastBoot
|
|
|
|
gQuarkPlatformTokenSpaceGuid.PcdPlatformType
|
|
|
|
gEfiQuarkNcSocIdTokenSpaceGuid.PcdMrcParameters
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohEthernetMac0
|
|
|
|
gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohEthernetMac1
|
|
|
|
|
|
|
|
[Depex]
|
|
|
|
gEfiPeiReadOnlyVariable2PpiGuid AND gQNCMemoryInitPpiGuid
|