SiliconPolicyInitLib.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /** @file
  2. Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. **/
  5. #include <Library/DebugLib.h>
  6. #include <Library/IoLib.h>
  7. #include <Library/PeiServicesLib.h>
  8. #include <Library/MemoryAllocationLib.h>
  9. #include <Library/PchPolicyLib.h>
  10. /**
  11. Performs silicon pre-mem policy initialization.
  12. The meaning of Policy is defined by silicon code.
  13. It could be the raw data, a handle, a PPI, etc.
  14. The returned data must be used as input data for SiliconPolicyDonePreMem(),
  15. and SiliconPolicyUpdateLib.SiliconPolicyUpdatePreMem().
  16. 1) In FSP path, the input Policy should be FspmUpd.
  17. Value of FspmUpd has been initialized by FSP binary default value.
  18. Only a subset of FspmUpd needs to be updated for different silicon sku.
  19. The return data is same FspmUpd.
  20. 2) In non-FSP path, the input policy could be NULL.
  21. The return data is the initialized policy.
  22. @param[in, out] Policy Pointer to policy.
  23. @return the initialized policy.
  24. **/
  25. VOID *
  26. EFIAPI
  27. SiliconPolicyInitPreMem (
  28. IN OUT VOID *Policy OPTIONAL
  29. )
  30. {
  31. EFI_STATUS Status;
  32. PCH_POLICY_PPI *PchPolicyPpi;
  33. //
  34. // Call PchCreatePolicyDefaults to initialize platform policy structure
  35. // and get all intel default policy settings.
  36. //
  37. Status = PchCreatePolicyDefaults (&PchPolicyPpi);
  38. ASSERT_EFI_ERROR (Status);
  39. return PchPolicyPpi;
  40. }
  41. /*
  42. The silicon pre-mem policy is finalized.
  43. Silicon code can do initialization based upon the policy data.
  44. The input Policy must be returned by SiliconPolicyInitPreMem().
  45. @param[in] Policy Pointer to policy.
  46. @retval RETURN_SUCCESS The policy is handled consumed by silicon code.
  47. */
  48. RETURN_STATUS
  49. EFIAPI
  50. SiliconPolicyDonePreMem (
  51. IN VOID *Policy
  52. )
  53. {
  54. EFI_STATUS Status;
  55. //
  56. // Install PchPolicyPpi.
  57. // While installed, RC assumes the Policy is ready and finalized. So please
  58. // update and override any setting before calling this function.
  59. //
  60. Status = PchInstallPolicyPpi (Policy);
  61. ASSERT_EFI_ERROR (Status);
  62. return Status;
  63. }
  64. /**
  65. Performs silicon post-mem policy initialization.
  66. The meaning of Policy is defined by silicon code.
  67. It could be the raw data, a handle, a PPI, etc.
  68. The returned data must be used as input data for SiliconPolicyDonePostMem(),
  69. and SiliconPolicyUpdateLib.SiliconPolicyUpdatePostMem().
  70. 1) In FSP path, the input Policy should be FspsUpd.
  71. Value of FspsUpd has been initialized by FSP binary default value.
  72. Only a subset of FspsUpd needs to be updated for different silicon sku.
  73. The return data is same FspsUpd.
  74. 2) In non-FSP path, the input policy could be NULL.
  75. The return data is the initialized policy.
  76. @param[in, out] Policy Pointer to policy.
  77. @return the initialized policy.
  78. **/
  79. VOID *
  80. EFIAPI
  81. SiliconPolicyInitPostMem (
  82. IN OUT VOID *Policy OPTIONAL
  83. )
  84. {
  85. return Policy;
  86. }
  87. /*
  88. The silicon post-mem policy is finalized.
  89. Silicon code can do initialization based upon the policy data.
  90. The input Policy must be returned by SiliconPolicyInitPostMem().
  91. @param[in] Policy Pointer to policy.
  92. @retval RETURN_SUCCESS The policy is handled consumed by silicon code.
  93. */
  94. RETURN_STATUS
  95. EFIAPI
  96. SiliconPolicyDonePostMem (
  97. IN VOID *Policy
  98. )
  99. {
  100. return RETURN_SUCCESS;
  101. }