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