From a33a2f62218e6e49a25d63474b7fe423d8ee4b71 Mon Sep 17 00:00:00 2001 From: jyao1 Date: Thu, 24 Jul 2014 06:52:43 +0000 Subject: Add IntelFspWrapper to support boot EDKII on FSP bin. Contributed-under: TianoCore Contribution Agreement 1.0 Signed off by: Jiewen Yao Reviewed by: Ravi Rangarajan Reviewed by: Maurice Ma Reviewed by: Giri Mudusuru Reviewed by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15676 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFspWrapperPkg/Include/Library/FspApiLib.h | 64 ++++++++++++ .../Include/Library/FspHobProcessLib.h | 31 ++++++ .../Include/Library/FspPlatformInfoLib.h | 116 +++++++++++++++++++++ .../Include/Library/FspPlatformSecLib.h | 67 ++++++++++++ 4 files changed, 278 insertions(+) create mode 100644 IntelFspWrapperPkg/Include/Library/FspApiLib.h create mode 100644 IntelFspWrapperPkg/Include/Library/FspHobProcessLib.h create mode 100644 IntelFspWrapperPkg/Include/Library/FspPlatformInfoLib.h create mode 100644 IntelFspWrapperPkg/Include/Library/FspPlatformSecLib.h (limited to 'IntelFspWrapperPkg/Include/Library') diff --git a/IntelFspWrapperPkg/Include/Library/FspApiLib.h b/IntelFspWrapperPkg/Include/Library/FspApiLib.h new file mode 100644 index 0000000000..fc0104d28c --- /dev/null +++ b/IntelFspWrapperPkg/Include/Library/FspApiLib.h @@ -0,0 +1,64 @@ +/** @file + Provide FSP API related function. + + Copyright (c) 2014, 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_API_LIB_H__ +#define __FSP_API_LIB_H__ + +#include +#include + +/** + Find FSP header pointer. + + @param[in] FlashFvFspBase Flash address of FSP FV. + + @return FSP header pointer. +**/ +FSP_INFO_HEADER * +EFIAPI +FspFindFspHeader ( + IN EFI_PHYSICAL_ADDRESS FlashFvFspBase + ); + +/** + Call FSP API - FspInit. + + @param[in] FspHeader FSP header pointer. + @param[in] FspInitParams Address pointer to the FSP_INIT_PARAMS structure. + + @return FSP status returned by FspInit API. +**/ +FSP_STATUS +EFIAPI +CallFspInit ( + IN FSP_INFO_HEADER *FspHeader, + IN FSP_INIT_PARAMS *FspInitParams + ); + +/** + Call FSP API - FspNotifyPhase. + + @param[in] FspHeader FSP header pointer. + @param[in] NotifyPhaseParams Address pointer to the NOTIFY_PHASE_PARAMS structure. + + @return FSP status returned by FspNotifyPhase API. +**/ +FSP_STATUS +EFIAPI +CallFspNotifyPhase ( + IN FSP_INFO_HEADER *FspHeader, + IN NOTIFY_PHASE_PARAMS *NotifyPhaseParams + ); + +#endif diff --git a/IntelFspWrapperPkg/Include/Library/FspHobProcessLib.h b/IntelFspWrapperPkg/Include/Library/FspHobProcessLib.h new file mode 100644 index 0000000000..32ce987b92 --- /dev/null +++ b/IntelFspWrapperPkg/Include/Library/FspHobProcessLib.h @@ -0,0 +1,31 @@ +/** @file + Provide FSP hob process related function. + + Copyright (c) 2014, 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 + ); + +#endif diff --git a/IntelFspWrapperPkg/Include/Library/FspPlatformInfoLib.h b/IntelFspWrapperPkg/Include/Library/FspPlatformInfoLib.h new file mode 100644 index 0000000000..ebbe9a7eaf --- /dev/null +++ b/IntelFspWrapperPkg/Include/Library/FspPlatformInfoLib.h @@ -0,0 +1,116 @@ +/** @file + Provide FSP platform information related function. + + Copyright (c) 2014, 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 + ); + +/** + Get UPD region size. + + @note At this point, memory is NOT ready, PeiServices are available to use. + + @return UPD region size. +**/ +UINT32 +EFIAPI +GetUpdRegionSize ( + VOID + ); + +/** + This function overrides the default configurations in the UPD data region. + + @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 OUT VOID *FspUpdRgnPtr + ); + +/** + 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 + ); + +#endif diff --git a/IntelFspWrapperPkg/Include/Library/FspPlatformSecLib.h b/IntelFspWrapperPkg/Include/Library/FspPlatformSecLib.h new file mode 100644 index 0000000000..58447a6e8f --- /dev/null +++ b/IntelFspWrapperPkg/Include/Library/FspPlatformSecLib.h @@ -0,0 +1,67 @@ +/** @file + Provide FSP wrapper platform sec related function. + + Copyright (c) 2014, 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