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