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.
8 Copyright (c) 2013-2015 Intel Corporation.
10 SPDX-License-Identifier: BSD-2-Clause-Patent
14 #ifndef _GLOBAL_NVS_AREA_H_
15 #define _GLOBAL_NVS_AREA_H_
18 // Forward reference for pure ANSI compatability
21 typedef struct _EFI_GLOBAL_NVS_AREA_PROTOCOL EFI_GLOBAL_NVS_AREA_PROTOCOL
;
24 // Global NVS Area Protocol GUID
26 #define EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID \
27 { 0x74e1e48, 0x8132, 0x47a1, {0x8c, 0x2c, 0x3f, 0x14, 0xad, 0x9a, 0x66, 0xdc} }
31 // Global NVS Area definition
36 // Miscellaneous Dynamic Values
38 UINT32 OperatingSystemType
; // Os type indicator
39 UINT32 Cfgd
; // System configuration description
42 UINT32 Pm1blkIoBaseAddress
;
43 UINT32 PmbaIoBaseAddress
;
44 UINT32 Gpe0blkIoBaseAddress
;
45 UINT32 GbaIoBaseAddress
;
47 UINT32 SmbaIoBaseAddress
;
49 UINT32 WdtbaIoBaseAddress
;
51 UINT32 HpetBaseAddress
;
53 UINT32 PciExpressBaseAddress
;
54 UINT32 PciExpressSize
;
56 UINT32 RcbaMmioBaseAddress
;
58 UINT32 IoApicBaseAddress
;
63 UINT32 PlatformType
; // Set to one of EFI_PLATFORM_TYPE enums.
64 UINT32 AlternateSla
; // If TRUE use alternate I2C Slave addresses.
66 UINT8 Reserved
[512 - 4 * 22]; // Total 512 Bytes
67 } EFI_GLOBAL_NVS_AREA
;
71 // Global NVS Area Protocol
73 struct _EFI_GLOBAL_NVS_AREA_PROTOCOL
{
74 EFI_GLOBAL_NVS_AREA
*Area
;
78 // Extern the GUID for protocol users.
80 extern EFI_GUID gEfiGlobalNvsAreaProtocolGuid
;