UbaClocksConfigLib.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /** @file
  2. @copyright
  3. Copyright 2017 - 2021 Intel Corporation. <BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <PiPei.h>
  7. #include <Uefi/UefiSpec.h>
  8. #include <Ppi/UbaCfgDb.h>
  9. #include <Library/PeimEntryPoint.h>
  10. #include <Library/PeiServicesLib.h>
  11. #include <Library/PeiServicesTablePointerLib.h>
  12. #include <Library/DebugLib.h>
  13. #include <Library/IoLib.h>
  14. #include <Library/UbaClocksConfigLib.h>
  15. EFI_STATUS
  16. ConfigurePlatformClock (
  17. IN EFI_PEI_SERVICES **PeiServices,
  18. IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
  19. IN VOID *SmbusPpi
  20. )
  21. {
  22. EFI_STATUS Status;
  23. UBA_CONFIG_DATABASE_PPI *UbaConfigPpi = NULL;
  24. PLATFORM_CLOCKS_CONFIG_TABLE PlatformClocksConfigTable;
  25. UINTN TableSize;
  26. Status = PeiServicesLocatePpi (
  27. &gUbaConfigDatabasePpiGuid,
  28. 0,
  29. NULL,
  30. (VOID **) &UbaConfigPpi
  31. );
  32. if (EFI_ERROR(Status)) {
  33. return Status;
  34. }
  35. TableSize = sizeof(PlatformClocksConfigTable);
  36. Status = UbaConfigPpi->GetData (
  37. UbaConfigPpi,
  38. &gPlatformClocksConfigDataGuid,
  39. &PlatformClocksConfigTable,
  40. &TableSize
  41. );
  42. if (EFI_ERROR(Status)) {
  43. return Status;
  44. }
  45. ASSERT (PlatformClocksConfigTable.Signature == PLATFORM_CLOCKS_CONFIG_SIGNATURE);
  46. ASSERT (PlatformClocksConfigTable.Version == PLATFORM_CLOCKS_CONFIG_VERSION);
  47. Status = PlatformClocksConfigTable.CallUpdate(PeiServices, NotifyDescriptor, SmbusPpi);
  48. return Status;
  49. }