Add IntelFspWrapper to support boot EDKII on FSP bin.

Contributed-under: TianoCore Contribution Agreement 1.0

Signed off by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed by: Ravi Rangarajan <ravi.p.rangarajan@intel.com>
Reviewed by: Maurice Ma <maurice.ma@intel.com>
Reviewed by: Giri Mudusuru <giri.p.mudusuru@intel.com>
Reviewed by: Liming Gao <liming.gao@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15676 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jyao1
2014-07-24 06:52:43 +00:00
committed by jyao1
parent 34717ef034
commit a33a2f6221
61 changed files with 6577 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
/** @file
Provide FSP API related function.
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
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 <FspApi.h>
#include <FspInfoHeader.h>
/**
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

View File

@@ -0,0 +1,31 @@
/** @file
Provide FSP hob process related function.
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
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

View File

@@ -0,0 +1,116 @@
/** @file
Provide FSP platform information related function.
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
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

View File

@@ -0,0 +1,67 @@
/** @file
Provide FSP wrapper platform sec related function.
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
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