DxeGalagoPro3AcpiTableLib.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /** @file
  2. System 76 GalagoPro3 board DXE ACPI table functionality.
  3. Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <Base.h>
  7. #include <Uefi.h>
  8. #include <PiDxe.h>
  9. #include <Library/BaseLib.h>
  10. #include <Library/IoLib.h>
  11. #include <Library/BoardAcpiTableLib.h>
  12. #include <Library/PcdLib.h>
  13. #include <Library/DebugLib.h>
  14. #include <Library/UefiBootServicesTableLib.h>
  15. #include <Library/AslUpdateLib.h>
  16. #include <Protocol/GlobalNvsArea.h>
  17. #include <PlatformBoardId.h>
  18. GLOBAL_REMOVE_IF_UNREFERENCED EFI_GLOBAL_NVS_AREA_PROTOCOL mGlobalNvsArea;
  19. VOID
  20. GalagoPro3UpdateGlobalNvs (
  21. VOID
  22. )
  23. {
  24. //
  25. // Allocate and initialize the NVS area for SMM and ASL communication.
  26. //
  27. mGlobalNvsArea.Area = (VOID *)(UINTN)PcdGet64 (PcdAcpiGnvsAddress);
  28. //
  29. // Update global NVS area for ASL and SMM init code to use
  30. //
  31. //
  32. // Enable PowerState
  33. //
  34. mGlobalNvsArea.Area->PowerState = 1; // AC =1; for mobile platform, will update this value in SmmPlatform.c
  35. mGlobalNvsArea.Area->NativePCIESupport = PcdGet8 (PcdPciExpNative);
  36. //
  37. // Enable APIC
  38. //
  39. mGlobalNvsArea.Area->ApicEnable = GLOBAL_NVS_DEVICE_ENABLE;
  40. //
  41. // Low Power S0 Idle - Enabled/Disabled
  42. //
  43. mGlobalNvsArea.Area->LowPowerS0Idle = PcdGet8 (PcdLowPowerS0Idle);
  44. mGlobalNvsArea.Area->Ps2MouseEnable = PcdGet8 (PcdPs2KbMsEnable);
  45. mGlobalNvsArea.Area->Ps2KbMsEnable = PcdGet8 (PcdPs2KbMsEnable);
  46. mGlobalNvsArea.Area->BoardId = (UINT8) LibPcdGetSku ();
  47. }
  48. EFI_STATUS
  49. EFIAPI
  50. GalagoPro3BoardUpdateAcpiTable (
  51. IN OUT EFI_ACPI_COMMON_HEADER *Table,
  52. IN OUT EFI_ACPI_TABLE_VERSION *Version
  53. )
  54. {
  55. if (Table->Signature == EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {
  56. GalagoPro3UpdateGlobalNvs ();
  57. }
  58. return EFI_SUCCESS;
  59. }