/** @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; }