DxeKabylakeRvp3AcpiTableLib.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /** @file
  2. Platform Hook Library instances
  3. Copyright (c) 2017, 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 <KabylakeRvp3Id.h>
  18. GLOBAL_REMOVE_IF_UNREFERENCED EFI_GLOBAL_NVS_AREA_PROTOCOL mGlobalNvsArea;
  19. VOID
  20. KabylakeRvp3UpdateGlobalNvs (
  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 = FALSE;
  45. mGlobalNvsArea.Area->Ps2KbMsEnable = PcdGet8 (PcdPs2KbMsEnable);
  46. }
  47. EFI_STATUS
  48. EFIAPI
  49. KabylakeRvp3BoardUpdateAcpiTable (
  50. IN OUT EFI_ACPI_COMMON_HEADER *Table,
  51. IN OUT EFI_ACPI_TABLE_VERSION *Version
  52. )
  53. {
  54. if (Table->Signature == EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {
  55. KabylakeRvp3UpdateGlobalNvs ();
  56. }
  57. return EFI_SUCCESS;
  58. }