/** @file
Implementation of Fsp SI Policy Initialization.
Copyright (c) 2019 - 2020 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
/**
Performs FSP SI PEI Policy pre mem initialization.
@param[in][out] FspmUpd Pointer to FSP UPD Data.
@retval EFI_SUCCESS FSP UPD Data is updated.
@retval EFI_NOT_FOUND Fail to locate required PPI.
@retval Other FSP UPD Data update process fail.
**/
EFI_STATUS
EFIAPI
PeiFspSiPolicyInitPreMem (
IN OUT FSPM_UPD *FspmUpd
)
{
EFI_STATUS Status;
SI_PREMEM_POLICY_PPI *SiPreMemPolicyPpi;
//
// Locate SiPreMemPolicyPpi
//
SiPreMemPolicyPpi = NULL;
Status = PeiServicesLocatePpi (
&gSiPreMemPolicyPpiGuid,
0,
NULL,
(VOID **) &SiPreMemPolicyPpi
);
if (EFI_ERROR (Status)) {
return EFI_NOT_FOUND;
}
return EFI_SUCCESS;
}
/**
Performs FSP SI PEI Policy initialization.
@param[in][out] FspsUpd Pointer to FSP UPD Data.
@retval EFI_SUCCESS FSP UPD Data is updated.
@retval EFI_NOT_FOUND Fail to locate required PPI.
@retval Other FSP UPD Data update process fail.
**/
EFI_STATUS
EFIAPI
PeiFspSiPolicyInit (
IN OUT FSPS_UPD *FspsUpd
)
{
EFI_STATUS Status;
SI_POLICY_PPI *SiPolicy;
SI_CONFIG *SiConfig;
//
// Locate SiPolicyPpi
//
SiPolicy = NULL;
Status = PeiServicesLocatePpi (
&gSiPolicyPpiGuid,
0,
NULL,
(VOID **) &SiPolicy
);
if (EFI_ERROR (Status)) {
return EFI_NOT_FOUND;
}
Status = GetConfigBlock ((VOID *) SiPolicy, &gSiConfigGuid, (VOID *) &SiConfig);
ASSERT_EFI_ERROR (Status);
//
// Update SiConfig policies
//
FspsUpd->FspsConfig.SiCsmFlag = (UINT8)SiConfig->CsmFlag;
FspsUpd->FspsConfig.SiSsidTablePtr = (UINT32)(UINTN)SiConfig->SsidTablePtr;
FspsUpd->FspsConfig.SiNumberOfSsidTableEntry = (UINT16)SiConfig->NumberOfSsidTableEntry;
FspsUpd->FspsConfig.TraceHubMemBase = SiConfig->TraceHubMemBase;
return EFI_SUCCESS;
}