]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/Include/IndustryStandard/Acpi2_0.h
License header updated to match correct format.
[mirror_edk2.git] / BaseTools / Source / C / Include / IndustryStandard / Acpi2_0.h
CommitLineData
30fdf114
LG
1/** @file\r
2 ACPI 2.0 definitions from the ACPI Specification, revision 2.0\r
3\r
97fa0ee9 4 Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
30fdf114
LG
5\r
6 This program and the accompanying materials are licensed and made available\r
7 under the terms and conditions of the BSD License which accompanies this\r
97fa0ee9 8 distribution. The full text of the license may be found at\r
30fdf114
LG
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
30fdf114
LG
14**/\r
15\r
16#ifndef _ACPI_2_0_H_\r
17#define _ACPI_2_0_H_\r
18\r
19#include "IndustryStandard/Acpi.h"\r
20\r
21//\r
22// Ensure proper structure formats\r
23//\r
24#pragma pack(1)\r
25//\r
26// ACPI Specification Revision\r
27//\r
28#define EFI_ACPI_2_0_REVISION 0x02\r
29\r
30//\r
31// BUGBUG: OEM values need to be moved somewhere else, probably read from data hub\r
32// and produced by a platform specific driver.\r
33//\r
34//\r
35// ACPI OEM ID\r
36//\r
37#define EFI_ACPI_2_0_OEM_ID "INTEL "\r
38#define EFI_ACPI_2_0_OEM_TABLE_ID 0x5034303738543245 // "E2T8704P"\r
39//\r
40// ACPI OEM Revision\r
41//\r
42#define EFI_ACPI_2_0_OEM_REVISION 0x00000002\r
43\r
44//\r
45// ACPI table creator ID\r
46//\r
47#define EFI_ACPI_2_0_CREATOR_ID 0x5446534D // TBD "MSFT"\r
48//\r
49// ACPI table creator revision\r
50//\r
51#define EFI_ACPI_2_0_CREATOR_REVISION 0x01000013 // TBD\r
52//\r
53// ACPI 2.0 Generic Address Space definition\r
54//\r
55typedef struct {\r
56 UINT8 AddressSpaceId;\r
57 UINT8 RegisterBitWidth;\r
58 UINT8 RegisterBitOffset;\r
59 UINT8 Reserved;\r
60 UINT64 Address;\r
61} EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE;\r
62\r
63//\r
64// Generic Address Space Address IDs\r
65//\r
66#define EFI_ACPI_2_0_SYSTEM_MEMORY 0\r
67#define EFI_ACPI_2_0_SYSTEM_IO 1\r
68#define EFI_ACPI_2_0_PCI_CONFIGURATION_SPACE 2\r
69#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER 3\r
70#define EFI_ACPI_2_0_SMBUS 4\r
71#define EFI_ACPI_2_0_FUNCTIONAL_FIXED_HARDWARE 0x7F\r
72\r
73//\r
74// ACPI 2.0 table structures\r
75//\r
76//\r
77// Root System Description Pointer Structure\r
78//\r
79typedef struct {\r
80 UINT64 Signature;\r
81 UINT8 Checksum;\r
82 UINT8 OemId[6];\r
83 UINT8 Revision;\r
84 UINT32 RsdtAddress;\r
85 UINT32 Length;\r
86 UINT64 XsdtAddress;\r
87 UINT8 ExtendedChecksum;\r
88 UINT8 Reserved[3];\r
89} EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER;\r
90\r
91//\r
92// RSD_PTR Revision (as defined in ACPI 2.0 spec.)\r
93//\r
94#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02\r
95\r
96//\r
97// Common table header, this prefaces all ACPI tables, including FACS, but\r
98// excluding the RSD PTR structure\r
99//\r
100typedef struct {\r
101 UINT32 Signature;\r
102 UINT32 Length;\r
103} EFI_ACPI_2_0_COMMON_HEADER;\r
104\r
105//\r
106// Root System Description Table\r
107// No definition needed as it is a common description table header followed by a\r
108// variable number of UINT32 table pointers.\r
109//\r
110//\r
111// RSDT Revision (as defined in ACPI 2.0 spec.)\r
112//\r
113#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
114\r
115//\r
116// Extended System Description Table\r
117// No definition needed as it is a common description table header followed by a\r
118// variable number of UINT64 table pointers.\r
119//\r
120//\r
121// XSDT Revision (as defined in ACPI 2.0 spec.)\r
122//\r
123#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
124\r
125//\r
126// Fixed ACPI Description Table Structure (FADT)\r
127//\r
128typedef struct {\r
129 EFI_ACPI_DESCRIPTION_HEADER Header;\r
130 UINT32 FirmwareCtrl;\r
131 UINT32 Dsdt;\r
132 UINT8 Reserved0;\r
133 UINT8 PreferredPmProfile;\r
134 UINT16 SciInt;\r
135 UINT32 SmiCmd;\r
136 UINT8 AcpiEnable;\r
137 UINT8 AcpiDisable;\r
138 UINT8 S4BiosReq;\r
139 UINT8 PstateCnt;\r
140 UINT32 Pm1aEvtBlk;\r
141 UINT32 Pm1bEvtBlk;\r
142 UINT32 Pm1aCntBlk;\r
143 UINT32 Pm1bCntBlk;\r
144 UINT32 Pm2CntBlk;\r
145 UINT32 PmTmrBlk;\r
146 UINT32 Gpe0Blk;\r
147 UINT32 Gpe1Blk;\r
148 UINT8 Pm1EvtLen;\r
149 UINT8 Pm1CntLen;\r
150 UINT8 Pm2CntLen;\r
151 UINT8 PmTmrLen;\r
152 UINT8 Gpe0BlkLen;\r
153 UINT8 Gpe1BlkLen;\r
154 UINT8 Gpe1Base;\r
155 UINT8 CstCnt;\r
156 UINT16 PLvl2Lat;\r
157 UINT16 PLvl3Lat;\r
158 UINT16 FlushSize;\r
159 UINT16 FlushStride;\r
160 UINT8 DutyOffset;\r
161 UINT8 DutyWidth;\r
162 UINT8 DayAlrm;\r
163 UINT8 MonAlrm;\r
164 UINT8 Century;\r
165 UINT16 IaPcBootArch;\r
166 UINT8 Reserved1;\r
167 UINT32 Flags;\r
168 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE ResetReg;\r
169 UINT8 ResetValue;\r
170 UINT8 Reserved2[3];\r
171 UINT64 XFirmwareCtrl;\r
172 UINT64 XDsdt;\r
173 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;\r
174 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;\r
175 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;\r
176 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;\r
177 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;\r
178 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;\r
179 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;\r
180 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;\r
181} EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
182\r
183//\r
184// FADT Version (as defined in ACPI 2.0 spec.)\r
185//\r
186#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x03\r
187\r
188//\r
189// Fixed ACPI Description Table Boot Architecture Flags\r
190// All other bits are reserved and must be set to 0.\r
191//\r
192#define EFI_ACPI_2_0_LEGACY_DEVICES (1 << 0)\r
193#define EFI_ACPI_2_0_8042 (1 << 1)\r
194\r
195//\r
196// Fixed ACPI Description Table Fixed Feature Flags\r
197// All other bits are reserved and must be set to 0.\r
198//\r
199#define EFI_ACPI_2_0_WBINVD (1 << 0)\r
200#define EFI_ACPI_2_0_WBINVD_FLUSH (1 << 1)\r
201#define EFI_ACPI_2_0_PROC_C1 (1 << 2)\r
202#define EFI_ACPI_2_0_P_LVL2_UP (1 << 3)\r
203#define EFI_ACPI_2_0_PWR_BUTTON (1 << 4)\r
204#define EFI_ACPI_2_0_SLP_BUTTON (1 << 5)\r
205#define EFI_ACPI_2_0_FIX_RTC (1 << 6)\r
206#define EFI_ACPI_2_0_RTC_S4 (1 << 7)\r
207#define EFI_ACPI_2_0_TMR_VAL_EXT (1 << 8)\r
208#define EFI_ACPI_2_0_DCK_CAP (1 << 9)\r
209#define EFI_ACPI_2_0_RESET_REG_SUP (1 << 10)\r
210#define EFI_ACPI_2_0_SEALED_CASE (1 << 11)\r
211#define EFI_ACPI_2_0_HEADLESS (1 << 12)\r
212#define EFI_ACPI_2_0_CPU_SW_SLP (1 << 13)\r
213\r
214//\r
215// Firmware ACPI Control Structure\r
216//\r
217typedef struct {\r
218 UINT32 Signature;\r
219 UINT32 Length;\r
220 UINT32 HardwareSignature;\r
221 UINT32 FirmwareWakingVector;\r
222 UINT32 GlobalLock;\r
223 UINT32 Flags;\r
224 UINT64 XFirmwareWakingVector;\r
225 UINT8 Version;\r
226 UINT8 Reserved[31];\r
227} EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
228\r
229//\r
230// FACS Version (as defined in ACPI 2.0 spec.)\r
231//\r
232#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01\r
233\r
234//\r
235// Firmware Control Structure Feature Flags\r
236// All other bits are reserved and must be set to 0.\r
237//\r
238#define EFI_ACPI_2_0_S4BIOS_F (1 << 0)\r
239\r
240//\r
241// Multiple APIC Description Table header definition. The rest of the table\r
242// must be defined in a platform specific manner.\r
243//\r
244typedef struct {\r
245 EFI_ACPI_DESCRIPTION_HEADER Header;\r
246 UINT32 LocalApicAddress;\r
247 UINT32 Flags;\r
248} EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
249\r
250//\r
251// MADT Revision (as defined in ACPI 2.0 spec.)\r
252//\r
253#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01\r
254\r
255//\r
256// Multiple APIC Flags\r
257// All other bits are reserved and must be set to 0.\r
258//\r
259#define EFI_ACPI_2_0_PCAT_COMPAT (1 << 0)\r
260\r
261//\r
262// Multiple APIC Description Table APIC structure types\r
263// All other values between 0x09 an 0xFF are reserved and\r
264// will be ignored by OSPM.\r
265//\r
266#define EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC 0x00\r
267#define EFI_ACPI_2_0_IO_APIC 0x01\r
268#define EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE 0x02\r
269#define EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03\r
270#define EFI_ACPI_2_0_LOCAL_APIC_NMI 0x04\r
271#define EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05\r
272#define EFI_ACPI_2_0_IO_SAPIC 0x06\r
273#define EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC 0x07\r
274#define EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES 0x08\r
275\r
276//\r
277// APIC Structure Definitions\r
278//\r
279//\r
280// Processor Local APIC Structure Definition\r
281//\r
282typedef struct {\r
283 UINT8 Type;\r
284 UINT8 Length;\r
285 UINT8 AcpiProcessorId;\r
286 UINT8 ApicId;\r
287 UINT32 Flags;\r
288} EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE;\r
289\r
290//\r
291// Local APIC Flags. All other bits are reserved and must be 0.\r
292//\r
293#define EFI_ACPI_2_0_LOCAL_APIC_ENABLED (1 << 0)\r
294\r
295//\r
296// IO APIC Structure\r
297//\r
298typedef struct {\r
299 UINT8 Type;\r
300 UINT8 Length;\r
301 UINT8 IoApicId;\r
302 UINT8 Reserved;\r
303 UINT32 IoApicAddress;\r
304 UINT32 GlobalSystemInterruptBase;\r
305} EFI_ACPI_2_0_IO_APIC_STRUCTURE;\r
306\r
307//\r
308// Interrupt Source Override Structure\r
309//\r
310typedef struct {\r
311 UINT8 Type;\r
312 UINT8 Length;\r
313 UINT8 Bus;\r
314 UINT8 Source;\r
315 UINT32 GlobalSystemInterrupt;\r
316 UINT16 Flags;\r
317} EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
318\r
319//\r
320// Non-Maskable Interrupt Source Structure\r
321//\r
322typedef struct {\r
323 UINT8 Type;\r
324 UINT8 Length;\r
325 UINT16 Flags;\r
326 UINT32 GlobalSystemInterrupt;\r
327} EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
328\r
329//\r
330// Local APIC NMI Structure\r
331//\r
332typedef struct {\r
333 UINT8 Type;\r
334 UINT8 Length;\r
335 UINT8 AcpiProcessorId;\r
336 UINT16 Flags;\r
337 UINT8 LocalApicLint;\r
338} EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE;\r
339\r
340//\r
341// Local APIC Address Override Structure\r
342//\r
343typedef struct {\r
344 UINT8 Type;\r
345 UINT8 Length;\r
346 UINT16 Reserved;\r
347 UINT64 LocalApicAddress;\r
348} EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;\r
349\r
350//\r
351// IO SAPIC Structure\r
352//\r
353typedef struct {\r
354 UINT8 Type;\r
355 UINT8 Length;\r
356 UINT8 IoApicId;\r
357 UINT8 Reserved;\r
358 UINT32 GlobalSystemInterruptBase;\r
359 UINT64 IoSapicAddress;\r
360} EFI_ACPI_2_0_IO_SAPIC_STRUCTURE;\r
361\r
362//\r
363// Local SAPIC Structure\r
364//\r
365typedef struct {\r
366 UINT8 Type;\r
367 UINT8 Length;\r
368 UINT8 AcpiProcessorId;\r
369 UINT8 LocalSapicId;\r
370 UINT8 LocalSapicEid;\r
371 UINT8 Reserved[3];\r
372 UINT32 Flags;\r
373} EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;\r
374\r
375//\r
376// Platform Interrupt Sources Structure\r
377//\r
378typedef struct {\r
379 UINT8 Type;\r
380 UINT8 Length;\r
381 UINT16 Flags;\r
382 UINT8 InterruptType;\r
383 UINT8 ProcessorId;\r
384 UINT8 ProcessorEid;\r
385 UINT8 IoSapicVector;\r
386 UINT32 GlobalSystemInterrupt;\r
387 UINT32 Reserved;\r
388} EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;\r
389\r
390//\r
391// Smart Battery Description Table (SBST)\r
392//\r
393typedef struct {\r
394 EFI_ACPI_DESCRIPTION_HEADER Header;\r
395 UINT32 WarningEnergyLevel;\r
396 UINT32 LowEnergyLevel;\r
397 UINT32 CriticalEnergyLevel;\r
398} EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE;\r
399\r
400//\r
401// SBST Version (as defined in ACPI 2.0 spec.)\r
402//\r
403#define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01\r
404\r
405//\r
406// Embedded Controller Boot Resources Table (ECDT)\r
407// The table is followed by a null terminated ASCII string that contains\r
408// a fully qualified reference to the name space object.\r
409//\r
410typedef struct {\r
411 EFI_ACPI_DESCRIPTION_HEADER Header;\r
412 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcControl;\r
413 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcData;\r
414 UINT32 Uid;\r
415 UINT8 GpeBit;\r
416} EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;\r
417\r
418//\r
419// ECDT Version (as defined in ACPI 2.0 spec.)\r
420//\r
421#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01\r
422\r
423//\r
424// Known table signatures\r
425//\r
426//\r
427// "RSD PTR " Root System Description Pointer\r
428//\r
429#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE 0x2052545020445352\r
430\r
431//\r
432// "SPIC" Multiple SAPIC Description Table\r
433//\r
434// BUGBUG: Don't know where this came from except SR870BN4 uses it.\r
435// #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495053\r
436//\r
437#define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495041\r
438\r
439//\r
440// "BOOT" MS Simple Boot Spec\r
441//\r
442#define EFI_ACPI_2_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE 0x544F4F42\r
443\r
444//\r
445// "DBGP" MS Bebug Port Spec\r
446//\r
447#define EFI_ACPI_2_0_DEBUG_PORT_TABLE_SIGNATURE 0x50474244\r
448\r
449//\r
450// "DSDT" Differentiated System Description Table\r
451//\r
452#define EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445344\r
453\r
454//\r
455// "ECDT" Embedded Controller Boot Resources Table\r
456//\r
457#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE 0x54444345\r
458\r
459//\r
460// "ETDT" Event Timer Description Table\r
461//\r
462#define EFI_ACPI_2_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE 0x54445445\r
463\r
464//\r
465// "FACS" Firmware ACPI Control Structure\r
466//\r
467#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE 0x53434146\r
468\r
469//\r
470// "FACP" Fixed ACPI Description Table\r
471//\r
472#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE 0x50434146\r
473\r
474//\r
475// "APIC" Multiple APIC Description Table\r
476//\r
477#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE 0x43495041\r
478\r
479//\r
480// "PSDT" Persistent System Description Table\r
481//\r
482#define EFI_ACPI_2_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445350\r
483\r
484//\r
485// "RSDT" Root System Description Table\r
486//\r
487#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445352\r
488\r
489//\r
490// "SBST" Smart Battery Specification Table\r
491//\r
492#define EFI_ACPI_2_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE 0x54534253\r
493\r
494//\r
495// "SLIT" System Locality Information Table\r
496//\r
497#define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE 0x54494C53\r
498\r
499//\r
500// "SPCR" Serial Port Concole Redirection Table\r
501//\r
502#define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE 0x52435053\r
503\r
504//\r
505// "SRAT" Static Resource Affinity Table\r
506//\r
507#define EFI_ACPI_2_0_STATIC_RESOURCE_AFFINITY_TABLE_SIGNATURE 0x54415253\r
508\r
509//\r
510// "SSDT" Secondary System Description Table\r
511//\r
512#define EFI_ACPI_2_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445353\r
513\r
514//\r
515// "SPMI" Server Platform Management Interface Table\r
516//\r
517#define EFI_ACPI_2_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_SIGNATURE 0x494D5053\r
518\r
519//\r
520// "XSDT" Extended System Description Table\r
521//\r
522#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445358\r
523\r
524#pragma pack()\r
525\r
526#endif\r