PeiFspMePolicyInitLib.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /** @file
  2. Implementation of Fsp Me 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 <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.DisableHeciRetry = (UINT8) MePeiPreMemConfig->DisableHeciRetry;
  50. FspmUpd->FspmTestConfig.DisableMessageCheck = (UINT8) MePeiPreMemConfig->DisableMessageCheck;
  51. FspmUpd->FspmTestConfig.SkipMbpHob = (UINT8) MePeiPreMemConfig->SkipMbpHob;
  52. FspmUpd->FspmTestConfig.HeciCommunication2 = (UINT8) MePeiPreMemConfig->HeciCommunication2;
  53. FspmUpd->FspmTestConfig.KtDeviceEnable = (UINT8) MePeiPreMemConfig->KtDeviceEnable;
  54. FspmUpd->FspmConfig.Heci1BarAddress = MePeiPreMemConfig->Heci1BarAddress;
  55. FspmUpd->FspmConfig.Heci2BarAddress = MePeiPreMemConfig->Heci2BarAddress;
  56. FspmUpd->FspmConfig.Heci3BarAddress = MePeiPreMemConfig->Heci3BarAddress;
  57. return EFI_SUCCESS;
  58. }
  59. /**
  60. Performs FSP ME PEI Policy initialization.
  61. @param[in][out] FspsUpd Pointer to FSP UPD Data.
  62. @retval EFI_SUCCESS FSP UPD Data is updated.
  63. @retval EFI_NOT_FOUND Fail to locate required PPI.
  64. @retval Other FSP UPD Data update process fail.
  65. **/
  66. EFI_STATUS
  67. EFIAPI
  68. PeiFspMePolicyInit (
  69. IN OUT FSPS_UPD *FspsUpd
  70. )
  71. {
  72. EFI_STATUS Status;
  73. SI_POLICY_PPI *SiPolicyPpi;
  74. ME_PEI_CONFIG *MePeiConfig;
  75. DEBUG ((DEBUG_INFO, "PeiFspMePolicyInit \n"));
  76. //
  77. // Locate gSiPolicyPpiGuid
  78. //
  79. SiPolicyPpi = NULL;
  80. Status = PeiServicesLocatePpi (
  81. &gSiPolicyPpiGuid,
  82. 0,
  83. NULL,
  84. (VOID **) &SiPolicyPpi
  85. );
  86. if (EFI_ERROR (Status)) {
  87. return EFI_NOT_FOUND;
  88. }
  89. Status = GetConfigBlock ((VOID *) SiPolicyPpi, &gMePeiConfigGuid, (VOID *) &MePeiConfig);
  90. ASSERT_EFI_ERROR (Status);
  91. FspsUpd->FspsConfig.Heci3Enabled = (UINT8) MePeiConfig->Heci3Enabled;
  92. FspsUpd->FspsConfig.MeUnconfigOnRtcClear = (UINT8) MePeiConfig->MeUnconfigOnRtcClear;
  93. //
  94. // Test policies
  95. //
  96. FspsUpd->FspsTestConfig.MctpBroadcastCycle = (UINT8) MePeiConfig->MctpBroadcastCycle;
  97. FspsUpd->FspsTestConfig.EndOfPostMessage = (UINT8) MePeiConfig->EndOfPostMessage;
  98. FspsUpd->FspsTestConfig.DisableD0I3SettingForHeci = (UINT8) MePeiConfig->DisableD0I3SettingForHeci;
  99. return EFI_SUCCESS;
  100. }