1## @file 2# This is the Platform PEIM to initialize whole platform on PEI phase. 3# 4# This PEIM includes 3 parts, pre memory initialization, MRC 5# wrapper and post memory initialization. 6# On pre memory, following action is performed, 7# 1. Initizluize GMCH. 8# 2. Detect boot mode. 9# 3. Detect video adapter to determine whether we need pre allocated 10# memory. 11# 12# After that MRC wrapper calls MRC to initialize memory and install a PPI 13# notify to do post memory 14# initialization. MRC wrapper performance following actions, 15# 1. Install EFI Memory. 16# 2. Create HOB of system memory. 17# 18# On post memory, following action is performed, 19# 1. QNC initialization after MRC. 20# 2. SIO initialization. 21# 3. Install ResetSystem and FinvFv PPI, relocate Stall to memory on 22# recovery boot mode. 23# 4. Set MTRR for PEI 24# 5. Create FV HOB and Flash HOB 25# 6. Install RecoveryModule and AtaController PPI if on recovery boot mode. 26# 27# This PEIM does not have any register access directly, it depends on 28# IntelQNCLib, QNCAccess libraries to access Chipset 29# registers. 30# 31# Platform.c - Provide main flow and entrypoint of PEIM. 32# MemoryCallback.c - Includes a memory call back function notified when 33# MRC is done. 34# Recovery.c - provides the platform recoveyr functionality. 35# MrcWrapper.c - Contains the logic to call MRC PPI and do Framework 36# memory specific stuff like build memory map, build 37# resource description hob for DXE phase,etc. 38# Bootmode.c - Detect boot mode. 39# Copyright (c) 2013 - 2016 Intel Corporation. 40# 41# This program and the accompanying materials 42# are licensed and made available under the terms and conditions of the BSD License 43# which accompanies this distribution. The full text of the license may be found at 44# http://opensource.org/licenses/bsd-license.php 45# 46# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 47# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 48# 49## 50 51[Defines] 52 INF_VERSION = 0x00010005 53 BASE_NAME = PlatformEarlyInitPei 54 FILE_GUID = 9618C0DC-50A4-496c-994F-7241F282ED01 55 MODULE_TYPE = PEIM 56 VERSION_STRING = 1.0 57 ENTRY_POINT = PeiInitPlatform 58 59# 60# The following information is for reference only and not required by the build tools. 61# 62# VALID_ARCHITECTURES = IA32 X64 63# 64 65[Sources] 66 Generic/Recovery.c 67 PlatformErratas.c 68 MrcWrapper.c 69 MrcWrapper.h 70 PlatformEarlyInit.c 71 PlatformEarlyInit.h 72 MemoryCallback.c 73 BootMode.c 74 CommonHeader.h 75 PeiFvSecurity.c 76 PeiFvSecurity.h 77 78[Packages] 79 MdePkg/MdePkg.dec 80 MdeModulePkg/MdeModulePkg.dec 81 UefiCpuPkg/UefiCpuPkg.dec 82 IntelFrameworkPkg/IntelFrameworkPkg.dec 83 IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec 84 QuarkPlatformPkg/QuarkPlatformPkg.dec 85 QuarkSocPkg/QuarkSocPkg.dec 86 87[LibraryClasses] 88 ResetSystemLib 89 PrintLib 90 TimerLib 91 RecoveryOemHookLib 92 PcdLib 93 IntelQNCLib 94 ReportStatusCodeLib 95 PciLib 96 PciExpressLib 97 IoLib 98 PciCf8Lib 99 HobLib 100 BaseMemoryLib 101 PeiServicesTablePointerLib 102 PeiServicesLib 103 BaseLib 104 PeimEntryPoint 105 DebugLib 106 MemoryAllocationLib 107 PerformanceLib 108 CacheMaintenanceLib 109 MtrrLib 110 QNCAccessLib 111 PlatformHelperLib 112 PlatformPcieHelperLib 113 I2cLib 114 115[Guids] 116 gEfiMemoryConfigDataGuid # ALWAYS_CONSUMED L"MemoryConfig" 117 gEfiAcpiVariableGuid # ALWAYS_CONSUMED L"AcpiGlobalVariab" 118 gEfiMemoryTypeInformationGuid # ALWAYS_CONSUMED L"MemoryTypeInformation" 119 gEfiMemoryConfigDataGuid # SOMETIMES_PRODUCED Hob: GUID_EXTENSION 120 gEfiSmmPeiSmramMemoryReserveGuid # ALWAYS_PRODUCED Hob: GUID_EXTENSION 121 gEfiFirmwareFileSystem2Guid # ALWAYS_CONSUMED 122 gEfiCapsuleGuid # ALWAYS_CONSUMED 123 gPeiCapsuleOnDataCDGuid 124 gPeiCapsuleOnFatIdeDiskGuid 125 gPeiCapsuleOnFatUsbDiskGuid 126 gEfiMemoryOverwriteControlDataGuid # SOMETIMES_CONSUMED 127 gEfiQuarkCapsuleGuid 128 129[Ppis] 130 gQNCMemoryInitPpiGuid # PPI ALWAYS_CONSUMED 131 gEfiPeiMemoryDiscoveredPpiGuid # PPI ALWAYS_PRODUCED 132 gPeiAtaControllerPpiGuid # PPI SOMETIMES_PRODUCED 133 gEfiPeiStallPpiGuid # PPI ALWAYS_PRODUCED 134 gEfiPeiDeviceRecoveryModulePpiGuid # PPI SOMETIMES_CONSUMED 135 gEfiPeiRecoveryModulePpiGuid # PPI SOMETIMES_PRODUCED 136 gEfiPeiResetPpiGuid # PPI ALWAYS_PRODUCED 137 gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_CONSUMED 138 gEfiPeiBootInRecoveryModePpiGuid # PPI SOMETIMES_PRODUCED 139 gEfiPeiMasterBootModePpiGuid # PPI ALWAYS_PRODUCED 140 gEfiPeiFirmwareVolumeInfoPpiGuid 141 gEfiEndOfPeiSignalPpiGuid 142 gEfiPeiVirtualBlockIoPpiGuid 143 gPeiCapsulePpiGuid # PPI ALWAYS_CONSUMED 144 145[FeaturePcd] 146 gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatUsbDisk 147 gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnDataCD 148 gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatFloppyDisk 149 gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnIdeDisk 150 gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport 151 gQuarkPlatformTokenSpaceGuid.WaitIfResetDueToError 152 153[Pcd] 154 gQuarkPlatformTokenSpaceGuid.PcdEsramStage1Base 155 gQuarkPlatformTokenSpaceGuid.PcdFlashAreaSize 156 gQuarkPlatformTokenSpaceGuid.PcdFlashAreaBaseAddress 157 gQuarkPlatformTokenSpaceGuid.PcdEccScrubBlkSize 158 gQuarkPlatformTokenSpaceGuid.PcdEccScrubInterval 159 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase 160 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize 161 gQuarkPlatformTokenSpaceGuid.PcdFlashQNCMicrocodeSize 162 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPmbaIoBaseAddress 163 gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress 164 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeIoBase 165 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeIoSize 166 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartFunctionNumber 167 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartBusNumber 168 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohUartDevNumber 169 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioBusNumber 170 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioDevNumber 171 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioFunctionNumber 172 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioBarRegister 173 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohGpioMmioBase 174 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohMac0MmioBase 175 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohMac1MmioBase 176 gEfiQuarkSCSocIdTokenSpaceGuid.PcdPeiQNCUsbControllerMemoryBaseAddress 177 gEfiQuarkNcSocIdTokenSpaceGuid.PcdRcbaMmioBaseAddress 178 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory32Base 179 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory32Size 180 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory64Base 181 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciHostBridgeMemory64Size 182 gEfiQuarkNcSocIdTokenSpaceGuid.PcdPciExpressSize 183 gEfiQuarkNcSocIdTokenSpaceGuid.PcdGbaIoBaseAddress 184 gEfiQuarkNcSocIdTokenSpaceGuid.PcdQuarkMicrocodeFile 185 gEfiQuarkNcSocIdTokenSpaceGuid.PcdTSegSize 186 gEfiQuarkNcSocIdTokenSpaceGuid.PcdESramMemorySize 187 gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecoverySize 188 gQuarkPlatformTokenSpaceGuid.PcdFlashFvRecoveryBase 189 gQuarkPlatformTokenSpaceGuid.PcdFlashFvMainSize 190 gQuarkPlatformTokenSpaceGuid.PcdFlashFvMainBase 191 gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState 192 gQuarkPlatformTokenSpaceGuid.PcdFlashFvPayloadBase 193 gQuarkPlatformTokenSpaceGuid.PcdFlashFvPayloadSize 194 gQuarkPlatformTokenSpaceGuid.PcdEnableFastBoot 195 gQuarkPlatformTokenSpaceGuid.PcdPlatformType 196 gEfiQuarkNcSocIdTokenSpaceGuid.PcdMrcParameters 197 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohEthernetMac0 198 gEfiQuarkSCSocIdTokenSpaceGuid.PcdIohEthernetMac1 199 200[Depex] 201 gEfiPeiReadOnlyVariable2PpiGuid AND gQNCMemoryInitPpiGuid 202