REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2698 To enhance FSP silicon initialization flexibility an optional Multi-Phase API is introduced and FSP header needs update for new API offset. Also new SecCore module created for FspMultiPhaseSiInit API New ARCH_UPD introduced for enhancing FSP debug message flexibility now bootloader can pass its own debug handler function pointer and FSP will call the function to handle debug message. To support calling bootloader functions, a FspGlobalData field added to indicate if FSP needs to switch stack when FSP running on separate stack from bootloader. 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>
71 lines
1.9 KiB
C
71 lines
1.9 KiB
C
/** @file
|
|
|
|
Copyright (c) 2014 - 2020, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef _FSP_GLOBAL_DATA_H_
|
|
#define _FSP_GLOBAL_DATA_H_
|
|
|
|
#include <FspEas.h>
|
|
|
|
#define FSP_IN_API_MODE 0
|
|
#define FSP_IN_DISPATCH_MODE 1
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef enum {
|
|
TempRamInitApiIndex,
|
|
FspInitApiIndex,
|
|
NotifyPhaseApiIndex,
|
|
FspMemoryInitApiIndex,
|
|
TempRamExitApiIndex,
|
|
FspSiliconInitApiIndex,
|
|
FspMultiPhaseSiInitApiIndex,
|
|
FspApiIndexMax
|
|
} FSP_API_INDEX;
|
|
|
|
typedef struct {
|
|
VOID *DataPtr;
|
|
UINT32 MicrocodeRegionBase;
|
|
UINT32 MicrocodeRegionSize;
|
|
UINT32 CodeRegionBase;
|
|
UINT32 CodeRegionSize;
|
|
} FSP_PLAT_DATA;
|
|
|
|
#define FSP_GLOBAL_DATA_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'D')
|
|
#define FSP_PERFORMANCE_DATA_SIGNATURE SIGNATURE_32 ('P', 'E', 'R', 'F')
|
|
#define FSP_PERFORMANCE_DATA_TIMER_MASK 0xFFFFFFFFFFFFFF
|
|
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
UINT8 Version;
|
|
UINT8 Reserved1[3];
|
|
UINT32 CoreStack;
|
|
UINT32 StatusCode;
|
|
UINT32 Reserved2[8];
|
|
FSP_PLAT_DATA PlatformData;
|
|
FSP_INFO_HEADER *FspInfoHeader;
|
|
VOID *UpdDataPtr;
|
|
VOID *TempRamInitUpdPtr;
|
|
VOID *MemoryInitUpdPtr;
|
|
VOID *SiliconInitUpdPtr;
|
|
UINT8 ApiIdx;
|
|
UINT8 FspMode; // 0: FSP in API mode; 1: FSP in DISPATCH mode
|
|
UINT8 OnSeparateStack;
|
|
UINT8 Reserved3;
|
|
UINT32 NumberOfPhases;
|
|
UINT32 PhasesExecuted;
|
|
UINT8 Reserved4[20];
|
|
UINT32 PerfSig;
|
|
UINT16 PerfLen;
|
|
UINT16 Reserved5;
|
|
UINT32 PerfIdx;
|
|
UINT64 PerfData[32];
|
|
} FSP_GLOBAL_DATA;
|
|
|
|
#pragma pack()
|
|
|
|
#endif
|