20FspMultiPhaseSwitchStack (
31FspVariableRequestSwitchStack (
38 if (((
UINTN)FspData == 0) || ((
UINTN)FspData == 0xFFFFFFFF)) {
39 return EFI_UNSUPPORTED;
42 FspData->VariableRequestParameterPtr = (VOID *)FspVariableRequestParams;
71 UINT32 NumberOfPhasesSupported;
75 if (((
UINTN)FspData == 0) || ((
UINTN)FspData == 0xFFFFFFFF)) {
84 if ((FspDataValid ==
TRUE) && (FspData->NumberOfPhases == 0)) {
85 FspData->NumberOfPhases =
PcdGet32 (PcdMultiPhaseNumberOfPhases);
86 FspData->PhasesExecuted = 0;
91 FspData->NumberOfPhases = NumberOfPhasesSupported;
97 if (FspDataValid ==
FALSE) {
98 return EFI_DEVICE_ERROR;
100 switch (FspMultiPhaseParams->MultiPhaseAction) {
101 case EnumMultiPhaseGetNumberOfPhases:
102 if ((FspMultiPhaseParams->MultiPhaseParamPtr ==
NULL) || (FspMultiPhaseParams->PhaseIndex != 0)) {
103 return EFI_INVALID_PARAMETER;
107 FspMultiPhaseGetNumber->NumberOfPhases = FspData->NumberOfPhases;
108 FspMultiPhaseGetNumber->PhasesExecuted = FspData->PhasesExecuted;
111 case EnumMultiPhaseExecutePhase:
112 if ((FspMultiPhaseParams->PhaseIndex > FspData->PhasesExecuted) && (FspMultiPhaseParams->PhaseIndex <= FspData->NumberOfPhases)) {
113 FspData->PhasesExecuted = FspMultiPhaseParams->PhaseIndex;
116 return EFI_INVALID_PARAMETER;
121 case EnumMultiPhaseGetVariableRequestInfo:
125 FspMultiPhaseParams->MultiPhaseParamPtr = FspData->VariableRequestParameterPtr;
128 case EnumMultiPhaseCompleteVariableRequest:
132 FspData->VariableRequestParameterPtr = FspMultiPhaseParams->MultiPhaseParamPtr;
137 return EFI_UNSUPPORTED;
VOID EFIAPI SetFspApiReturnStatus(IN UINTN ReturnStatus)
FSP_GLOBAL_DATA *EFIAPI GetFspGlobalDataPointer(VOID)
EFI_STATUS EFIAPI FspMultiPhaseMemInitApiHandler(IN UINT32 ApiIdx, IN VOID *ApiParam)
EFI_STATUS EFIAPI FspMultiPhaseSiInitApiHandlerV2(IN UINT32 ApiIdx, IN VOID *ApiParam)
EFI_STATUS EFIAPI FspMultiPhaseWorker(IN UINT32 ApiIdx, IN VOID *ApiParam)
EFI_STATUS EFIAPI Loader2PeiSwitchStack(VOID)
EFI_STATUS EFIAPI Pei2LoaderSwitchStack(VOID)
#define PcdGet32(TokenName)