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