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