summaryrefslogtreecommitdiffstats
path: root/IntelFspWrapperPkg/Include
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFspWrapperPkg/Include')
-rw-r--r--IntelFspWrapperPkg/Include/Library/FspApiLib.h64
-rw-r--r--IntelFspWrapperPkg/Include/Library/FspHobProcessLib.h31
-rw-r--r--IntelFspWrapperPkg/Include/Library/FspPlatformInfoLib.h116
-rw-r--r--IntelFspWrapperPkg/Include/Library/FspPlatformSecLib.h67
-rw-r--r--IntelFspWrapperPkg/Include/Ppi/FspInitDone.h43
-rw-r--r--IntelFspWrapperPkg/Include/Ppi/TopOfTemporaryRam.h20
6 files changed, 341 insertions, 0 deletions
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.<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
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.<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
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.<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
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.<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
diff --git a/IntelFspWrapperPkg/Include/Ppi/FspInitDone.h b/IntelFspWrapperPkg/Include/Ppi/FspInitDone.h
new file mode 100644
index 0000000000..6acbf2d18a
--- /dev/null
+++ b/IntelFspWrapperPkg/Include/Ppi/FspInitDone.h
@@ -0,0 +1,43 @@
+/** @file
+ Provides the services to return FSP hob list.
+
+ 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_INIT_DONE_H_
+#define _FSP_INIT_DONE_H_
+
+typedef struct _FSP_INIT_DONE_PPI FSP_INIT_DONE_PPI;
+
+/**
+ Return Hob list produced by FSP.
+
+ @param[in] PeiServices The pointer to the PEI Services Table.
+ @param[in] This The pointer to this instance of this PPI.
+ @param[out] FspHobList The pointer to Hob list produced by FSP.
+
+ @return EFI_SUCCESS FReturn Hob list produced by FSP successfully.
+**/
+typedef
+EFI_STATUS
+(EFIAPI *FSP_INIT_DONE_GET_FSP_HOB_LIST)(
+ IN CONST EFI_PEI_SERVICES **PeiServices,
+ IN FSP_INIT_DONE_PPI *This,
+ OUT VOID **FspHobList
+ );
+
+struct _FSP_INIT_DONE_PPI {
+ FSP_INIT_DONE_GET_FSP_HOB_LIST GetFspHobList;
+};
+
+extern EFI_GUID gFspInitDonePpiGuid;
+
+#endif
diff --git a/IntelFspWrapperPkg/Include/Ppi/TopOfTemporaryRam.h b/IntelFspWrapperPkg/Include/Ppi/TopOfTemporaryRam.h
new file mode 100644
index 0000000000..c25c4fa802
--- /dev/null
+++ b/IntelFspWrapperPkg/Include/Ppi/TopOfTemporaryRam.h
@@ -0,0 +1,20 @@
+/** @file
+ Provides the pointer to top of temporary ram.
+
+ 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 _TOP_OF_TEMPORARY_RAM_H_
+#define _TOP_OF_TEMPORARY_RAM_H_
+
+extern EFI_GUID gTopOfTemporaryRamPpiGuid;
+
+#endif