]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/Acpi10.h
added EFI_SIGNATURE_XX in Base.h, and updated the industry header files to use them.
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi10.h
1 /** @file
2 ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
3
4 Copyright (c) 2006 - 2008, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 **/
13
14 #ifndef _ACPI_1_0_H_
15 #define _ACPI_1_0_H_
16
17 ///
18 /// Common table header, this prefaces all ACPI tables, including FACS, but
19 /// excluding the RSD PTR structure
20 ///
21 typedef struct {
22 UINT32 Signature;
23 UINT32 Length;
24 } EFI_ACPI_COMMON_HEADER;
25
26 //
27 // Common ACPI description table header. This structure prefaces most ACPI tables.
28 //
29 #pragma pack(1)
30
31 typedef struct {
32 UINT32 Signature;
33 UINT32 Length;
34 UINT8 Revision;
35 UINT8 Checksum;
36 UINT8 OemId[6];
37 UINT64 OemTableId;
38 UINT32 OemRevision;
39 UINT32 CreatorId;
40 UINT32 CreatorRevision;
41 } EFI_ACPI_DESCRIPTION_HEADER;
42
43 #pragma pack()
44 //
45 // Define for Desriptor
46 //
47 #define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A
48 #define ACPI_END_TAG_DESCRIPTOR 0x79
49
50 //
51 // Resource Type
52 //
53 #define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00
54 #define ACPI_ADDRESS_SPACE_TYPE_IO 0x01
55 #define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02
56
57 ///
58 /// Power Management Timer frequency is fixed at 3.579545MHz
59 ///
60 #define ACPI_TIMER_FREQUENCY 3579545
61
62 //
63 // Ensure proper structure formats
64 //
65 #pragma pack(1)
66 //
67 // The commond definition of QWORD, DWORD, and WORD
68 // Address Space Descriptors
69 //
70 typedef struct {
71 UINT8 Desc;
72 UINT16 Len;
73 UINT8 ResType;
74 UINT8 GenFlag;
75 UINT8 SpecificFlag;
76 UINT64 AddrSpaceGranularity;
77 UINT64 AddrRangeMin;
78 UINT64 AddrRangeMax;
79 UINT64 AddrTranslationOffset;
80 UINT64 AddrLen;
81 } EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;
82
83 #pragma pack()
84
85 typedef struct {
86 UINT8 Desc;
87 UINT8 Checksum;
88 } EFI_ACPI_END_TAG_DESCRIPTOR;
89
90 //
91 // General use definitions
92 //
93 #define EFI_ACPI_RESERVED_BYTE 0x00
94 #define EFI_ACPI_RESERVED_WORD 0x0000
95 #define EFI_ACPI_RESERVED_DWORD 0x00000000
96 #define EFI_ACPI_RESERVED_QWORD 0x0000000000000000
97
98 //
99 // Resource Type Specific Flags
100 // Ref ACPI specification 6.4.3.5.5
101 //
102 // Bit [0] : Write Status, _RW
103 //
104 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)
105 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)
106 //
107 // Bit [2:1] : Memory Attributes, _MEM
108 //
109 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)
110 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)
111 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)
112 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)
113 //
114 // Bit [4:3] : Memory Attributes, _MTP
115 //
116 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)
117 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)
118 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)
119 #define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)
120 //
121 // Bit [5] : Memory to I/O Translation, _TTP
122 //
123 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)
124 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)
125
126 //
127 // Ensure proper structure formats
128 //
129 #pragma pack(1)
130 //
131 // ACPI 1.0b table structures
132 //
133
134 ///
135 /// Root System Description Pointer Structure
136 ///
137 typedef struct {
138 UINT64 Signature;
139 UINT8 Checksum;
140 UINT8 OemId[6];
141 UINT8 Reserved;
142 UINT32 RsdtAddress;
143 } EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
144
145 //
146 // Root System Description Table
147 // No definition needed as it is a common description table header, the same with
148 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
149 //
150
151 ///
152 /// RSDT Revision (as defined in ACPI 1.0b spec.)
153 ///
154 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
155
156 ///
157 /// Fixed ACPI Description Table Structure (FADT)
158 ///
159 typedef struct {
160 EFI_ACPI_DESCRIPTION_HEADER Header;
161 UINT32 FirmwareCtrl;
162 UINT32 Dsdt;
163 UINT8 IntModel;
164 UINT8 Reserved1;
165 UINT16 SciInt;
166 UINT32 SmiCmd;
167 UINT8 AcpiEnable;
168 UINT8 AcpiDisable;
169 UINT8 S4BiosReq;
170 UINT8 Reserved2;
171 UINT32 Pm1aEvtBlk;
172 UINT32 Pm1bEvtBlk;
173 UINT32 Pm1aCntBlk;
174 UINT32 Pm1bCntBlk;
175 UINT32 Pm2CntBlk;
176 UINT32 PmTmrBlk;
177 UINT32 Gpe0Blk;
178 UINT32 Gpe1Blk;
179 UINT8 Pm1EvtLen;
180 UINT8 Pm1CntLen;
181 UINT8 Pm2CntLen;
182 UINT8 PmTmLen;
183 UINT8 Gpe0BlkLen;
184 UINT8 Gpe1BlkLen;
185 UINT8 Gpe1Base;
186 UINT8 Reserved3;
187 UINT16 PLvl2Lat;
188 UINT16 PLvl3Lat;
189 UINT16 FlushSize;
190 UINT16 FlushStride;
191 UINT8 DutyOffset;
192 UINT8 DutyWidth;
193 UINT8 DayAlrm;
194 UINT8 MonAlrm;
195 UINT8 Century;
196 UINT8 Reserved4;
197 UINT8 Reserved5;
198 UINT8 Reserved6;
199 UINT32 Flags;
200 } EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;
201
202 ///
203 /// FADT Version (as defined in ACPI 1.0b spec.)
204 ///
205 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01
206
207 //
208 // Fixed ACPI Description Table Fixed Feature Flags
209 // All other bits are reserved and must be set to 0.
210 //
211 #define EFI_ACPI_1_0_WBINVD (1 << 0)
212 #define EFI_ACPI_1_0_WBINVD_FLUSH (1 << 1)
213 #define EFI_ACPI_1_0_PROC_C1 (1 << 2)
214 #define EFI_ACPI_1_0_P_LVL2_UP (1 << 3)
215 #define EFI_ACPI_1_0_PWR_BUTTON (1 << 4)
216 #define EFI_ACPI_1_0_SLP_BUTTON (1 << 5)
217 #define EFI_ACPI_1_0_FIX_RTC (1 << 6)
218 #define EFI_ACPI_1_0_RTC_S4 (1 << 7)
219 #define EFI_ACPI_1_0_TMR_VAL_EXT (1 << 8)
220 #define EFI_ACPI_1_0_DCK_CAP (1 << 9)
221
222 ///
223 /// Firmware ACPI Control Structure
224 ///
225 typedef struct {
226 UINT32 Signature;
227 UINT32 Length;
228 UINT32 HardwareSignature;
229 UINT32 FirmwareWakingVector;
230 UINT32 GlobalLock;
231 UINT32 Flags;
232 UINT8 Reserved[40];
233 } EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
234
235 ///
236 /// Firmware Control Structure Feature Flags
237 /// All other bits are reserved and must be set to 0.
238 ///
239 #define EFI_ACPI_1_0_S4BIOS_F (1 << 0)
240
241 ///
242 /// Multiple APIC Description Table header definition. The rest of the table
243 /// must be defined in a platform specific manner.
244 ///
245 typedef struct {
246 EFI_ACPI_DESCRIPTION_HEADER Header;
247 UINT32 LocalApicAddress;
248 UINT32 Flags;
249 } EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
250
251 ///
252 /// MADT Revision (as defined in ACPI 1.0b spec.)
253 ///
254 #define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
255
256 ///
257 /// Multiple APIC Flags
258 /// All other bits are reserved and must be set to 0.
259 ///
260 #define EFI_ACPI_1_0_PCAT_COMPAT (1 << 0)
261
262 //
263 // Multiple APIC Description Table APIC structure types
264 // All other values between 0x05 an 0xFF are reserved and
265 // will be ignored by OSPM.
266 //
267 #define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00
268 #define EFI_ACPI_1_0_IO_APIC 0x01
269 #define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02
270 #define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
271 #define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04
272
273 //
274 // APIC Structure Definitions
275 //
276
277 ///
278 /// Processor Local APIC Structure Definition
279 ///
280 typedef struct {
281 UINT8 Type;
282 UINT8 Length;
283 UINT8 AcpiProcessorId;
284 UINT8 ApicId;
285 UINT32 Flags;
286 } EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
287
288 ///
289 /// Local APIC Flags. All other bits are reserved and must be 0.
290 ///
291 #define EFI_ACPI_1_0_LOCAL_APIC_ENABLED (1 << 0)
292
293 ///
294 /// IO APIC Structure
295 ///
296 typedef struct {
297 UINT8 Type;
298 UINT8 Length;
299 UINT8 IoApicId;
300 UINT8 Reserved;
301 UINT32 IoApicAddress;
302 UINT32 SystemVectorBase;
303 } EFI_ACPI_1_0_IO_APIC_STRUCTURE;
304
305 ///
306 /// Interrupt Source Override Structure
307 ///
308 typedef struct {
309 UINT8 Type;
310 UINT8 Length;
311 UINT8 Bus;
312 UINT8 Source;
313 UINT32 GlobalSystemInterruptVector;
314 UINT16 Flags;
315 } EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
316
317 ///
318 /// Non-Maskable Interrupt Source Structure
319 ///
320 typedef struct {
321 UINT8 Type;
322 UINT8 Length;
323 UINT16 Flags;
324 UINT32 GlobalSystemInterruptVector;
325 } EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
326
327 ///
328 /// Local APIC NMI Structure
329 ///
330 typedef struct {
331 UINT8 Type;
332 UINT8 Length;
333 UINT8 AcpiProcessorId;
334 UINT16 Flags;
335 UINT8 LocalApicInti;
336 } EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;
337
338 ///
339 /// Smart Battery Description Table (SBST)
340 ///
341 typedef struct {
342 EFI_ACPI_DESCRIPTION_HEADER Header;
343 UINT32 WarningEnergyLevel;
344 UINT32 LowEnergyLevel;
345 UINT32 CriticalEnergyLevel;
346 } EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;
347
348 //
349 // Known table signatures
350 //
351
352 ///
353 /// "RSD PTR " Root System Description Pointer
354 ///
355 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
356
357 ///
358 /// "APIC" Multiple APIC Description Table
359 ///
360 #define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
361
362 ///
363 /// "DSDT" Differentiated System Description Table
364 ///
365 #define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
366
367 ///
368 /// "FACS" Firmware ACPI Control Structure
369 ///
370 #define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
371
372 ///
373 /// "FACP" Fixed ACPI Description Table
374 ///
375 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
376
377 ///
378 /// "PSDT" Persistent System Description Table
379 ///
380 #define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
381
382 ///
383 /// "RSDT" Root System Description Table
384 ///
385 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
386
387 ///
388 /// "SBST" Smart Battery Specification Table
389 ///
390 #define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
391
392 ///
393 /// "SSDT" Secondary System Description Table
394 ///
395 #define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
396
397 #pragma pack()
398
399 #endif