From 5633abb172743e1e61749dc2df96b1f4a2743b27 Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Fri, 23 Dec 2016 14:34:18 +0800 Subject: BroxtonPlatformPkg: Add IntelFsp2WrapperPkg Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- .../Include/Library/FspHobProcessLib.h | 71 +++++++++ .../Include/Library/FspPlatformInfoLib.h | 167 +++++++++++++++++++++ .../Include/Library/FspPlatformSecLib.h | 71 +++++++++ 3 files changed, 309 insertions(+) create mode 100644 Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspHobProcessLib.h create mode 100644 Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformInfoLib.h create mode 100644 Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformSecLib.h (limited to 'Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include') diff --git a/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspHobProcessLib.h b/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspHobProcessLib.h new file mode 100644 index 0000000000..b7ec68e813 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspHobProcessLib.h @@ -0,0 +1,71 @@ +/** @file + Provide FSP hob process related function. + + Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+ + 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. + +**/ + +#ifndef __FSP_HOB_PROCESS_LIB_H__ +#define __FSP_HOB_PROCESS_LIB_H__ + +/** + BIOS process FspBobList. + + @param[in] FspHobList Pointer to the HOB data structure produced by FSP. + + @return If platform process the FSP hob list successfully. + +**/ +EFI_STATUS +EFIAPI +FspHobProcess ( + IN VOID *FspHobList + ); + +/** + BIOS process FspBobList for Memory Resource Descriptor. + + @param[in] FspHobList Pointer to the HOB data structure produced by FSP. + + @return If platform process the FSP hob list successfully. + +**/ +EFI_STATUS +EFIAPI +FspHobProcessForMemoryResource ( + IN VOID *FspHobList + ); + +/** + BIOS process FspBobList for other data (not Memory Resource Descriptor). + + @param[in] FspHobList Pointer to the HOB data structure produced by FSP. + + @return If platform process the FSP hob list successfully. + +**/ +EFI_STATUS +EFIAPI +FspHobProcessForOtherData ( + IN VOID *FspHobList + ); + +/** + Dump FSP SMBIOS memory info HOB + +**/ +VOID +DumpFspSmbiosMemoryInfoHob ( + IN VOID *FspHobList + ); + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformInfoLib.h b/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformInfoLib.h new file mode 100644 index 0000000000..f965b02647 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformInfoLib.h @@ -0,0 +1,167 @@ +/** @file + Provide FSP platform information related function. + + Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+ + 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. + +**/ + +#ifndef __FSP_PLATFORM_INFO_LIB_H__ +#define __FSP_PLATFORM_INFO_LIB_H__ + +/** + Get current boot mode. + + @note At this point, memory is ready, PeiServices are NOT available to use. + Platform can get some data from chipset register. + + @return BootMode current boot mode. + +**/ +UINT32 +EFIAPI +GetBootMode ( + VOID + ); + +/** + Get NVS buffer parameter. + + @note At this point, memory is NOT ready, PeiServices are available to use. + + @return NvsBuffer NVS buffer parameter. + +**/ +VOID * +EFIAPI +GetNvsBuffer ( + VOID + ); + +/** + This function overrides the default configurations in the UPD data region. + + @param[in] PeiServices Describes the list of possible PEI Services. + @param[in, out] FspUpdRgnPtr A pointer to the UPD data region data strcture. + + @return FspUpdRgnPtr A pointer to the UPD data region data strcture. + +**/ +VOID * +EFIAPI +UpdateFspUpdConfigs ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT VOID *FspUpdRgnPtr + ); + +/** + Get BootLoader Tolum size. + + @note At this point, memory is NOT ready, PeiServices are available to use. + + @return BootLoader Tolum size. + +**/ +UINT32 +EFIAPI +GetBootLoaderTolumSize ( + VOID + ); + +/** + Get TempRamExit parameter. + + @note At this point, memory is ready, PeiServices are available to use. + + @return TempRamExit parameter. + +**/ +VOID * +EFIAPI +GetTempRamExitParam ( + VOID + ); + +/** + Get FspSiliconInit parameter. + + @note At this point, memory is ready, PeiServices are available to use. + + @return FspSiliconInit parameter. + +**/ +VOID * +EFIAPI +GetFspSiliconInitParam ( + VOID + ); + +/** + Get S3 PEI memory information. + + @note At this point, memory is ready, and PeiServices are available to use. + Platform can get some data from SMRAM directly. + + @param[out] S3PeiMemSize PEI memory size to be installed in S3 phase. + @param[out] S3PeiMemBase PEI memory base to be installed in S3 phase. + + @return If S3 PEI memory information is got successfully. + +**/ +EFI_STATUS +EFIAPI +GetS3MemoryInfo ( + OUT UINT64 *S3PeiMemSize, + OUT EFI_PHYSICAL_ADDRESS *S3PeiMemBase + ); + +/** + Get stack information according to boot mode. + + @note If BootMode is BOOT_ON_S3_RESUME or BOOT_ON_FLASH_UPDATE, + this stack should be in some reserved memory space. + + @note If FspInitDone is TRUE, memory is ready, but no PeiServices there. + Platform can get some data from SMRAM directly. + @note If FspInitDone is FALSE, memory is NOT ready, but PeiServices are available to use. + Platform can get some data from variable via VariablePpi. + + @param[in] BootMode Current boot mode. + @param[in] FspInitDone If FspInit is called. + @param[out] StackSize Stack size to be used in PEI phase. + @param[out] StackBase Stack base to be used in PEI phase. + + @return If Stack information is got successfully. + +**/ +EFI_STATUS +EFIAPI +GetStackInfo ( + IN UINT32 BootMode, + IN BOOLEAN FspInitDone, + OUT UINT64 *StackSize, + OUT EFI_PHYSICAL_ADDRESS *StackBase + ); + +/** + Perform platform related reset in FSP wrapper. + + @param[in] ResetType The type of reset the platform has to perform. + + @return Will reset the system based on Reset status provided. + +**/ +VOID +EFIAPI +CallFspWrapperResetSystem ( + IN UINT32 ResetType + ); +#endif + diff --git a/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformSecLib.h b/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformSecLib.h new file mode 100644 index 0000000000..034651b203 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/Include/Library/FspPlatformSecLib.h @@ -0,0 +1,71 @@ +/** @file + Provide FSP wrapper platform sec related function. + + Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+ + 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. + +**/ + +#ifndef __FSP_PLATFORM_SEC_LIB_H__ +#define __FSP_PLATFORM_SEC_LIB_H__ + +/** + A developer supplied function to perform platform specific operations. + + It's a developer supplied function to perform any operations appropriate to a + given platform. It's invoked just before passing control to PEI core by SEC + core. Platform developer may modify the SecCoreData passed to PEI Core. + It returns a platform specific PPI list that platform wishes to pass to PEI core. + The Generic SEC core module will merge this list to join the final list passed to + PEI core. + + @param[in, out] SecCoreData The same parameter as passing to PEI core. It + could be overridden by this function. + + @return The platform specific PPI list to be passed to PEI core or + NULL if there is no need of such platform specific PPI list. + +**/ +EFI_PEI_PPI_DESCRIPTOR * +EFIAPI +SecPlatformMain ( + IN OUT EFI_SEC_PEI_HAND_OFF *SecCoreData + ); + +/** + Call PEI core entry point with new temporary RAM. + + @param[in] FspHobList HobList produced by FSP. + @param[in] StartOfRange Start of temporary RAM. + @param[in] EndOfRange End of temporary RAM. + +**/ +VOID +EFIAPI +CallPeiCoreEntryPoint ( + IN VOID *FspHobList, + IN VOID *StartOfRange, + IN VOID *EndOfRange + ); + +/** + Save SEC context before call FspInit. + + @param[in] PeiServices Pointer to PEI Services Table. + +**/ +VOID +EFIAPI +SaveSecContext ( + IN CONST EFI_PEI_SERVICES **PeiServices + ); + +#endif + -- cgit v1.2.3