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