UbaAcpiUpdateLib.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /** @file
  2. @copyright
  3. Copyright 2013 Intel Corporation. <BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <Base.h>
  7. #include <Uefi.h>
  8. #include <Library/BaseLib.h>
  9. #include <Library/BaseMemoryLib.h>
  10. #include <Library/MemoryAllocationLib.h>
  11. #include <Library/UefiBootServicesTableLib.h>
  12. #include <Library/DebugLib.h>
  13. #include <Library/UbaAcpiUpdateLib.h>
  14. #include <Protocol/UbaCfgDb.h>
  15. EFI_STATUS
  16. PlatformGetAcpiFixTableDataPointer (
  17. IN VOID **TablePtr
  18. )
  19. {
  20. EFI_STATUS Status;
  21. UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL;
  22. UINTN DataLength = 0;
  23. ACPI_FIX_UPDATE_TABLE AcpiFixUpdateTable;
  24. Status = gBS->LocateProtocol (
  25. &gUbaConfigDatabaseProtocolGuid,
  26. NULL,
  27. (VOID **) &UbaConfigProtocol
  28. );
  29. if (EFI_ERROR (Status)) {
  30. return Status;
  31. }
  32. DataLength = sizeof (AcpiFixUpdateTable);
  33. Status = UbaConfigProtocol->GetData (
  34. UbaConfigProtocol,
  35. &gPlatformAcpiFixTableGuid,
  36. &AcpiFixUpdateTable,
  37. &DataLength
  38. );
  39. if (EFI_ERROR (Status)) {
  40. return Status;
  41. }
  42. ASSERT (AcpiFixUpdateTable.Signature == PLATFORM_ACPI_FIX_UPDATE_SIGNATURE);
  43. ASSERT (AcpiFixUpdateTable.Version == PLATFORM_ACPI_FIX_UPDATE_VERSION);
  44. *TablePtr = AcpiFixUpdateTable.TablePtr;
  45. return EFI_SUCCESS;
  46. }