/** @file
|
Implementation of Fsp SI Policy Initialization.
|
|
|
Copyright (c) 2019 - 2020 Intel Corporation. All rights reserved.<BR>
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
**/
|
|
#include <PeiFspPolicyInitLib.h>
|
#include <Ppi/SiPolicy.h>
|
#include <Library/ConfigBlockLib.h>
|
|
/**
|
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;
|
}
|
|
|
|