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