PeiFspMePolicyInitLib.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /** @file
  2. Implementation of Fsp Me Policy Initialization.
  3. Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <PeiFspPolicyInitLib.h>
  7. #include <ConfigBlock/MePeiConfig.h>
  8. #include <Ppi/SiPolicy.h>
  9. #include <Library/ConfigBlockLib.h>
  10. /**
  11. Performs FSP ME PEI Policy pre mem initialization.
  12. @param[in][out] FspmUpd Pointer to FSP UPD Data.
  13. @retval EFI_SUCCESS FSP UPD Data is updated.
  14. @retval EFI_NOT_FOUND Fail to locate required PPI.
  15. @retval Other FSP UPD Data update process fail.
  16. **/
  17. EFI_STATUS
  18. EFIAPI
  19. PeiFspMePolicyInitPreMem (
  20. IN OUT FSPM_UPD *FspmUpd
  21. )
  22. {
  23. EFI_STATUS Status;
  24. SI_PREMEM_POLICY_PPI *SiPreMemPolicy;
  25. ME_PEI_PREMEM_CONFIG *MePeiPreMemConfig;
  26. DEBUG ((DEBUG_INFO, "PeiFspMePolicyInitPreMem\n"));
  27. //
  28. // Locate gSiPreMemPolicyPpi
  29. //
  30. SiPreMemPolicy = NULL;
  31. Status = PeiServicesLocatePpi (
  32. &gSiPreMemPolicyPpiGuid,
  33. 0,
  34. NULL,
  35. (VOID **) &SiPreMemPolicy
  36. );
  37. if (EFI_ERROR (Status)) {
  38. return EFI_NOT_FOUND;
  39. }
  40. Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gMePeiPreMemConfigGuid, (VOID *) &MePeiPreMemConfig);
  41. ASSERT_EFI_ERROR (Status);
  42. FspmUpd->FspmConfig.HeciTimeouts = (UINT8) MePeiPreMemConfig->HeciTimeouts;
  43. //
  44. // Test policies
  45. //
  46. FspmUpd->FspmTestConfig.DidInitStat = (UINT8) MePeiPreMemConfig->DidInitStat;
  47. FspmUpd->FspmTestConfig.DisableCpuReplacedPolling = (UINT8) MePeiPreMemConfig->DisableCpuReplacedPolling;
  48. FspmUpd->FspmTestConfig.SendDidMsg = (UINT8) MePeiPreMemConfig->SendDidMsg;
  49. FspmUpd->FspmTestConfig.DisableMessageCheck = (UINT8) MePeiPreMemConfig->DisableMessageCheck;
  50. FspmUpd->FspmTestConfig.SkipMbpHob = (UINT8) MePeiPreMemConfig->SkipMbpHob;
  51. FspmUpd->FspmTestConfig.HeciCommunication2 = (UINT8) MePeiPreMemConfig->HeciCommunication2;
  52. FspmUpd->FspmTestConfig.KtDeviceEnable = (UINT8) MePeiPreMemConfig->KtDeviceEnable;
  53. FspmUpd->FspmConfig.Heci1BarAddress = MePeiPreMemConfig->Heci1BarAddress;
  54. FspmUpd->FspmConfig.Heci2BarAddress = MePeiPreMemConfig->Heci2BarAddress;
  55. FspmUpd->FspmConfig.Heci3BarAddress = MePeiPreMemConfig->Heci3BarAddress;
  56. return EFI_SUCCESS;
  57. }
  58. /**
  59. Performs FSP ME PEI Policy initialization.
  60. @param[in][out] FspsUpd Pointer to FSP UPD Data.
  61. @retval EFI_SUCCESS FSP UPD Data is updated.
  62. @retval EFI_NOT_FOUND Fail to locate required PPI.
  63. @retval Other FSP UPD Data update process fail.
  64. **/
  65. EFI_STATUS
  66. EFIAPI
  67. PeiFspMePolicyInit (
  68. IN OUT FSPS_UPD *FspsUpd
  69. )
  70. {
  71. EFI_STATUS Status;
  72. SI_POLICY_PPI *SiPolicyPpi;
  73. ME_PEI_CONFIG *MePeiConfig;
  74. DEBUG ((DEBUG_INFO, "PeiFspMePolicyInit \n"));
  75. //
  76. // Locate gSiPolicyPpiGuid
  77. //
  78. SiPolicyPpi = NULL;
  79. Status = PeiServicesLocatePpi (
  80. &gSiPolicyPpiGuid,
  81. 0,
  82. NULL,
  83. (VOID **) &SiPolicyPpi
  84. );
  85. if (EFI_ERROR (Status)) {
  86. return EFI_NOT_FOUND;
  87. }
  88. Status = GetConfigBlock ((VOID *) SiPolicyPpi, &gMePeiConfigGuid, (VOID *) &MePeiConfig);
  89. ASSERT_EFI_ERROR (Status);
  90. FspsUpd->FspsConfig.Heci3Enabled = (UINT8) MePeiConfig->Heci3Enabled;
  91. FspsUpd->FspsConfig.MeUnconfigOnRtcClear = (UINT8) MePeiConfig->MeUnconfigOnRtcClear;
  92. //
  93. // Test policies
  94. //
  95. FspsUpd->FspsTestConfig.MctpBroadcastCycle = (UINT8) MePeiConfig->MctpBroadcastCycle;
  96. FspsUpd->FspsTestConfig.EndOfPostMessage = (UINT8) MePeiConfig->EndOfPostMessage;
  97. FspsUpd->FspsTestConfig.DisableD0I3SettingForHeci = (UINT8) MePeiConfig->DisableD0I3SettingForHeci;
  98. return EFI_SUCCESS;
  99. }