3 Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
4 SPDX-License-Identifier: BSD-2-Clause-Patent
12 This function check the FSP API calling condition.
14 @param[in] ApiIdx Internal index of the FSP API.
15 @param[in] ApiParam Parameter of the FSP API.
26 FSP_GLOBAL_DATA
*FspData
;
29 FspData
= GetFspGlobalDataPointer ();
31 if (ApiIdx
== NotifyPhaseApiIndex
) {
35 if ((FspData
== NULL
) || ((UINT32
)FspData
== 0xFFFFFFFF)) {
36 Status
= EFI_UNSUPPORTED
;
38 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
39 Status
= EFI_UNSUPPORTED
;
42 } else if (ApiIdx
== FspMemoryInitApiIndex
) {
44 // FspMemoryInit check
46 if ((UINT32
)FspData
!= 0xFFFFFFFF) {
47 Status
= EFI_UNSUPPORTED
;
48 } else if (EFI_ERROR (FspUpdSignatureCheck (ApiIdx
, ApiParam
))) {
49 Status
= EFI_INVALID_PARAMETER
;
51 } else if (ApiIdx
== TempRamExitApiIndex
) {
55 if ((FspData
== NULL
) || ((UINT32
)FspData
== 0xFFFFFFFF)) {
56 Status
= EFI_UNSUPPORTED
;
58 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
59 Status
= EFI_UNSUPPORTED
;
62 } else if (ApiIdx
== FspSiliconInitApiIndex
) {
64 // FspSiliconInit check
66 if ((FspData
== NULL
) || ((UINT32
)FspData
== 0xFFFFFFFF)) {
67 Status
= EFI_UNSUPPORTED
;
69 if (FspData
->Signature
!= FSP_GLOBAL_DATA_SIGNATURE
) {
70 Status
= EFI_UNSUPPORTED
;
71 } else if (EFI_ERROR (FspUpdSignatureCheck (ApiIdx
, ApiParam
))) {
72 Status
= EFI_INVALID_PARAMETER
;
76 Status
= EFI_UNSUPPORTED
;
79 if (!EFI_ERROR (Status
)) {
80 if ((ApiIdx
!= FspMemoryInitApiIndex
)) {
82 // For FspMemoryInit, the global data is not valid yet
83 // The API index will be updated by SecCore after the global data
86 SetFspApiCallingIndex (ApiIdx
);