#include <Library/HobLib.h>\r
#include <FspStatusCode.h>\r
\r
+#define FSP_API_NOTIFY_PHASE_AFTER_PCI_ENUMERATION BIT16\r
+\r
typedef\r
EFI_STATUS\r
(EFIAPI * ADD_PERFORMANCE_RECORDS)(\r
EFI_EVENT ReadyToBootEvent;\r
VOID *Registration;\r
EFI_EVENT ProtocolNotifyEvent;\r
+ UINT32 FspApiMask;\r
\r
//\r
// Load this driver's image to memory\r
return EFI_SUCCESS;\r
}\r
\r
- ProtocolNotifyEvent = EfiCreateProtocolNotifyEvent (\r
- &gEfiPciEnumerationCompleteProtocolGuid,\r
- TPL_CALLBACK,\r
- OnPciEnumerationComplete,\r
- NULL,\r
- &Registration\r
- );\r
- ASSERT (ProtocolNotifyEvent != NULL);\r
+ FspApiMask = PcdGet32 (PcdSkipFspApi);\r
+ if ((FspApiMask & FSP_API_NOTIFY_PHASE_AFTER_PCI_ENUMERATION) == 0) {\r
+ ProtocolNotifyEvent = EfiCreateProtocolNotifyEvent (\r
+ &gEfiPciEnumerationCompleteProtocolGuid,\r
+ TPL_CALLBACK,\r
+ OnPciEnumerationComplete,\r
+ NULL,\r
+ &Registration\r
+ );\r
+ ASSERT (ProtocolNotifyEvent != NULL);\r
+ }\r
\r
Status = EfiCreateEventReadyToBootEx (\r
TPL_CALLBACK,\r
gIntelFsp2WrapperTokenSpaceGuid.PcdFsptBaseAddress|0x00000000|UINT32|0x00000300\r
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress|0x00000000|UINT32|0x00000301\r
\r
+ ## This PCD indicates if FSP APIs are skipped from FSP wrapper.<BR><BR>\r
+ # If a bit is set, that means this FSP API is skipped.<BR>\r
+ # If a bit is clear, that means this FSP API is NOT skipped.<BR>\r
+ # NOTE: Only NotifyPhase Post PCI enumeration (BIT16) is implemented.<BR>\r
+ # BIT[15:0] is for function:<BR>\r
+ # BIT0 - Skip TempRamInit<BR>\r
+ # BIT1 - Skip MemoryInit<BR>\r
+ # BIT2 - Skip TempRamExit<BR>\r
+ # BIT3 - Skip SiliconInit<BR>\r
+ # BIT4 - Skip NotifyPhase<BR>\r
+ # BIT[32:16] is for sub-function:<BR>\r
+ # BIT16 - Skip NotifyPhase (AfterPciEnumeration)<BR>\r
+ # BIT17 - Skip NotifyPhase (ReadyToBoot)<BR>\r
+ # BIT18 - Skip NotifyPhase (EndOfFirmware)<BR>\r
+ # Any undefined BITs are reserved for future use.<BR>\r
+ # @Prompt Skip FSP API from FSP wrapper.\r
+ gIntelFsp2WrapperTokenSpaceGuid.PcdSkipFspApi|0x00000000|UINT32|0x40000009\r
+\r
[PcdsFixedAtBuild, PcdsPatchableInModule,PcdsDynamic,PcdsDynamicEx]\r
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress|0x00000000|UINT32|0x00001001\r
\ No newline at end of file