3 Copyright (c) 2016 - 2022, Intel Corporation. All rights reserved.<BR>
4 SPDX-License-Identifier: BSD-2-Clause-Patent
11 This function check the FSP API calling condition.
13 @param[in] ApiIdx Internal index of the FSP API.
14 @param[in] ApiParam Parameter of the FSP API.
25 FSP_GLOBAL_DATA
*FspData
;
28 FspData
= GetFspGlobalDataPointer ();
30 if (ApiIdx
== NotifyPhaseApiIndex
) {
34 if ((FspData
== NULL
) || ((UINTN
)FspData
== MAX_ADDRESS
) || ((UINTN
)FspData
== MAX_UINT32
)) {
35 Status
= EFI_UNSUPPORTED
;
37 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
38 Status
= EFI_UNSUPPORTED
;
41 } else if (ApiIdx
== FspMemoryInitApiIndex
) {
43 // FspMemoryInit check
45 if (((UINTN
)FspData
!= MAX_ADDRESS
) && ((UINTN
)FspData
!= MAX_UINT32
)) {
46 Status
= EFI_UNSUPPORTED
;
47 } else if (EFI_ERROR (FspUpdSignatureCheck (ApiIdx
, ApiParam
))) {
48 Status
= EFI_INVALID_PARAMETER
;
50 } else if (ApiIdx
== TempRamExitApiIndex
) {
54 if ((FspData
== NULL
) || ((UINTN
)FspData
== MAX_ADDRESS
) || ((UINTN
)FspData
== MAX_UINT32
)) {
55 Status
= EFI_UNSUPPORTED
;
57 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
58 Status
= EFI_UNSUPPORTED
;
61 } else if ((ApiIdx
== FspSiliconInitApiIndex
) || (ApiIdx
== FspMultiPhaseSiInitApiIndex
)) {
63 // FspSiliconInit check
65 if ((FspData
== NULL
) || ((UINTN
)FspData
== MAX_ADDRESS
) || ((UINTN
)FspData
== MAX_UINT32
)) {
66 Status
= EFI_UNSUPPORTED
;
68 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
69 Status
= EFI_UNSUPPORTED
;
70 } else if (EFI_ERROR (FspUpdSignatureCheck (FspSiliconInitApiIndex
, ApiParam
))) {
71 Status
= EFI_INVALID_PARAMETER
;
74 } else if (ApiIdx
== FspSmmInitApiIndex
) {
76 // FspSmmInitApiIndex check
78 if ((FspData
== NULL
) || ((UINTN
)FspData
== MAX_ADDRESS
) || ((UINTN
)FspData
== MAX_UINT32
)) {
79 Status
= EFI_UNSUPPORTED
;
81 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
82 Status
= EFI_UNSUPPORTED
;
83 } else if (EFI_ERROR (FspUpdSignatureCheck (FspSmmInitApiIndex
, ApiParam
))) {
84 Status
= EFI_INVALID_PARAMETER
;
88 Status
= EFI_UNSUPPORTED
;
91 if (!EFI_ERROR (Status
)) {
92 if ((ApiIdx
!= FspMemoryInitApiIndex
)) {
94 // For FspMemoryInit, the global data is not valid yet
95 // The API index will be updated by SecCore after the global data
98 SetFspApiCallingIndex (ApiIdx
);