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