PchEarlyUpdate.c 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /** @file
  2. Pch Early update.
  3. @copyright
  4. Copyright 2019 - 2021 Intel Corporation. <BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #include "PeiBoardInit.h"
  8. #include <Library/UbaPchEarlyUpdateLib.h>
  9. #include <PchAccess.h>
  10. #include <GpioPinsSklH.h>
  11. #include <Library/GpioLib.h>
  12. #include <Ppi/DynamicSiLibraryPpi.h>
  13. EFI_STATUS
  14. TypeBoardPortTemplatePchLanConfig (
  15. IN SYSTEM_CONFIGURATION *SystemConfig
  16. )
  17. {
  18. DYNAMIC_SI_LIBARY_PPI *DynamicSiLibraryPpi = NULL;
  19. EFI_STATUS Status;
  20. Status = PeiServicesLocatePpi (&gDynamicSiLibraryPpiGuid, 0, NULL, &DynamicSiLibraryPpi);
  21. if (EFI_ERROR (Status)) {
  22. ASSERT_EFI_ERROR (Status);
  23. return Status;
  24. }
  25. DynamicSiLibraryPpi->GpioSetOutputValue (GPIO_SKL_H_GPP_I9, (UINT32)SystemConfig->LomDisableByGpio);
  26. DynamicSiLibraryPpi->PchDisableGbe ();
  27. return EFI_SUCCESS;
  28. }
  29. EFI_STATUS
  30. TypeBoardPortTemplateOemInitLateHook (
  31. IN SYSTEM_CONFIGURATION *SystemConfig
  32. )
  33. {
  34. return EFI_SUCCESS;
  35. }
  36. PLATFORM_PCH_EARLY_UPDATE_TABLE TypeBoardPortTemplatePchEarlyUpdateTable =
  37. {
  38. PLATFORM_PCH_EARLY_UPDATE_SIGNATURE,
  39. PLATFORM_PCH_EARLY_UPDATE_VERSION,
  40. TypeBoardPortTemplatePchLanConfig,
  41. TypeBoardPortTemplateOemInitLateHook
  42. };
  43. /**
  44. Entry point function for the PEIM
  45. @param FileHandle Handle of the file being invoked.
  46. @param PeiServices Describes the list of possible PEI Services.
  47. @return EFI_SUCCESS If we installed our PPI
  48. **/
  49. EFI_STATUS
  50. EFIAPI
  51. TypeBoardPortTemplatePchEarlyUpdate(
  52. IN UBA_CONFIG_DATABASE_PPI *UbaConfigPpi
  53. )
  54. {
  55. EFI_STATUS Status;
  56. Status = PeiServicesLocatePpi (
  57. &gUbaConfigDatabasePpiGuid,
  58. 0,
  59. NULL,
  60. &UbaConfigPpi
  61. );
  62. if (EFI_ERROR(Status)) {
  63. return Status;
  64. }
  65. Status = UbaConfigPpi->AddData (
  66. UbaConfigPpi,
  67. &gPlatformPchEarlyConfigDataGuid,
  68. &TypeBoardPortTemplatePchEarlyUpdateTable,
  69. sizeof(TypeBoardPortTemplatePchEarlyUpdateTable)
  70. );
  71. return Status;
  72. }