summaryrefslogtreecommitdiff
path: root/IntelFspPkg/Include
diff options
context:
space:
mode:
authorYao, Jiewen <Jiewen.Yao@intel.com>2015-04-23 08:52:21 +0000
committerjyao1 <jyao1@Edk2>2015-04-23 08:52:21 +0000
commit9da591867c0bad1abbe17a321dc5b16d95226c6a (patch)
treed73d5eefb589fec2196b92e1cb741317300f16e0 /IntelFspPkg/Include
parent3b7f0a488be0ca7a2a8e4c352b0e10496bee9530 (diff)
downloadedk2-platforms-9da591867c0bad1abbe17a321dc5b16d95226c6a.tar.xz
Update IntelFspPkg to support FSP1.1
-- Add BootLoaderTolumSize support -- Extend FspApiCallingCheck with ApiParam for BootLoaderTolumSize -- Rename all Bootloader to BootLoader as official name -- Rename Ucode to Microcode -- Remove FspSelfCheck API, because it is merged into SecPlatformInit -- Add GetFspVpdDataPointer() in FspCommonLib.h -- Document FspSecPlatformLib.h -- Reorg FSP_PLAT_DATA data structure to let it match FSP spec. -- Move helper function in FspSecCore to reduce platform enabling effort -- Fix LibraryClasses declaration in DEC file. -- Enhance PatchFv to check if it is valid FSP bin. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" <Jiewen.Yao@intel.com> Reviewed-by: "Ma, Maurice" <maurice.ma@intel.com> Reviewed-by: "Rangarajan, Ravi P" <ravi.p.rangarajan@intel.com> Reviewed-by: "Mudusuru, Giri P" <giri.p.mudusuru@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17196 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'IntelFspPkg/Include')
-rw-r--r--IntelFspPkg/Include/FspApi.h13
-rw-r--r--IntelFspPkg/Include/FspInfoHeader.h8
-rw-r--r--IntelFspPkg/Include/Guid/GuidHobFspEas.h1
-rw-r--r--IntelFspPkg/Include/Library/FspCommonLib.h15
-rw-r--r--IntelFspPkg/Include/Library/FspPlatformLib.h8
-rw-r--r--IntelFspPkg/Include/Library/FspSecPlatformLib.h74
-rw-r--r--IntelFspPkg/Include/Private/FspGlobalData.h4
7 files changed, 109 insertions, 14 deletions
diff --git a/IntelFspPkg/Include/FspApi.h b/IntelFspPkg/Include/FspApi.h
index b3616d69e8..8fd73fb44e 100644
--- a/IntelFspPkg/Include/FspApi.h
+++ b/IntelFspPkg/Include/FspApi.h
@@ -83,10 +83,19 @@ typedef struct {
/// User platform configuraiton data region pointer.
///
VOID *UpdDataRgnPtr;
+ //
+ // Below field is added in FSP EAS v1.1
+ //
+ ///
+ /// The size of memory to be reserved below the top of low usable memory (TOLUM)
+ /// for BootLoader usage. This is optional and value can be zero. If non-zero, the
+ /// size must be a multiple of 4KB.
+ ///
+ UINT32 BootLoaderTolumSize;
///
/// Reserved
///
- UINT32 Reserved[7];
+ UINT32 Reserved[6];
} FSP_INIT_RT_COMMON_BUFFER;
typedef enum {
@@ -212,7 +221,7 @@ EFI_STATUS
and defined for each FSP binary. This will be documented in Integration guide with
each FSP release.
After FspMemInit completes its execution, it passes the pointer to the HobList and
- returns to the boot loader from where it was called. Bootloader is responsible to
+ returns to the boot loader from where it was called. BootLoader is responsible to
migrate it's stack and data to Memory.
FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to
complete the silicon initialization and provides bootloader an opportunity to get
diff --git a/IntelFspPkg/Include/FspInfoHeader.h b/IntelFspPkg/Include/FspInfoHeader.h
index 3033659ea0..9513acdb76 100644
--- a/IntelFspPkg/Include/FspInfoHeader.h
+++ b/IntelFspPkg/Include/FspInfoHeader.h
@@ -64,7 +64,7 @@ typedef struct {
///
UINT32 ImageSize;
///
- /// Byte 0x18: FSP binary preferred base address
+ /// Byte 0x1C: FSP binary preferred base address
///
UINT32 ImageBase;
@@ -78,7 +78,7 @@ typedef struct {
///
UINT32 CfgRegionOffset;
///
- /// Byte 0x24: Size of the FSP configuration region
+ /// Byte 0x28: Size of the FSP configuration region
///
UINT32 CfgRegionSize;
///
@@ -103,7 +103,7 @@ typedef struct {
UINT32 NotifyPhaseEntryOffset;
///
- /// Below field is added in FSP 1.1
+ /// Below fields are added in FSP Revision 2
///
///
@@ -122,7 +122,7 @@ typedef struct {
} FSP_INFO_HEADER;
///
-/// Below structure is added in FSP 1.1
+/// Below structure is added in FSP version 2
///
typedef struct {
///
diff --git a/IntelFspPkg/Include/Guid/GuidHobFspEas.h b/IntelFspPkg/Include/Guid/GuidHobFspEas.h
index 45a6e25f0a..4e723af2f4 100644
--- a/IntelFspPkg/Include/Guid/GuidHobFspEas.h
+++ b/IntelFspPkg/Include/Guid/GuidHobFspEas.h
@@ -18,6 +18,7 @@
extern EFI_GUID gFspBootLoaderTemporaryMemoryGuid;
+extern EFI_GUID gFspBootLoaderTolumHobGuid; // FSP EAS v1.1
extern EFI_GUID gFspReservedMemoryResourceHobGuid;
extern EFI_GUID gFspNonVolatileStorageHobGuid;
diff --git a/IntelFspPkg/Include/Library/FspCommonLib.h b/IntelFspPkg/Include/Library/FspCommonLib.h
index e7d7b0271a..22db27708d 100644
--- a/IntelFspPkg/Include/Library/FspCommonLib.h
+++ b/IntelFspPkg/Include/Library/FspCommonLib.h
@@ -76,7 +76,7 @@ SetFspContinuationFuncParameter (
);
/**
- This function changes the Bootloader return address in stack.
+ This function changes the BootLoader return address in stack.
@param[in] ReturnAddress Address to return.
@@ -88,7 +88,7 @@ SetFspApiReturnAddress (
);
/**
- This function set the API status code returned to the bootloader.
+ This function set the API status code returned to the BootLoader.
@param[in] ReturnStatus Status code to return.
@@ -182,6 +182,17 @@ GetFspInfoHeader (
);
/**
+ This function gets the VPD data pointer.
+
+ @return VpdDataRgnPtr VPD data pointer.
+**/
+VOID *
+EFIAPI
+GetFspVpdDataPointer (
+ VOID
+ );
+
+/**
This function gets FSP API calling mode.
@retval API calling mode
diff --git a/IntelFspPkg/Include/Library/FspPlatformLib.h b/IntelFspPkg/Include/Library/FspPlatformLib.h
index 51d296835e..23460983ec 100644
--- a/IntelFspPkg/Include/Library/FspPlatformLib.h
+++ b/IntelFspPkg/Include/Library/FspPlatformLib.h
@@ -28,7 +28,7 @@ FspGetSystemMemorySize (
);
/**
- Migrate bootloader data before destroying CAR.
+ Migrate BootLoader data before destroying CAR.
**/
VOID
@@ -49,7 +49,7 @@ FspSetNewStackFrame (
/**
This function transfer control to the ContinuationFunc passed in by the
- bootloader.
+ BootLoader.
**/
VOID
@@ -59,8 +59,8 @@ FspInitDone (
);
/**
- This function handle NotifyPhase API call from the bootloader.
- It gives control back to the bootloader after it is handled. If the
+ This function handle NotifyPhase API call from the BootLoader.
+ It gives control back to the BootLoader after it is handled. If the
Notification code is a ReadyToBoot event, this function will return
and FSP continues the remaining execution until it reaches the DxeIpl.
diff --git a/IntelFspPkg/Include/Library/FspSecPlatformLib.h b/IntelFspPkg/Include/Library/FspSecPlatformLib.h
new file mode 100644
index 0000000000..c6ed43001d
--- /dev/null
+++ b/IntelFspPkg/Include/Library/FspSecPlatformLib.h
@@ -0,0 +1,74 @@
+/** @file
+
+ Copyright (c) 2015, 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_SEC_PLATFORM_LIB_H_
+#define _FSP_SEC_PLATFORM_LIB_H_
+
+/**
+ This function performs platform level initialization.
+
+ This function must be in ASM file, because stack is not established yet.
+ This function is optional. If a library instance does not provide this function, the default empty one will be used.
+
+ The callee should not use XMM6/XMM7.
+ The return address is saved in MM7.
+
+ @retval in saved in EAX - 0 means platform initialization success.
+ other means platform initialization fail.
+**/
+UINT32
+EFIAPI
+SecPlatformInit (
+ VOID
+ );
+
+/**
+ This function loads Microcode.
+
+ This function must be in ASM file, because stack is not established yet.
+ This function is optional. If a library instance does not provide this function, the default one will be used.
+
+ The callee should not use XMM6/XMM7.
+ The return address is saved in MM7.
+
+ @param TempRamInitParamPtr A data structure to hold microcode parameter. It is saved in ESP.
+
+ @retval in saved in EAX - 0 means Microcode is loaded successfully.
+ other means Microcode is not loaded successfully.
+**/
+UINT32
+EFIAPI
+LoadMicrocode (
+ IN FSP_TEMP_RAM_INIT_PARAMS *TempRamInitParamPtr
+ );
+
+/**
+ This function initializes the CAR.
+
+ This function must be in ASM file, because stack is not established yet.
+
+ The callee should not use XMM6/XMM7.
+ The return address is saved in MM7.
+
+ @param TempRamInitParamPtr A data structure to hold microcode parameter. It is saved in ESP.
+
+ @retval in saved in EAX - 0 means CAR initialization success.
+ other means CAR initialization fail.
+**/
+UINT32
+EFIAPI
+SecCarInit (
+ IN FSP_TEMP_RAM_INIT_PARAMS *TempRamInitParamPtr
+ );
+
+#endif
diff --git a/IntelFspPkg/Include/Private/FspGlobalData.h b/IntelFspPkg/Include/Private/FspGlobalData.h
index 436891af44..f50255fa7f 100644
--- a/IntelFspPkg/Include/Private/FspGlobalData.h
+++ b/IntelFspPkg/Include/Private/FspGlobalData.h
@@ -20,10 +20,10 @@
typedef struct {
VOID *DataPtr;
+ UINT32 MicrocodeRegionBase;
+ UINT32 MicrocodeRegionSize;
UINT32 CodeRegionBase;
UINT32 CodeRegionSize;
- UINT32 MicorcodeRegionBase;
- UINT32 MicorcodeRegionSize;
} FSP_PLAT_DATA;
#define FSP_GLOBAL_DATA_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'D')