summaryrefslogtreecommitdiffstats
path: root/IntelFsp2Pkg/Include/FspEas
diff options
context:
space:
mode:
authorChasel Chiu <chasel.chiu@intel.com>2020-06-04 14:43:40 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-06-23 04:22:49 +0000
commit89f569ae8e759dc867009f396a516b7af5a3c0e7 (patch)
treed28b5b1587b5c8b4f7a0f2c9c09f545cb3a3c2a6 /IntelFsp2Pkg/Include/FspEas
parent00b8bf7eda00fb6f0197d3968b6078cfdb4870fa (diff)
downloadedk2-89f569ae8e759dc867009f396a516b7af5a3c0e7.tar.gz
edk2-89f569ae8e759dc867009f396a516b7af5a3c0e7.tar.bz2
edk2-89f569ae8e759dc867009f396a516b7af5a3c0e7.zip
IntelFsp2Pkg: Add FSP*_ARCH_UPD.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2781 Introduce FSPT_ARCH_UPD and FSPS_ARCH_UPD to support debug events and multi-phase silicon initialization. For backward compatibility the original structures are kept and new ARCH_UPD structures will be included only when UPD header revision equal or greater than 2. GenCfgOpt script also updated to prevent from generating duplicate FSPT_ARCH_UPD and FSPS_ARCH_UPD typedef structures. Cc: Maurice Ma <maurice.ma@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Star Zeng <star.zeng@intel.com> Signed-off-by: Chasel Chiu <chasel.chiu@intel.com> Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
Diffstat (limited to 'IntelFsp2Pkg/Include/FspEas')
-rw-r--r--IntelFsp2Pkg/Include/FspEas/FspApi.h81
1 files changed, 80 insertions, 1 deletions
diff --git a/IntelFsp2Pkg/Include/FspEas/FspApi.h b/IntelFsp2Pkg/Include/FspEas/FspApi.h
index ed40f9538c..5e488c452a 100644
--- a/IntelFsp2Pkg/Include/FspEas/FspApi.h
+++ b/IntelFsp2Pkg/Include/FspEas/FspApi.h
@@ -99,13 +99,36 @@ typedef struct {
///
UINT64 Signature;
///
- /// Revision of the Data structure. For FSP v2.0 value is 1.
+ /// Revision of the Data structure.
+ /// For FSP spec 2.0/2.1 value is 1.
+ /// For FSP spec 2.2 value is 2.
///
UINT8 Revision;
UINT8 Reserved[23];
} FSP_UPD_HEADER;
///
+/// FSPT_ARCH_UPD Configuration.
+///
+typedef struct {
+ ///
+ /// Revision Revision of the structure is 1 for this version of the specification.
+ ///
+ UINT8 Revision;
+ UINT8 Reserved[3];
+ ///
+ /// Length Length of the structure in bytes. The current value for this field is 32.
+ ///
+ UINT32 Length;
+ ///
+ /// FspDebugHandler Optional debug handler for the bootloader to receive debug messages
+ /// occurring during FSP execution.
+ ///
+ FSP_DEBUG_HANDLER FspDebugHandler;
+ UINT8 Reserved1[20];
+} FSPT_ARCH_UPD;
+
+///
/// FSPM_ARCH_UPD Configuration.
///
typedef struct {
@@ -146,6 +169,32 @@ typedef struct {
UINT8 Reserved1[4];
} FSPM_ARCH_UPD;
+typedef struct {
+ ///
+ /// Revision Revision of the structure is 1 for this version of the specification.
+ ///
+ UINT8 Revision;
+ UINT8 Reserved[3];
+ ///
+ /// Length Length of the structure in bytes. The current value for this field is 32.
+ ///
+ UINT32 Length;
+ ///
+ /// FspEventHandler Optional event handler for the bootloader to be informed of events
+ /// occurring during FSP execution.
+ ///
+ FSP_EVENT_HANDLER FspEventHandler;
+ ///
+ /// A FSP binary may optionally implement multi-phase silicon initialization,
+ /// This is only supported if the FspMultiPhaseSiInitEntryOffset field in FSP_INFO_HEADER
+ /// is non-zero.
+ /// To enable multi-phase silicon initialization, the bootloader must set
+ /// EnableMultiPhaseSiliconInit to a non-zero value.
+ ///
+ UINT8 EnableMultiPhaseSiliconInit;
+ UINT8 Reserved1[19];
+} FSPS_ARCH_UPD;
+
///
/// FSPT_UPD_COMMON Configuration.
///
@@ -157,6 +206,21 @@ typedef struct {
} FSPT_UPD_COMMON;
///
+/// FSPT_UPD_COMMON Configuration for FSP spec. 2.2 and above.
+///
+typedef struct {
+ ///
+ /// FSP_UPD_HEADER Configuration.
+ ///
+ FSP_UPD_HEADER FspUpdHeader;
+
+ ///
+ /// FSPT_ARCH_UPD Configuration.
+ ///
+ FSPT_ARCH_UPD FsptArchUpd;
+} FSPT_UPD_COMMON_FSP22;
+
+///
/// FSPM_UPD_COMMON Configuration.
///
typedef struct {
@@ -181,6 +245,21 @@ typedef struct {
} FSPS_UPD_COMMON;
///
+/// FSPS_UPD_COMMON Configuration for FSP spec. 2.2 and above.
+///
+typedef struct {
+ ///
+ /// FSP_UPD_HEADER Configuration.
+ ///
+ FSP_UPD_HEADER FspUpdHeader;
+
+ ///
+ /// FSPS_ARCH_UPD Configuration.
+ ///
+ FSPS_ARCH_UPD FspsArchUpd;
+} FSPS_UPD_COMMON_FSP22;
+
+///
/// Enumeration of FSP_INIT_PHASE for NOTIFY_PHASE.
///
typedef enum {