--- /dev/null
+/** @file\r
+Definition of the global NVS area protocol. This protocol\r
+publishes the address and format of a global ACPI NVS buffer\r
+used as a communications buffer between SMM code and ASL code.\r
+The format is derived from the ACPI reference code, version 0.95.\r
+Note: Data structures defined in this protocol are not naturally aligned.\r
+\r
+Copyright (c) 2013-2015 Intel Corporation.\r
+\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _GLOBAL_NVS_AREA_H_\r
+#define _GLOBAL_NVS_AREA_H_\r
+\r
+//\r
+// Forward reference for pure ANSI compatability\r
+//\r
+\r
+typedef struct _EFI_GLOBAL_NVS_AREA_PROTOCOL EFI_GLOBAL_NVS_AREA_PROTOCOL;\r
+\r
+//\r
+// Global NVS Area Protocol GUID\r
+//\r
+#define EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID \\r
+{ 0x74e1e48, 0x8132, 0x47a1, {0x8c, 0x2c, 0x3f, 0x14, 0xad, 0x9a, 0x66, 0xdc} }\r
+\r
+\r
+//\r
+// Global NVS Area definition\r
+//\r
+#pragma pack (1)\r
+typedef struct {\r
+ //\r
+ // Miscellaneous Dynamic Values\r
+ //\r
+ UINT32 OperatingSystemType; // Os type indicator\r
+ UINT32 Cfgd; // System configuration description\r
+ UINT32 HpetEnable;\r
+\r
+ UINT32 Pm1blkIoBaseAddress;\r
+ UINT32 PmbaIoBaseAddress;\r
+ UINT32 Gpe0blkIoBaseAddress;\r
+ UINT32 GbaIoBaseAddress;\r
+\r
+ UINT32 SmbaIoBaseAddress;\r
+ UINT32 Reserved1;\r
+ UINT32 WdtbaIoBaseAddress;\r
+\r
+ UINT32 HpetBaseAddress;\r
+ UINT32 HpetSize;\r
+ UINT32 PciExpressBaseAddress;\r
+ UINT32 PciExpressSize;\r
+\r
+ UINT32 RcbaMmioBaseAddress;\r
+ UINT32 RcbaMmioSize;\r
+ UINT32 IoApicBaseAddress;\r
+ UINT32 IoApicSize;\r
+\r
+ UINT32 TpmPresent;\r
+ UINT32 DBG2Present;\r
+ UINT32 PlatformType; // Set to one of EFI_PLATFORM_TYPE enums.\r
+ UINT32 AlternateSla; // If TRUE use alternate I2C Slave addresses.\r
+\r
+ UINT8 Reserved[512 - 4 * 22]; // Total 512 Bytes\r
+} EFI_GLOBAL_NVS_AREA;\r
+#pragma pack ()\r
+\r
+//\r
+// Global NVS Area Protocol\r
+//\r
+struct _EFI_GLOBAL_NVS_AREA_PROTOCOL {\r
+ EFI_GLOBAL_NVS_AREA *Area;\r
+};\r
+\r
+//\r
+// Extern the GUID for protocol users.\r
+//\r
+extern EFI_GUID gEfiGlobalNvsAreaProtocolGuid;\r
+\r
+#endif\r