summaryrefslogtreecommitdiff
path: root/Include/Protocol/AcpiSystemDescriptionTable.h
blob: 7af72e24e4d0b92b03e2b71ae2bedab25b73dfdf (plain)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
//*************************************************************************
//*************************************************************************
//**                                                                     **
//**        (C)Copyright 1985-2011, American Megatrends, Inc.            **
//**                                                                     **
//**                       All Rights Reserved.                          **
//**                                                                     **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
//**                                                                     **
//**                       Phone: (770)-246-8600                         **
//**                                                                     **
//*************************************************************************
//*************************************************************************

//*************************************************************************
// $Header: /Alaska/BIN/Core/Include/Protocol/AcpiSystemDescriptionTable.h 1     5/27/11 5:52p Felixp $
//
// $Revision: 1 $
//
// $Date: 5/27/11 5:52p $
//*************************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Core/Include/Protocol/AcpiSystemDescriptionTable.h $
// 
// 1     5/27/11 5:52p Felixp
// 
// 1     5/13/11 4:50p Yakovlevs
// [TAG]  		EIP 56526 
// [Category]  	New Feature
// [Description]  	ACPI Manipulation Protocol Initial Checkin

//*************************************************************************
//<AMI_FHDR_START>
//
// Name: AcpiSystemDescriptionTable.h
//
// Description:
//  Definition of PI 1.2 Vol 5 ACPI System Description Table Protocol. 
//
//<AMI_FHDR_END>
//*************************************************************************

#ifndef __ACPI_SYSTEM_DESCRIPTION_TABLE_H___
#define __ACPI_SYSTEM_DESCRIPTION_TABLE_H___
#ifdef __cplusplus
extern "C" {
#endif

#include <Efi.h>

#define EFI_ACPI_SDT_PROTOCOL_GUID \
  { 0xeb97088e, 0xcfdf, 0x49c6, 0xbe, 0x4b, 0xd9, 0x6, 0xa5, 0xb2, 0xe, 0x86 }
  
GUID_VARIABLE_DECLARATION(gEfiAcpiSdtProtocolGuid, EFI_ACPI_SDT_PROTOCOL_GUID);

typedef UINT32  EFI_ACPI_TABLE_VERSION;
typedef VOID    *EFI_ACPI_HANDLE;

//**********************************************************************
// ACPI Version bitmap definition:
//
// EFI_ACPI_TABLE_VERSION_1_0B - ACPI Version 1.0b (not supported curently)
// EFI_ACPI_TABLE_VERSION_2_0 - ACPI Version 2.0 
// EFI_ACPI_TABLE_VERSION_NONE - No ACPI Versions.  This might be used
//  to create memory-based operation regions or other information
//  that is not part of the ACPI "tree" but must still be found
//  in ACPI memory space and/or managed by the core ACPI driver.
//
//**********************************************************************
#define EFI_ACPI_TABLE_VERSION_NONE (1 << 0)
#define EFI_ACPI_TABLE_VERSION_1_0B (1 << 1)
#define EFI_ACPI_TABLE_VERSION_2_0  (1 << 2)
#define EFI_ACPI_TABLE_VERSION_3_0  (1 << 3)
#define EFI_ACPI_TABLE_VERSION_4_0  (1 << 4)
  
typedef UINT32 EFI_ACPI_DATA_TYPE;
#define EFI_ACPI_DATA_TYPE_NONE         0
#define EFI_ACPI_DATA_TYPE_OPCODE       1
#define EFI_ACPI_DATA_TYPE_NAME_STRING  2
#define EFI_ACPI_DATA_TYPE_OP           3
#define EFI_ACPI_DATA_TYPE_UINT         4
#define EFI_ACPI_DATA_TYPE_STRING       5
#define EFI_ACPI_DATA_TYPE_CHILD        6
  
typedef struct {
  UINT32    Signature;
  UINT32    Length;
  UINT8     Revision;
  UINT8     Checksum;
  CHAR8     OemId[6];
  CHAR8     OemTableId[8];
  UINT32    OemRevision;
  UINT32    CreatorId;
  UINT32    CreatorRevision;
} EFI_ACPI_SDT_HEADER;
  
typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_NOTIFICATION_FN)(
  IN EFI_ACPI_SDT_HEADER    *Table,     ///< A pointer to the ACPI table header.
  IN EFI_ACPI_TABLE_VERSION Version,    ///< The ACPI table's version.
  IN UINTN                  TableKey    ///< The table key for this ACPI table.
);
  
typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_GET_ACPI_TABLE2)(
  IN    UINTN                   Index,
  OUT   EFI_ACPI_SDT_HEADER     **Table,
  OUT   EFI_ACPI_TABLE_VERSION  *Version,
  OUT   UINTN                   *TableKey
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_REGISTER_NOTIFY)(
  IN BOOLEAN                    Register,
  IN EFI_ACPI_NOTIFICATION_FN   Notification
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_OPEN)(
  IN    VOID            *Buffer,
  OUT   EFI_ACPI_HANDLE *Handle 
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_OPEN_SDT)(
  IN    UINTN           TableKey,
  OUT   EFI_ACPI_HANDLE *Handle
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_CLOSE)(
  IN EFI_ACPI_HANDLE Handle
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_GET_CHILD)(
  IN EFI_ACPI_HANDLE        ParentHandle,
  IN OUT EFI_ACPI_HANDLE    *Handle
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_GET_OPTION)(
  IN        EFI_ACPI_HANDLE     Handle,
  IN        UINTN               Index,
  OUT       EFI_ACPI_DATA_TYPE  *DataType,
  OUT CONST VOID                **Data,
  OUT       UINTN               *DataSize
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_SET_OPTION)(
  IN        EFI_ACPI_HANDLE Handle,
  IN        UINTN           Index,
  IN CONST  VOID            *Data,
  IN        UINTN           DataSize
);

typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_FIND_PATH)(
  IN    EFI_ACPI_HANDLE HandleIn,
  IN    VOID            *AcpiPath,
  OUT   EFI_ACPI_HANDLE *HandleOut
);

typedef struct _EFI_ACPI_SDT_PROTOCOL {
  // Specifies the ACPI version supported by this protocol.
  EFI_ACPI_TABLE_VERSION    AcpiVersion;
  EFI_ACPI_GET_ACPI_TABLE2  GetAcpiTable;
  EFI_ACPI_REGISTER_NOTIFY  RegisterNotify;
  EFI_ACPI_OPEN             Open;
  EFI_ACPI_OPEN_SDT         OpenSdt;
  EFI_ACPI_CLOSE            Close;
  EFI_ACPI_GET_CHILD        GetChild;
  EFI_ACPI_GET_OPTION       GetOption;
  EFI_ACPI_SET_OPTION       SetOption;
  EFI_ACPI_FIND_PATH        FindPath;
} EFI_ACPI_SDT_PROTOCOL;

/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif

#endif // __ACPI_SYSTEM_DESCRIPTION_TABLE_H___

//*************************************************************************
//*************************************************************************
//**                                                                     **
//**        (C)Copyright 1985-2011, American Megatrends, Inc.            **
//**                                                                     **
//**                       All Rights Reserved.                          **
//**                                                                     **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
//**                                                                     **
//**                       Phone: (770)-246-8600                         **
//**                                                                     **
//*************************************************************************
//*************************************************************************