PeiFspSiPolicyInitLib.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /** @file
  2. Implementation of Fsp SI Policy Initialization.
  3. Copyright (c) 2019 - 2020 Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <PeiFspPolicyInitLib.h>
  7. #include <Ppi/SiPolicy.h>
  8. #include <Library/ConfigBlockLib.h>
  9. /**
  10. Performs FSP SI PEI Policy pre mem initialization.
  11. @param[in][out] FspmUpd Pointer to FSP UPD Data.
  12. @retval EFI_SUCCESS FSP UPD Data is updated.
  13. @retval EFI_NOT_FOUND Fail to locate required PPI.
  14. @retval Other FSP UPD Data update process fail.
  15. **/
  16. EFI_STATUS
  17. EFIAPI
  18. PeiFspSiPolicyInitPreMem (
  19. IN OUT FSPM_UPD *FspmUpd
  20. )
  21. {
  22. EFI_STATUS Status;
  23. SI_PREMEM_POLICY_PPI *SiPreMemPolicyPpi;
  24. //
  25. // Locate SiPreMemPolicyPpi
  26. //
  27. SiPreMemPolicyPpi = NULL;
  28. Status = PeiServicesLocatePpi (
  29. &gSiPreMemPolicyPpiGuid,
  30. 0,
  31. NULL,
  32. (VOID **) &SiPreMemPolicyPpi
  33. );
  34. if (EFI_ERROR (Status)) {
  35. return EFI_NOT_FOUND;
  36. }
  37. return EFI_SUCCESS;
  38. }
  39. /**
  40. Performs FSP SI PEI Policy initialization.
  41. @param[in][out] FspsUpd Pointer to FSP UPD Data.
  42. @retval EFI_SUCCESS FSP UPD Data is updated.
  43. @retval EFI_NOT_FOUND Fail to locate required PPI.
  44. @retval Other FSP UPD Data update process fail.
  45. **/
  46. EFI_STATUS
  47. EFIAPI
  48. PeiFspSiPolicyInit (
  49. IN OUT FSPS_UPD *FspsUpd
  50. )
  51. {
  52. EFI_STATUS Status;
  53. SI_POLICY_PPI *SiPolicy;
  54. SI_CONFIG *SiConfig;
  55. //
  56. // Locate SiPolicyPpi
  57. //
  58. SiPolicy = NULL;
  59. Status = PeiServicesLocatePpi (
  60. &gSiPolicyPpiGuid,
  61. 0,
  62. NULL,
  63. (VOID **) &SiPolicy
  64. );
  65. if (EFI_ERROR (Status)) {
  66. return EFI_NOT_FOUND;
  67. }
  68. Status = GetConfigBlock ((VOID *) SiPolicy, &gSiConfigGuid, (VOID *) &SiConfig);
  69. ASSERT_EFI_ERROR (Status);
  70. //
  71. // Update SiConfig policies
  72. //
  73. FspsUpd->FspsConfig.SiCsmFlag = (UINT8)SiConfig->CsmFlag;
  74. FspsUpd->FspsConfig.SiSsidTablePtr = (UINT32)(UINTN)SiConfig->SsidTablePtr;
  75. FspsUpd->FspsConfig.SiNumberOfSsidTableEntry = (UINT16)SiConfig->NumberOfSsidTableEntry;
  76. FspsUpd->FspsConfig.TraceHubMemBase = SiConfig->TraceHubMemBase;
  77. return EFI_SUCCESS;
  78. }