GlobalNvsArea.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /** @file
  2. Definition of the global NVS area protocol. This protocol
  3. publishes the address and format of a global ACPI NVS buffer
  4. used as a communications buffer between SMM code and ASL code.
  5. The format is derived from the ACPI reference code, version 0.95.
  6. Note: Data structures defined in this protocol are not naturally aligned.
  7. Copyright (c) 2013-2015 Intel Corporation.
  8. SPDX-License-Identifier: BSD-2-Clause-Patent
  9. **/
  10. #ifndef _GLOBAL_NVS_AREA_H_
  11. #define _GLOBAL_NVS_AREA_H_
  12. //
  13. // Forward reference for pure ANSI compatability
  14. //
  15. typedef struct _EFI_GLOBAL_NVS_AREA_PROTOCOL EFI_GLOBAL_NVS_AREA_PROTOCOL;
  16. //
  17. // Global NVS Area Protocol GUID
  18. //
  19. #define EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID \
  20. { 0x74e1e48, 0x8132, 0x47a1, {0x8c, 0x2c, 0x3f, 0x14, 0xad, 0x9a, 0x66, 0xdc} }
  21. //
  22. // Global NVS Area definition
  23. //
  24. #pragma pack (1)
  25. typedef struct {
  26. //
  27. // Miscellaneous Dynamic Values
  28. //
  29. UINT32 OperatingSystemType; // Os type indicator
  30. UINT32 Cfgd; // System configuration description
  31. UINT32 HpetEnable;
  32. UINT32 Pm1blkIoBaseAddress;
  33. UINT32 PmbaIoBaseAddress;
  34. UINT32 Gpe0blkIoBaseAddress;
  35. UINT32 GbaIoBaseAddress;
  36. UINT32 SmbaIoBaseAddress;
  37. UINT32 Reserved1;
  38. UINT32 WdtbaIoBaseAddress;
  39. UINT32 HpetBaseAddress;
  40. UINT32 HpetSize;
  41. UINT32 PciExpressBaseAddress;
  42. UINT32 PciExpressSize;
  43. UINT32 RcbaMmioBaseAddress;
  44. UINT32 RcbaMmioSize;
  45. UINT32 IoApicBaseAddress;
  46. UINT32 IoApicSize;
  47. UINT32 TpmPresent;
  48. UINT32 DBG2Present;
  49. UINT32 PlatformType; // Set to one of EFI_PLATFORM_TYPE enums.
  50. UINT32 AlternateSla; // If TRUE use alternate I2C Slave addresses.
  51. UINT8 Reserved[512 - 4 * 22]; // Total 512 Bytes
  52. } EFI_GLOBAL_NVS_AREA;
  53. #pragma pack ()
  54. //
  55. // Global NVS Area Protocol
  56. //
  57. struct _EFI_GLOBAL_NVS_AREA_PROTOCOL {
  58. EFI_GLOBAL_NVS_AREA *Area;
  59. };
  60. //
  61. // Extern the GUID for protocol users.
  62. //
  63. extern EFI_GUID gEfiGlobalNvsAreaProtocolGuid;
  64. #endif