1*1370a723SSascha Wildner /** @file
2*1370a723SSascha Wildner   ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006
3*1370a723SSascha Wildner 
4*1370a723SSascha Wildner   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5*1370a723SSascha Wildner   SPDX-License-Identifier: BSD-2-Clause-Patent
6*1370a723SSascha Wildner **/
7*1370a723SSascha Wildner 
8*1370a723SSascha Wildner #ifndef _ACPI_3_0_H_
9*1370a723SSascha Wildner #define _ACPI_3_0_H_
10*1370a723SSascha Wildner 
11*1370a723SSascha Wildner #include <IndustryStandard/Acpi20.h>
12*1370a723SSascha Wildner 
13*1370a723SSascha Wildner //
14*1370a723SSascha Wildner // Define for Descriptor
15*1370a723SSascha Wildner //
16*1370a723SSascha Wildner #define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME    0x0B
17*1370a723SSascha Wildner 
18*1370a723SSascha Wildner #define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR    0x8B
19*1370a723SSascha Wildner 
20*1370a723SSascha Wildner //
21*1370a723SSascha Wildner // Ensure proper structure formats
22*1370a723SSascha Wildner //
23*1370a723SSascha Wildner #pragma pack(1)
24*1370a723SSascha Wildner 
25*1370a723SSascha Wildner ///
26*1370a723SSascha Wildner /// Extended Address Space Descriptor
27*1370a723SSascha Wildner ///
28*1370a723SSascha Wildner typedef PACKED struct {
29*1370a723SSascha Wildner   ACPI_LARGE_RESOURCE_HEADER    Header;
30*1370a723SSascha Wildner   UINT8                         ResType;
31*1370a723SSascha Wildner   UINT8                         GenFlag;
32*1370a723SSascha Wildner   UINT8                         SpecificFlag;
33*1370a723SSascha Wildner   UINT8                         RevisionId;
34*1370a723SSascha Wildner   UINT8                         Reserved;
35*1370a723SSascha Wildner   UINT64                        AddrSpaceGranularity;
36*1370a723SSascha Wildner   UINT64                        AddrRangeMin;
37*1370a723SSascha Wildner   UINT64                        AddrRangeMax;
38*1370a723SSascha Wildner   UINT64                        AddrTranslationOffset;
39*1370a723SSascha Wildner   UINT64                        AddrLen;
40*1370a723SSascha Wildner   UINT64                        TypeSpecificAttribute;
41*1370a723SSascha Wildner } EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR;
42*1370a723SSascha Wildner 
43*1370a723SSascha Wildner #pragma pack()
44*1370a723SSascha Wildner 
45*1370a723SSascha Wildner //
46*1370a723SSascha Wildner // Memory Type Specific Flags
47*1370a723SSascha Wildner //
48*1370a723SSascha Wildner #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC  0x0000000000000001
49*1370a723SSascha Wildner #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC  0x0000000000000002
50*1370a723SSascha Wildner #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT  0x0000000000000004
51*1370a723SSascha Wildner #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB  0x0000000000000008
52*1370a723SSascha Wildner #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010
53*1370a723SSascha Wildner #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV  0x0000000000008000
54*1370a723SSascha Wildner 
55*1370a723SSascha Wildner //
56*1370a723SSascha Wildner // Ensure proper structure formats
57*1370a723SSascha Wildner //
58*1370a723SSascha Wildner #pragma pack(1)
59*1370a723SSascha Wildner 
60*1370a723SSascha Wildner ///
61*1370a723SSascha Wildner /// ACPI 3.0 Generic Address Space definition
62*1370a723SSascha Wildner ///
63*1370a723SSascha Wildner typedef struct {
64*1370a723SSascha Wildner   UINT8   AddressSpaceId;
65*1370a723SSascha Wildner   UINT8   RegisterBitWidth;
66*1370a723SSascha Wildner   UINT8   RegisterBitOffset;
67*1370a723SSascha Wildner   UINT8   AccessSize;
68*1370a723SSascha Wildner   UINT64  Address;
69*1370a723SSascha Wildner } EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE;
70*1370a723SSascha Wildner 
71*1370a723SSascha Wildner //
72*1370a723SSascha Wildner // Generic Address Space Address IDs
73*1370a723SSascha Wildner //
74*1370a723SSascha Wildner #define EFI_ACPI_3_0_SYSTEM_MEMORY              0
75*1370a723SSascha Wildner #define EFI_ACPI_3_0_SYSTEM_IO                  1
76*1370a723SSascha Wildner #define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE    2
77*1370a723SSascha Wildner #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER        3
78*1370a723SSascha Wildner #define EFI_ACPI_3_0_SMBUS                      4
79*1370a723SSascha Wildner #define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE  0x7F
80*1370a723SSascha Wildner 
81*1370a723SSascha Wildner //
82*1370a723SSascha Wildner // Generic Address Space Access Sizes
83*1370a723SSascha Wildner //
84*1370a723SSascha Wildner #define EFI_ACPI_3_0_UNDEFINED  0
85*1370a723SSascha Wildner #define EFI_ACPI_3_0_BYTE       1
86*1370a723SSascha Wildner #define EFI_ACPI_3_0_WORD       2
87*1370a723SSascha Wildner #define EFI_ACPI_3_0_DWORD      3
88*1370a723SSascha Wildner #define EFI_ACPI_3_0_QWORD      4
89*1370a723SSascha Wildner 
90*1370a723SSascha Wildner //
91*1370a723SSascha Wildner // ACPI 3.0 table structures
92*1370a723SSascha Wildner //
93*1370a723SSascha Wildner 
94*1370a723SSascha Wildner ///
95*1370a723SSascha Wildner /// Root System Description Pointer Structure
96*1370a723SSascha Wildner ///
97*1370a723SSascha Wildner typedef struct {
98*1370a723SSascha Wildner   UINT64  Signature;
99*1370a723SSascha Wildner   UINT8   Checksum;
100*1370a723SSascha Wildner   UINT8   OemId[6];
101*1370a723SSascha Wildner   UINT8   Revision;
102*1370a723SSascha Wildner   UINT32  RsdtAddress;
103*1370a723SSascha Wildner   UINT32  Length;
104*1370a723SSascha Wildner   UINT64  XsdtAddress;
105*1370a723SSascha Wildner   UINT8   ExtendedChecksum;
106*1370a723SSascha Wildner   UINT8   Reserved[3];
107*1370a723SSascha Wildner } EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
108*1370a723SSascha Wildner 
109*1370a723SSascha Wildner ///
110*1370a723SSascha Wildner /// RSD_PTR Revision (as defined in ACPI 3.0b spec.)
111*1370a723SSascha Wildner ///
112*1370a723SSascha Wildner #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 3.0b) says current value is 2
113*1370a723SSascha Wildner 
114*1370a723SSascha Wildner ///
115*1370a723SSascha Wildner /// Common table header, this prefaces all ACPI tables, including FACS, but
116*1370a723SSascha Wildner /// excluding the RSD PTR structure
117*1370a723SSascha Wildner ///
118*1370a723SSascha Wildner typedef struct {
119*1370a723SSascha Wildner   UINT32  Signature;
120*1370a723SSascha Wildner   UINT32  Length;
121*1370a723SSascha Wildner } EFI_ACPI_3_0_COMMON_HEADER;
122*1370a723SSascha Wildner 
123*1370a723SSascha Wildner //
124*1370a723SSascha Wildner // Root System Description Table
125*1370a723SSascha Wildner // No definition needed as it is a common description table header, the same with
126*1370a723SSascha Wildner // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
127*1370a723SSascha Wildner //
128*1370a723SSascha Wildner 
129*1370a723SSascha Wildner ///
130*1370a723SSascha Wildner /// RSDT Revision (as defined in ACPI 3.0 spec.)
131*1370a723SSascha Wildner ///
132*1370a723SSascha Wildner #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
133*1370a723SSascha Wildner 
134*1370a723SSascha Wildner //
135*1370a723SSascha Wildner // Extended System Description Table
136*1370a723SSascha Wildner // No definition needed as it is a common description table header, the same with
137*1370a723SSascha Wildner // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
138*1370a723SSascha Wildner //
139*1370a723SSascha Wildner 
140*1370a723SSascha Wildner ///
141*1370a723SSascha Wildner /// XSDT Revision (as defined in ACPI 3.0 spec.)
142*1370a723SSascha Wildner ///
143*1370a723SSascha Wildner #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
144*1370a723SSascha Wildner 
145*1370a723SSascha Wildner ///
146*1370a723SSascha Wildner /// Fixed ACPI Description Table Structure (FADT)
147*1370a723SSascha Wildner ///
148*1370a723SSascha Wildner typedef struct {
149*1370a723SSascha Wildner   EFI_ACPI_DESCRIPTION_HEADER             Header;
150*1370a723SSascha Wildner   UINT32                                  FirmwareCtrl;
151*1370a723SSascha Wildner   UINT32                                  Dsdt;
152*1370a723SSascha Wildner   UINT8                                   Reserved0;
153*1370a723SSascha Wildner   UINT8                                   PreferredPmProfile;
154*1370a723SSascha Wildner   UINT16                                  SciInt;
155*1370a723SSascha Wildner   UINT32                                  SmiCmd;
156*1370a723SSascha Wildner   UINT8                                   AcpiEnable;
157*1370a723SSascha Wildner   UINT8                                   AcpiDisable;
158*1370a723SSascha Wildner   UINT8                                   S4BiosReq;
159*1370a723SSascha Wildner   UINT8                                   PstateCnt;
160*1370a723SSascha Wildner   UINT32                                  Pm1aEvtBlk;
161*1370a723SSascha Wildner   UINT32                                  Pm1bEvtBlk;
162*1370a723SSascha Wildner   UINT32                                  Pm1aCntBlk;
163*1370a723SSascha Wildner   UINT32                                  Pm1bCntBlk;
164*1370a723SSascha Wildner   UINT32                                  Pm2CntBlk;
165*1370a723SSascha Wildner   UINT32                                  PmTmrBlk;
166*1370a723SSascha Wildner   UINT32                                  Gpe0Blk;
167*1370a723SSascha Wildner   UINT32                                  Gpe1Blk;
168*1370a723SSascha Wildner   UINT8                                   Pm1EvtLen;
169*1370a723SSascha Wildner   UINT8                                   Pm1CntLen;
170*1370a723SSascha Wildner   UINT8                                   Pm2CntLen;
171*1370a723SSascha Wildner   UINT8                                   PmTmrLen;
172*1370a723SSascha Wildner   UINT8                                   Gpe0BlkLen;
173*1370a723SSascha Wildner   UINT8                                   Gpe1BlkLen;
174*1370a723SSascha Wildner   UINT8                                   Gpe1Base;
175*1370a723SSascha Wildner   UINT8                                   CstCnt;
176*1370a723SSascha Wildner   UINT16                                  PLvl2Lat;
177*1370a723SSascha Wildner   UINT16                                  PLvl3Lat;
178*1370a723SSascha Wildner   UINT16                                  FlushSize;
179*1370a723SSascha Wildner   UINT16                                  FlushStride;
180*1370a723SSascha Wildner   UINT8                                   DutyOffset;
181*1370a723SSascha Wildner   UINT8                                   DutyWidth;
182*1370a723SSascha Wildner   UINT8                                   DayAlrm;
183*1370a723SSascha Wildner   UINT8                                   MonAlrm;
184*1370a723SSascha Wildner   UINT8                                   Century;
185*1370a723SSascha Wildner   UINT16                                  IaPcBootArch;
186*1370a723SSascha Wildner   UINT8                                   Reserved1;
187*1370a723SSascha Wildner   UINT32                                  Flags;
188*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
189*1370a723SSascha Wildner   UINT8                                   ResetValue;
190*1370a723SSascha Wildner   UINT8                                   Reserved2[3];
191*1370a723SSascha Wildner   UINT64                                  XFirmwareCtrl;
192*1370a723SSascha Wildner   UINT64                                  XDsdt;
193*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
194*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
195*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
196*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
197*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
198*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
199*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
200*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
201*1370a723SSascha Wildner } EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE;
202*1370a723SSascha Wildner 
203*1370a723SSascha Wildner ///
204*1370a723SSascha Wildner /// FADT Version (as defined in ACPI 3.0 spec.)
205*1370a723SSascha Wildner ///
206*1370a723SSascha Wildner #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x04
207*1370a723SSascha Wildner 
208*1370a723SSascha Wildner //
209*1370a723SSascha Wildner // Fixed ACPI Description Table Preferred Power Management Profile
210*1370a723SSascha Wildner //
211*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED         0
212*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_DESKTOP             1
213*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_MOBILE              2
214*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION         3
215*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER   4
216*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER         5
217*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC        6
218*1370a723SSascha Wildner #define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER  7
219*1370a723SSascha Wildner 
220*1370a723SSascha Wildner //
221*1370a723SSascha Wildner // Fixed ACPI Description Table Boot Architecture Flags
222*1370a723SSascha Wildner // All other bits are reserved and must be set to 0.
223*1370a723SSascha Wildner //
224*1370a723SSascha Wildner #define EFI_ACPI_3_0_LEGACY_DEVICES              BIT0
225*1370a723SSascha Wildner #define EFI_ACPI_3_0_8042                        BIT1
226*1370a723SSascha Wildner #define EFI_ACPI_3_0_VGA_NOT_PRESENT             BIT2
227*1370a723SSascha Wildner #define EFI_ACPI_3_0_MSI_NOT_SUPPORTED           BIT3
228*1370a723SSascha Wildner #define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS          BIT4
229*1370a723SSascha Wildner 
230*1370a723SSascha Wildner //
231*1370a723SSascha Wildner // Fixed ACPI Description Table Fixed Feature Flags
232*1370a723SSascha Wildner // All other bits are reserved and must be set to 0.
233*1370a723SSascha Wildner //
234*1370a723SSascha Wildner #define EFI_ACPI_3_0_WBINVD                                 BIT0
235*1370a723SSascha Wildner #define EFI_ACPI_3_0_WBINVD_FLUSH                           BIT1
236*1370a723SSascha Wildner #define EFI_ACPI_3_0_PROC_C1                                BIT2
237*1370a723SSascha Wildner #define EFI_ACPI_3_0_P_LVL2_UP                              BIT3
238*1370a723SSascha Wildner #define EFI_ACPI_3_0_PWR_BUTTON                             BIT4
239*1370a723SSascha Wildner #define EFI_ACPI_3_0_SLP_BUTTON                             BIT5
240*1370a723SSascha Wildner #define EFI_ACPI_3_0_FIX_RTC                                BIT6
241*1370a723SSascha Wildner #define EFI_ACPI_3_0_RTC_S4                                 BIT7
242*1370a723SSascha Wildner #define EFI_ACPI_3_0_TMR_VAL_EXT                            BIT8
243*1370a723SSascha Wildner #define EFI_ACPI_3_0_DCK_CAP                                BIT9
244*1370a723SSascha Wildner #define EFI_ACPI_3_0_RESET_REG_SUP                          BIT10
245*1370a723SSascha Wildner #define EFI_ACPI_3_0_SEALED_CASE                            BIT11
246*1370a723SSascha Wildner #define EFI_ACPI_3_0_HEADLESS                               BIT12
247*1370a723SSascha Wildner #define EFI_ACPI_3_0_CPU_SW_SLP                             BIT13
248*1370a723SSascha Wildner #define EFI_ACPI_3_0_PCI_EXP_WAK                            BIT14
249*1370a723SSascha Wildner #define EFI_ACPI_3_0_USE_PLATFORM_CLOCK                     BIT15
250*1370a723SSascha Wildner #define EFI_ACPI_3_0_S4_RTC_STS_VALID                       BIT16
251*1370a723SSascha Wildner #define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE                BIT17
252*1370a723SSascha Wildner #define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL               BIT18
253*1370a723SSascha Wildner #define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
254*1370a723SSascha Wildner 
255*1370a723SSascha Wildner ///
256*1370a723SSascha Wildner /// Firmware ACPI Control Structure
257*1370a723SSascha Wildner ///
258*1370a723SSascha Wildner typedef struct {
259*1370a723SSascha Wildner   UINT32  Signature;
260*1370a723SSascha Wildner   UINT32  Length;
261*1370a723SSascha Wildner   UINT32  HardwareSignature;
262*1370a723SSascha Wildner   UINT32  FirmwareWakingVector;
263*1370a723SSascha Wildner   UINT32  GlobalLock;
264*1370a723SSascha Wildner   UINT32  Flags;
265*1370a723SSascha Wildner   UINT64  XFirmwareWakingVector;
266*1370a723SSascha Wildner   UINT8   Version;
267*1370a723SSascha Wildner   UINT8   Reserved[31];
268*1370a723SSascha Wildner } EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
269*1370a723SSascha Wildner 
270*1370a723SSascha Wildner ///
271*1370a723SSascha Wildner /// FACS Version (as defined in ACPI 3.0 spec.)
272*1370a723SSascha Wildner ///
273*1370a723SSascha Wildner #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x01
274*1370a723SSascha Wildner 
275*1370a723SSascha Wildner ///
276*1370a723SSascha Wildner /// Firmware Control Structure Feature Flags
277*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0.
278*1370a723SSascha Wildner ///
279*1370a723SSascha Wildner #define EFI_ACPI_3_0_S4BIOS_F       BIT0
280*1370a723SSascha Wildner 
281*1370a723SSascha Wildner //
282*1370a723SSascha Wildner // Differentiated System Description Table,
283*1370a723SSascha Wildner // Secondary System Description Table
284*1370a723SSascha Wildner // and Persistent System Description Table,
285*1370a723SSascha Wildner // no definition needed as they are common description table header, the same with
286*1370a723SSascha Wildner // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
287*1370a723SSascha Wildner //
288*1370a723SSascha Wildner #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
289*1370a723SSascha Wildner #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
290*1370a723SSascha Wildner 
291*1370a723SSascha Wildner ///
292*1370a723SSascha Wildner /// Multiple APIC Description Table header definition.  The rest of the table
293*1370a723SSascha Wildner /// must be defined in a platform specific manner.
294*1370a723SSascha Wildner ///
295*1370a723SSascha Wildner typedef struct {
296*1370a723SSascha Wildner   EFI_ACPI_DESCRIPTION_HEADER Header;
297*1370a723SSascha Wildner   UINT32                      LocalApicAddress;
298*1370a723SSascha Wildner   UINT32                      Flags;
299*1370a723SSascha Wildner } EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
300*1370a723SSascha Wildner 
301*1370a723SSascha Wildner ///
302*1370a723SSascha Wildner /// MADT Revision (as defined in ACPI 3.0 spec.)
303*1370a723SSascha Wildner ///
304*1370a723SSascha Wildner #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02
305*1370a723SSascha Wildner 
306*1370a723SSascha Wildner ///
307*1370a723SSascha Wildner /// Multiple APIC Flags
308*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0.
309*1370a723SSascha Wildner ///
310*1370a723SSascha Wildner #define EFI_ACPI_3_0_PCAT_COMPAT         BIT0
311*1370a723SSascha Wildner 
312*1370a723SSascha Wildner //
313*1370a723SSascha Wildner // Multiple APIC Description Table APIC structure types
314*1370a723SSascha Wildner // All other values between 0x09 an 0xFF are reserved and
315*1370a723SSascha Wildner // will be ignored by OSPM.
316*1370a723SSascha Wildner //
317*1370a723SSascha Wildner #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC           0x00
318*1370a723SSascha Wildner #define EFI_ACPI_3_0_IO_APIC                        0x01
319*1370a723SSascha Wildner #define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE      0x02
320*1370a723SSascha Wildner #define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03
321*1370a723SSascha Wildner #define EFI_ACPI_3_0_LOCAL_APIC_NMI                 0x04
322*1370a723SSascha Wildner #define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
323*1370a723SSascha Wildner #define EFI_ACPI_3_0_IO_SAPIC                       0x06
324*1370a723SSascha Wildner #define EFI_ACPI_3_0_LOCAL_SAPIC                    0x07
325*1370a723SSascha Wildner #define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES     0x08
326*1370a723SSascha Wildner 
327*1370a723SSascha Wildner //
328*1370a723SSascha Wildner // APIC Structure Definitions
329*1370a723SSascha Wildner //
330*1370a723SSascha Wildner 
331*1370a723SSascha Wildner ///
332*1370a723SSascha Wildner /// Processor Local APIC Structure Definition
333*1370a723SSascha Wildner ///
334*1370a723SSascha Wildner typedef struct {
335*1370a723SSascha Wildner   UINT8   Type;
336*1370a723SSascha Wildner   UINT8   Length;
337*1370a723SSascha Wildner   UINT8   AcpiProcessorId;
338*1370a723SSascha Wildner   UINT8   ApicId;
339*1370a723SSascha Wildner   UINT32  Flags;
340*1370a723SSascha Wildner } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
341*1370a723SSascha Wildner 
342*1370a723SSascha Wildner ///
343*1370a723SSascha Wildner /// Local APIC Flags.  All other bits are reserved and must be 0.
344*1370a723SSascha Wildner ///
345*1370a723SSascha Wildner #define EFI_ACPI_3_0_LOCAL_APIC_ENABLED        BIT0
346*1370a723SSascha Wildner 
347*1370a723SSascha Wildner ///
348*1370a723SSascha Wildner /// IO APIC Structure
349*1370a723SSascha Wildner ///
350*1370a723SSascha Wildner typedef struct {
351*1370a723SSascha Wildner   UINT8   Type;
352*1370a723SSascha Wildner   UINT8   Length;
353*1370a723SSascha Wildner   UINT8   IoApicId;
354*1370a723SSascha Wildner   UINT8   Reserved;
355*1370a723SSascha Wildner   UINT32  IoApicAddress;
356*1370a723SSascha Wildner   UINT32  GlobalSystemInterruptBase;
357*1370a723SSascha Wildner } EFI_ACPI_3_0_IO_APIC_STRUCTURE;
358*1370a723SSascha Wildner 
359*1370a723SSascha Wildner ///
360*1370a723SSascha Wildner /// Interrupt Source Override Structure
361*1370a723SSascha Wildner ///
362*1370a723SSascha Wildner typedef struct {
363*1370a723SSascha Wildner   UINT8   Type;
364*1370a723SSascha Wildner   UINT8   Length;
365*1370a723SSascha Wildner   UINT8   Bus;
366*1370a723SSascha Wildner   UINT8   Source;
367*1370a723SSascha Wildner   UINT32  GlobalSystemInterrupt;
368*1370a723SSascha Wildner   UINT16  Flags;
369*1370a723SSascha Wildner } EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
370*1370a723SSascha Wildner 
371*1370a723SSascha Wildner ///
372*1370a723SSascha Wildner /// Platform Interrupt Sources Structure Definition
373*1370a723SSascha Wildner ///
374*1370a723SSascha Wildner typedef struct {
375*1370a723SSascha Wildner   UINT8   Type;
376*1370a723SSascha Wildner   UINT8   Length;
377*1370a723SSascha Wildner   UINT16  Flags;
378*1370a723SSascha Wildner   UINT8   InterruptType;
379*1370a723SSascha Wildner   UINT8   ProcessorId;
380*1370a723SSascha Wildner   UINT8   ProcessorEid;
381*1370a723SSascha Wildner   UINT8   IoSapicVector;
382*1370a723SSascha Wildner   UINT32  GlobalSystemInterrupt;
383*1370a723SSascha Wildner   UINT32  PlatformInterruptSourceFlags;
384*1370a723SSascha Wildner   UINT8   CpeiProcessorOverride;
385*1370a723SSascha Wildner   UINT8   Reserved[31];
386*1370a723SSascha Wildner } EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
387*1370a723SSascha Wildner 
388*1370a723SSascha Wildner //
389*1370a723SSascha Wildner // MPS INTI flags.
390*1370a723SSascha Wildner // All other bits are reserved and must be set to 0.
391*1370a723SSascha Wildner //
392*1370a723SSascha Wildner #define EFI_ACPI_3_0_POLARITY      (3 << 0)
393*1370a723SSascha Wildner #define EFI_ACPI_3_0_TRIGGER_MODE  (3 << 2)
394*1370a723SSascha Wildner 
395*1370a723SSascha Wildner ///
396*1370a723SSascha Wildner /// Non-Maskable Interrupt Source Structure
397*1370a723SSascha Wildner ///
398*1370a723SSascha Wildner typedef struct {
399*1370a723SSascha Wildner   UINT8   Type;
400*1370a723SSascha Wildner   UINT8   Length;
401*1370a723SSascha Wildner   UINT16  Flags;
402*1370a723SSascha Wildner   UINT32  GlobalSystemInterrupt;
403*1370a723SSascha Wildner } EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
404*1370a723SSascha Wildner 
405*1370a723SSascha Wildner ///
406*1370a723SSascha Wildner /// Local APIC NMI Structure
407*1370a723SSascha Wildner ///
408*1370a723SSascha Wildner typedef struct {
409*1370a723SSascha Wildner   UINT8   Type;
410*1370a723SSascha Wildner   UINT8   Length;
411*1370a723SSascha Wildner   UINT8   AcpiProcessorId;
412*1370a723SSascha Wildner   UINT16  Flags;
413*1370a723SSascha Wildner   UINT8   LocalApicLint;
414*1370a723SSascha Wildner } EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE;
415*1370a723SSascha Wildner 
416*1370a723SSascha Wildner ///
417*1370a723SSascha Wildner /// Local APIC Address Override Structure
418*1370a723SSascha Wildner ///
419*1370a723SSascha Wildner typedef struct {
420*1370a723SSascha Wildner   UINT8   Type;
421*1370a723SSascha Wildner   UINT8   Length;
422*1370a723SSascha Wildner   UINT16  Reserved;
423*1370a723SSascha Wildner   UINT64  LocalApicAddress;
424*1370a723SSascha Wildner } EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
425*1370a723SSascha Wildner 
426*1370a723SSascha Wildner ///
427*1370a723SSascha Wildner /// IO SAPIC Structure
428*1370a723SSascha Wildner ///
429*1370a723SSascha Wildner typedef struct {
430*1370a723SSascha Wildner   UINT8   Type;
431*1370a723SSascha Wildner   UINT8   Length;
432*1370a723SSascha Wildner   UINT8   IoApicId;
433*1370a723SSascha Wildner   UINT8   Reserved;
434*1370a723SSascha Wildner   UINT32  GlobalSystemInterruptBase;
435*1370a723SSascha Wildner   UINT64  IoSapicAddress;
436*1370a723SSascha Wildner } EFI_ACPI_3_0_IO_SAPIC_STRUCTURE;
437*1370a723SSascha Wildner 
438*1370a723SSascha Wildner ///
439*1370a723SSascha Wildner /// Local SAPIC Structure
440*1370a723SSascha Wildner /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
441*1370a723SSascha Wildner ///
442*1370a723SSascha Wildner typedef struct {
443*1370a723SSascha Wildner   UINT8   Type;
444*1370a723SSascha Wildner   UINT8   Length;
445*1370a723SSascha Wildner   UINT8   AcpiProcessorId;
446*1370a723SSascha Wildner   UINT8   LocalSapicId;
447*1370a723SSascha Wildner   UINT8   LocalSapicEid;
448*1370a723SSascha Wildner   UINT8   Reserved[3];
449*1370a723SSascha Wildner   UINT32  Flags;
450*1370a723SSascha Wildner   UINT32  ACPIProcessorUIDValue;
451*1370a723SSascha Wildner } EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
452*1370a723SSascha Wildner 
453*1370a723SSascha Wildner ///
454*1370a723SSascha Wildner /// Platform Interrupt Sources Structure
455*1370a723SSascha Wildner ///
456*1370a723SSascha Wildner typedef struct {
457*1370a723SSascha Wildner   UINT8   Type;
458*1370a723SSascha Wildner   UINT8   Length;
459*1370a723SSascha Wildner   UINT16  Flags;
460*1370a723SSascha Wildner   UINT8   InterruptType;
461*1370a723SSascha Wildner   UINT8   ProcessorId;
462*1370a723SSascha Wildner   UINT8   ProcessorEid;
463*1370a723SSascha Wildner   UINT8   IoSapicVector;
464*1370a723SSascha Wildner   UINT32  GlobalSystemInterrupt;
465*1370a723SSascha Wildner   UINT32  PlatformInterruptSourceFlags;
466*1370a723SSascha Wildner } EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
467*1370a723SSascha Wildner 
468*1370a723SSascha Wildner ///
469*1370a723SSascha Wildner /// Platform Interrupt Source Flags.
470*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0.
471*1370a723SSascha Wildner ///
472*1370a723SSascha Wildner #define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE          BIT0
473*1370a723SSascha Wildner 
474*1370a723SSascha Wildner ///
475*1370a723SSascha Wildner /// Smart Battery Description Table (SBST)
476*1370a723SSascha Wildner ///
477*1370a723SSascha Wildner typedef struct {
478*1370a723SSascha Wildner   EFI_ACPI_DESCRIPTION_HEADER Header;
479*1370a723SSascha Wildner   UINT32                      WarningEnergyLevel;
480*1370a723SSascha Wildner   UINT32                      LowEnergyLevel;
481*1370a723SSascha Wildner   UINT32                      CriticalEnergyLevel;
482*1370a723SSascha Wildner } EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE;
483*1370a723SSascha Wildner 
484*1370a723SSascha Wildner ///
485*1370a723SSascha Wildner /// SBST Version (as defined in ACPI 3.0 spec.)
486*1370a723SSascha Wildner ///
487*1370a723SSascha Wildner #define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
488*1370a723SSascha Wildner 
489*1370a723SSascha Wildner ///
490*1370a723SSascha Wildner /// Embedded Controller Boot Resources Table (ECDT)
491*1370a723SSascha Wildner /// The table is followed by a null terminated ASCII string that contains
492*1370a723SSascha Wildner /// a fully qualified reference to the name space object.
493*1370a723SSascha Wildner ///
494*1370a723SSascha Wildner typedef struct {
495*1370a723SSascha Wildner   EFI_ACPI_DESCRIPTION_HEADER             Header;
496*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
497*1370a723SSascha Wildner   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcData;
498*1370a723SSascha Wildner   UINT32                                  Uid;
499*1370a723SSascha Wildner   UINT8                                   GpeBit;
500*1370a723SSascha Wildner } EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
501*1370a723SSascha Wildner 
502*1370a723SSascha Wildner ///
503*1370a723SSascha Wildner /// ECDT Version (as defined in ACPI 3.0 spec.)
504*1370a723SSascha Wildner ///
505*1370a723SSascha Wildner #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
506*1370a723SSascha Wildner 
507*1370a723SSascha Wildner ///
508*1370a723SSascha Wildner /// System Resource Affinity Table (SRAT.  The rest of the table
509*1370a723SSascha Wildner /// must be defined in a platform specific manner.
510*1370a723SSascha Wildner ///
511*1370a723SSascha Wildner typedef struct {
512*1370a723SSascha Wildner   EFI_ACPI_DESCRIPTION_HEADER Header;
513*1370a723SSascha Wildner   UINT32                      Reserved1;  ///< Must be set to 1
514*1370a723SSascha Wildner   UINT64                      Reserved2;
515*1370a723SSascha Wildner } EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
516*1370a723SSascha Wildner 
517*1370a723SSascha Wildner ///
518*1370a723SSascha Wildner /// SRAT Version (as defined in ACPI 3.0 spec.)
519*1370a723SSascha Wildner ///
520*1370a723SSascha Wildner #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x02
521*1370a723SSascha Wildner 
522*1370a723SSascha Wildner //
523*1370a723SSascha Wildner // SRAT structure types.
524*1370a723SSascha Wildner // All other values between 0x02 an 0xFF are reserved and
525*1370a723SSascha Wildner // will be ignored by OSPM.
526*1370a723SSascha Wildner //
527*1370a723SSascha Wildner #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
528*1370a723SSascha Wildner #define EFI_ACPI_3_0_MEMORY_AFFINITY                      0x01
529*1370a723SSascha Wildner 
530*1370a723SSascha Wildner ///
531*1370a723SSascha Wildner /// Processor Local APIC/SAPIC Affinity Structure Definition
532*1370a723SSascha Wildner ///
533*1370a723SSascha Wildner typedef struct {
534*1370a723SSascha Wildner   UINT8   Type;
535*1370a723SSascha Wildner   UINT8   Length;
536*1370a723SSascha Wildner   UINT8   ProximityDomain7To0;
537*1370a723SSascha Wildner   UINT8   ApicId;
538*1370a723SSascha Wildner   UINT32  Flags;
539*1370a723SSascha Wildner   UINT8   LocalSapicEid;
540*1370a723SSascha Wildner   UINT8   ProximityDomain31To8[3];
541*1370a723SSascha Wildner   UINT8   Reserved[4];
542*1370a723SSascha Wildner } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
543*1370a723SSascha Wildner 
544*1370a723SSascha Wildner ///
545*1370a723SSascha Wildner /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
546*1370a723SSascha Wildner ///
547*1370a723SSascha Wildner #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
548*1370a723SSascha Wildner 
549*1370a723SSascha Wildner ///
550*1370a723SSascha Wildner /// Memory Affinity Structure Definition
551*1370a723SSascha Wildner ///
552*1370a723SSascha Wildner typedef struct {
553*1370a723SSascha Wildner   UINT8   Type;
554*1370a723SSascha Wildner   UINT8   Length;
555*1370a723SSascha Wildner   UINT32  ProximityDomain;
556*1370a723SSascha Wildner   UINT16  Reserved1;
557*1370a723SSascha Wildner   UINT32  AddressBaseLow;
558*1370a723SSascha Wildner   UINT32  AddressBaseHigh;
559*1370a723SSascha Wildner   UINT32  LengthLow;
560*1370a723SSascha Wildner   UINT32  LengthHigh;
561*1370a723SSascha Wildner   UINT32  Reserved2;
562*1370a723SSascha Wildner   UINT32  Flags;
563*1370a723SSascha Wildner   UINT64  Reserved3;
564*1370a723SSascha Wildner } EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE;
565*1370a723SSascha Wildner 
566*1370a723SSascha Wildner //
567*1370a723SSascha Wildner // Memory Flags.  All other bits are reserved and must be 0.
568*1370a723SSascha Wildner //
569*1370a723SSascha Wildner #define EFI_ACPI_3_0_MEMORY_ENABLED       (1 << 0)
570*1370a723SSascha Wildner #define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)
571*1370a723SSascha Wildner #define EFI_ACPI_3_0_MEMORY_NONVOLATILE   (1 << 2)
572*1370a723SSascha Wildner 
573*1370a723SSascha Wildner ///
574*1370a723SSascha Wildner /// System Locality Distance Information Table (SLIT).
575*1370a723SSascha Wildner /// The rest of the table is a matrix.
576*1370a723SSascha Wildner ///
577*1370a723SSascha Wildner typedef struct {
578*1370a723SSascha Wildner   EFI_ACPI_DESCRIPTION_HEADER Header;
579*1370a723SSascha Wildner   UINT64                      NumberOfSystemLocalities;
580*1370a723SSascha Wildner } EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
581*1370a723SSascha Wildner 
582*1370a723SSascha Wildner ///
583*1370a723SSascha Wildner /// SLIT Version (as defined in ACPI 3.0 spec.)
584*1370a723SSascha Wildner ///
585*1370a723SSascha Wildner #define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
586*1370a723SSascha Wildner 
587*1370a723SSascha Wildner //
588*1370a723SSascha Wildner // Known table signatures
589*1370a723SSascha Wildner //
590*1370a723SSascha Wildner 
591*1370a723SSascha Wildner ///
592*1370a723SSascha Wildner /// "RSD PTR " Root System Description Pointer
593*1370a723SSascha Wildner ///
594*1370a723SSascha Wildner #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
595*1370a723SSascha Wildner 
596*1370a723SSascha Wildner ///
597*1370a723SSascha Wildner /// "APIC" Multiple APIC Description Table
598*1370a723SSascha Wildner ///
599*1370a723SSascha Wildner #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
600*1370a723SSascha Wildner 
601*1370a723SSascha Wildner ///
602*1370a723SSascha Wildner /// "DSDT" Differentiated System Description Table
603*1370a723SSascha Wildner ///
604*1370a723SSascha Wildner #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
605*1370a723SSascha Wildner 
606*1370a723SSascha Wildner ///
607*1370a723SSascha Wildner /// "ECDT" Embedded Controller Boot Resources Table
608*1370a723SSascha Wildner ///
609*1370a723SSascha Wildner #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
610*1370a723SSascha Wildner 
611*1370a723SSascha Wildner ///
612*1370a723SSascha Wildner /// "FACP" Fixed ACPI Description Table
613*1370a723SSascha Wildner ///
614*1370a723SSascha Wildner #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
615*1370a723SSascha Wildner 
616*1370a723SSascha Wildner ///
617*1370a723SSascha Wildner /// "FACS" Firmware ACPI Control Structure
618*1370a723SSascha Wildner ///
619*1370a723SSascha Wildner #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
620*1370a723SSascha Wildner 
621*1370a723SSascha Wildner ///
622*1370a723SSascha Wildner /// "PSDT" Persistent System Description Table
623*1370a723SSascha Wildner ///
624*1370a723SSascha Wildner #define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
625*1370a723SSascha Wildner 
626*1370a723SSascha Wildner ///
627*1370a723SSascha Wildner /// "RSDT" Root System Description Table
628*1370a723SSascha Wildner ///
629*1370a723SSascha Wildner #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
630*1370a723SSascha Wildner 
631*1370a723SSascha Wildner ///
632*1370a723SSascha Wildner /// "SBST" Smart Battery Specification Table
633*1370a723SSascha Wildner ///
634*1370a723SSascha Wildner #define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
635*1370a723SSascha Wildner 
636*1370a723SSascha Wildner ///
637*1370a723SSascha Wildner /// "SLIT" System Locality Information Table
638*1370a723SSascha Wildner ///
639*1370a723SSascha Wildner #define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
640*1370a723SSascha Wildner 
641*1370a723SSascha Wildner ///
642*1370a723SSascha Wildner /// "SRAT" System Resource Affinity Table
643*1370a723SSascha Wildner ///
644*1370a723SSascha Wildner #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
645*1370a723SSascha Wildner 
646*1370a723SSascha Wildner ///
647*1370a723SSascha Wildner /// "SSDT" Secondary System Description Table
648*1370a723SSascha Wildner ///
649*1370a723SSascha Wildner #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
650*1370a723SSascha Wildner 
651*1370a723SSascha Wildner ///
652*1370a723SSascha Wildner /// "XSDT" Extended System Description Table
653*1370a723SSascha Wildner ///
654*1370a723SSascha Wildner #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
655*1370a723SSascha Wildner 
656*1370a723SSascha Wildner ///
657*1370a723SSascha Wildner /// "BOOT" MS Simple Boot Spec
658*1370a723SSascha Wildner ///
659*1370a723SSascha Wildner #define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
660*1370a723SSascha Wildner 
661*1370a723SSascha Wildner ///
662*1370a723SSascha Wildner /// "CPEP" Corrected Platform Error Polling Table
663*1370a723SSascha Wildner ///
664*1370a723SSascha Wildner #define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
665*1370a723SSascha Wildner 
666*1370a723SSascha Wildner ///
667*1370a723SSascha Wildner /// "DBGP" MS Debug Port Spec
668*1370a723SSascha Wildner ///
669*1370a723SSascha Wildner #define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
670*1370a723SSascha Wildner 
671*1370a723SSascha Wildner ///
672*1370a723SSascha Wildner /// "ETDT" Event Timer Description Table
673*1370a723SSascha Wildner ///
674*1370a723SSascha Wildner #define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
675*1370a723SSascha Wildner 
676*1370a723SSascha Wildner ///
677*1370a723SSascha Wildner /// "HPET" IA-PC High Precision Event Timer Table
678*1370a723SSascha Wildner ///
679*1370a723SSascha Wildner #define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
680*1370a723SSascha Wildner 
681*1370a723SSascha Wildner ///
682*1370a723SSascha Wildner /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
683*1370a723SSascha Wildner ///
684*1370a723SSascha Wildner #define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
685*1370a723SSascha Wildner 
686*1370a723SSascha Wildner ///
687*1370a723SSascha Wildner /// "SPCR" Serial Port Console Redirection Table
688*1370a723SSascha Wildner ///
689*1370a723SSascha Wildner #define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
690*1370a723SSascha Wildner 
691*1370a723SSascha Wildner ///
692*1370a723SSascha Wildner /// "SPMI" Server Platform Management Interface Table
693*1370a723SSascha Wildner ///
694*1370a723SSascha Wildner #define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
695*1370a723SSascha Wildner 
696*1370a723SSascha Wildner ///
697*1370a723SSascha Wildner /// "TCPA" Trusted Computing Platform Alliance Capabilities Table
698*1370a723SSascha Wildner ///
699*1370a723SSascha Wildner #define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
700*1370a723SSascha Wildner 
701*1370a723SSascha Wildner ///
702*1370a723SSascha Wildner /// "WDRT" Watchdog Resource Table
703*1370a723SSascha Wildner ///
704*1370a723SSascha Wildner #define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
705*1370a723SSascha Wildner 
706*1370a723SSascha Wildner ///
707*1370a723SSascha Wildner /// "WDAT" Watchdog Action Table
708*1370a723SSascha Wildner ///
709*1370a723SSascha Wildner #define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
710*1370a723SSascha Wildner 
711*1370a723SSascha Wildner ///
712*1370a723SSascha Wildner /// "WSPT" Windows Specific Properties Table
713*1370a723SSascha Wildner ///
714*1370a723SSascha Wildner #define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE  SIGNATURE_32('W', 'S', 'P', 'T')
715*1370a723SSascha Wildner 
716*1370a723SSascha Wildner ///
717*1370a723SSascha Wildner /// "iBFT" iSCSI Boot Firmware Table
718*1370a723SSascha Wildner ///
719*1370a723SSascha Wildner #define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
720*1370a723SSascha Wildner 
721*1370a723SSascha Wildner #pragma pack()
722*1370a723SSascha Wildner 
723*1370a723SSascha Wildner #endif
724