+/**\r
+ This FSP API is called after TempRamInit and initializes the memory.\r
+ This FSP API accepts a pointer to a data structure that will be platform dependent\r
+ and defined for each FSP binary. This will be documented in Integration guide with\r
+ each FSP release.\r
+ After FspMemInit completes its execution, it passes the pointer to the HobList and\r
+ returns to the boot loader from where it was called. Bootloader is responsible to \r
+ migrate it\92s stack and data to Memory.\r
+ FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to\r
+ complete the silicon initialization and provides bootloader an opportunity to get\r
+ control after system memory is available and before the temporary RAM is torn down.\r
+ These APIs are mutually exclusive to the FspInit API.\r
+\r
+ @param[in][out] FspMemoryInitParamPtr Address pointer to the FSP_MEMORY_INIT_PARAMS\r
+ structure.\r
+\r
+ @retval EFI_SUCCESS FSP execution environment was initialized successfully.\r
+ @retval EFI_INVALID_PARAMETER Input parameters are invalid.\r
+ @retval EFI_UNSUPPORTED The FSP calling conditions were not met.\r
+ @retval EFI_DEVICE_ERROR FSP initialization failed.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *FSP_MEMORY_INIT) (\r
+ IN OUT FSP_MEMORY_INIT_PARAMS *FspMemoryInitParamPtr\r
+ );\r
+\r
+\r
+/**\r
+ This FSP API is called after FspMemoryInit API. This FSP API tears down the temporary\r
+ memory setup by TempRamInit API. This FSP API accepts a pointer to a data structure\r
+ that will be platform dependent and defined for each FSP binary. This will be\r
+ documented in Integration Guide.\r
+ FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to\r
+ complete the silicon initialization and provides bootloader an opportunity to get\r
+ control after system memory is available and before the temporary RAM is torn down.\r
+ These APIs are mutually exclusive to the FspInit API.\r
+\r
+ @param[in][out] TempRamExitParamPtr Pointer to the Temp Ram Exit parameters structure.\r
+ This structure is normally defined in the Integration Guide.\r
+ And if it is not defined in the Integration Guide, pass NULL.\r
+\r
+ @retval EFI_SUCCESS FSP execution environment was initialized successfully.\r
+ @retval EFI_INVALID_PARAMETER Input parameters are invalid.\r
+ @retval EFI_UNSUPPORTED The FSP calling conditions were not met.\r
+ @retval EFI_DEVICE_ERROR FSP initialization failed.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *FSP_TEMP_RAM_EXIT) (\r
+ IN OUT VOID *TempRamExitParamPtr\r
+ );\r
+\r
+\r
+/**\r
+ This FSP API is called after TempRamExit API.\r
+ FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to complete the\r
+ silicon initialization.\r
+ These APIs are mutually exclusive to the FspInit API.\r
+\r
+ @param[in][out] FspSiliconInitParamPtr Pointer to the Silicon Init parameters structure.\r
+ This structure is normally defined in the Integration Guide.\r
+ And if it is not defined in the Integration Guide, pass NULL.\r
+\r
+ @retval EFI_SUCCESS FSP execution environment was initialized successfully.\r
+ @retval EFI_INVALID_PARAMETER Input parameters are invalid.\r
+ @retval EFI_UNSUPPORTED The FSP calling conditions were not met.\r
+ @retval EFI_DEVICE_ERROR FSP initialization failed.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *FSP_SILICON_INIT) (\r
+ IN OUT VOID *FspSiliconInitParamPtr\r
+ );\r
+\r