Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h
48291 views
1
/** @file
2
ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
3
4
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5
Copyright (c) 2020, Arm Limited. All rights reserved.<BR>
6
SPDX-License-Identifier: BSD-2-Clause-Patent
7
**/
8
9
#ifndef _ACPI_1_0_H_
10
#define _ACPI_1_0_H_
11
12
#include <IndustryStandard/AcpiAml.h>
13
14
///
15
/// Common table header, this prefaces all ACPI tables, including FACS, but
16
/// excluding the RSD PTR structure.
17
///
18
typedef struct {
19
UINT32 Signature;
20
UINT32 Length;
21
} EFI_ACPI_COMMON_HEADER;
22
23
#pragma pack(1)
24
///
25
/// The common ACPI description table header. This structure prefaces most ACPI tables.
26
///
27
typedef struct {
28
UINT32 Signature;
29
UINT32 Length;
30
UINT8 Revision;
31
UINT8 Checksum;
32
UINT8 OemId[6];
33
UINT64 OemTableId;
34
UINT32 OemRevision;
35
UINT32 CreatorId;
36
UINT32 CreatorRevision;
37
} EFI_ACPI_DESCRIPTION_HEADER;
38
#pragma pack()
39
40
//
41
// Define for Descriptor
42
//
43
#define ACPI_SMALL_ITEM_FLAG 0x00
44
#define ACPI_LARGE_ITEM_FLAG 0x01
45
46
//
47
// Small Item Descriptor Name
48
//
49
#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04
50
#define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05
51
#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06
52
#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07
53
#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08
54
#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09
55
#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E
56
#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F
57
58
//
59
// Large Item Descriptor Name
60
//
61
#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01
62
#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04
63
#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05
64
#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06
65
#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07
66
#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08
67
#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09
68
#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A
69
70
//
71
// Small Item Descriptor Value
72
//
73
#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22
74
#define ACPI_IRQ_DESCRIPTOR 0x23
75
#define ACPI_DMA_DESCRIPTOR 0x2A
76
#define ACPI_START_DEPENDENT_DESCRIPTOR 0x30
77
#define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31
78
#define ACPI_END_DEPENDENT_DESCRIPTOR 0x38
79
#define ACPI_IO_PORT_DESCRIPTOR 0x47
80
#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B
81
#define ACPI_END_TAG_DESCRIPTOR 0x79
82
83
//
84
// Large Item Descriptor Value
85
//
86
#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81
87
#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85
88
#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86
89
#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87
90
#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88
91
#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89
92
#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A
93
#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A
94
95
//
96
// Resource Type
97
//
98
#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00
99
#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01
100
#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02
101
102
///
103
/// Power Management Timer frequency is fixed at 3.579545MHz.
104
///
105
#define ACPI_TIMER_FREQUENCY 3579545
106
107
//
108
// Ensure proper structure formats
109
//
110
#pragma pack(1)
111
112
///
113
/// The common definition of QWORD, DWORD, and WORD
114
/// Address Space Descriptors.
115
///
116
typedef PACKED struct {
117
UINT8 Desc;
118
UINT16 Len;
119
UINT8 ResType;
120
UINT8 GenFlag;
121
UINT8 SpecificFlag;
122
UINT64 AddrSpaceGranularity;
123
UINT64 AddrRangeMin;
124
UINT64 AddrRangeMax;
125
UINT64 AddrTranslationOffset;
126
UINT64 AddrLen;
127
} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;
128
129
typedef PACKED union {
130
UINT8 Byte;
131
PACKED struct {
132
UINT8 Length : 3;
133
UINT8 Name : 4;
134
UINT8 Type : 1;
135
} Bits;
136
} ACPI_SMALL_RESOURCE_HEADER;
137
138
typedef PACKED struct {
139
PACKED union {
140
UINT8 Byte;
141
PACKED struct {
142
UINT8 Name : 7;
143
UINT8 Type : 1;
144
} Bits;
145
} Header;
146
UINT16 Length;
147
} ACPI_LARGE_RESOURCE_HEADER;
148
149
///
150
/// IRQ Descriptor.
151
///
152
typedef PACKED struct {
153
ACPI_SMALL_RESOURCE_HEADER Header;
154
UINT16 Mask;
155
} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;
156
157
///
158
/// IRQ Descriptor.
159
///
160
typedef PACKED struct {
161
ACPI_SMALL_RESOURCE_HEADER Header;
162
UINT16 Mask;
163
UINT8 Information;
164
} EFI_ACPI_IRQ_DESCRIPTOR;
165
166
///
167
/// DMA Descriptor.
168
///
169
typedef PACKED struct {
170
ACPI_SMALL_RESOURCE_HEADER Header;
171
UINT8 ChannelMask;
172
UINT8 Information;
173
} EFI_ACPI_DMA_DESCRIPTOR;
174
175
///
176
/// I/O Port Descriptor
177
///
178
typedef PACKED struct {
179
ACPI_SMALL_RESOURCE_HEADER Header;
180
UINT8 Information;
181
UINT16 BaseAddressMin;
182
UINT16 BaseAddressMax;
183
UINT8 Alignment;
184
UINT8 Length;
185
} EFI_ACPI_IO_PORT_DESCRIPTOR;
186
187
///
188
/// Fixed Location I/O Port Descriptor.
189
///
190
typedef PACKED struct {
191
ACPI_SMALL_RESOURCE_HEADER Header;
192
UINT16 BaseAddress;
193
UINT8 Length;
194
} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;
195
196
///
197
/// 24-Bit Memory Range Descriptor
198
///
199
typedef PACKED struct {
200
ACPI_LARGE_RESOURCE_HEADER Header;
201
UINT8 Information;
202
UINT16 BaseAddressMin;
203
UINT16 BaseAddressMax;
204
UINT16 Alignment;
205
UINT16 Length;
206
} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;
207
208
///
209
/// 32-Bit Memory Range Descriptor
210
///
211
typedef PACKED struct {
212
ACPI_LARGE_RESOURCE_HEADER Header;
213
UINT8 Information;
214
UINT32 BaseAddressMin;
215
UINT32 BaseAddressMax;
216
UINT32 Alignment;
217
UINT32 Length;
218
} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;
219
220
///
221
/// Fixed 32-Bit Fixed Memory Range Descriptor
222
///
223
typedef PACKED struct {
224
ACPI_LARGE_RESOURCE_HEADER Header;
225
UINT8 Information;
226
UINT32 BaseAddress;
227
UINT32 Length;
228
} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;
229
230
///
231
/// QWORD Address Space Descriptor
232
///
233
typedef PACKED struct {
234
ACPI_LARGE_RESOURCE_HEADER Header;
235
UINT8 ResType;
236
UINT8 GenFlag;
237
UINT8 SpecificFlag;
238
UINT64 AddrSpaceGranularity;
239
UINT64 AddrRangeMin;
240
UINT64 AddrRangeMax;
241
UINT64 AddrTranslationOffset;
242
UINT64 AddrLen;
243
} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;
244
245
///
246
/// DWORD Address Space Descriptor
247
///
248
typedef PACKED struct {
249
ACPI_LARGE_RESOURCE_HEADER Header;
250
UINT8 ResType;
251
UINT8 GenFlag;
252
UINT8 SpecificFlag;
253
UINT32 AddrSpaceGranularity;
254
UINT32 AddrRangeMin;
255
UINT32 AddrRangeMax;
256
UINT32 AddrTranslationOffset;
257
UINT32 AddrLen;
258
} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;
259
260
///
261
/// WORD Address Space Descriptor
262
///
263
typedef PACKED struct {
264
ACPI_LARGE_RESOURCE_HEADER Header;
265
UINT8 ResType;
266
UINT8 GenFlag;
267
UINT8 SpecificFlag;
268
UINT16 AddrSpaceGranularity;
269
UINT16 AddrRangeMin;
270
UINT16 AddrRangeMax;
271
UINT16 AddrTranslationOffset;
272
UINT16 AddrLen;
273
} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;
274
275
///
276
/// Extended Interrupt Descriptor
277
///
278
typedef PACKED struct {
279
ACPI_LARGE_RESOURCE_HEADER Header;
280
UINT8 InterruptVectorFlags;
281
UINT8 InterruptTableLength;
282
UINT32 InterruptNumber[1];
283
} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;
284
285
#pragma pack()
286
287
///
288
/// The End tag identifies an end of resource data.
289
///
290
typedef struct {
291
UINT8 Desc;
292
UINT8 Checksum;
293
} EFI_ACPI_END_TAG_DESCRIPTOR;
294
295
//
296
// General use definitions
297
//
298
#define EFI_ACPI_RESERVED_BYTE 0x00
299
#define EFI_ACPI_RESERVED_WORD 0x0000
300
#define EFI_ACPI_RESERVED_DWORD 0x00000000
301
#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000
302
303
//
304
// Resource Type Specific Flags
305
// Ref ACPI specification 6.4.3.5.5
306
//
307
// Bit [0] : Write Status, _RW
308
//
309
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)
310
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)
311
//
312
// Bit [2:1] : Memory Attributes, _MEM
313
//
314
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)
315
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)
316
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)
317
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)
318
//
319
// Bit [4:3] : Memory Attributes, _MTP
320
//
321
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)
322
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)
323
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)
324
#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)
325
//
326
// Bit [5] : Memory to I/O Translation, _TTP
327
//
328
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)
329
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)
330
331
//
332
// IRQ Information
333
// Ref ACPI specification 6.4.2.1
334
//
335
#define EFI_ACPI_IRQ_SHARABLE_MASK 0x10
336
#define EFI_ACPI_IRQ_SHARABLE 0x10
337
338
#define EFI_ACPI_IRQ_POLARITY_MASK 0x08
339
#define EFI_ACPI_IRQ_HIGH_TRUE 0x00
340
#define EFI_ACPI_IRQ_LOW_FALSE 0x08
341
342
#define EFI_ACPI_IRQ_MODE 0x01
343
#define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00
344
#define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01
345
346
//
347
// DMA Information
348
// Ref ACPI specification 6.4.2.2
349
//
350
#define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60
351
#define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00
352
#define EFI_ACPI_DMA_SPEED_TYPE_A 0x20
353
#define EFI_ACPI_DMA_SPEED_TYPE_B 0x40
354
#define EFI_ACPI_DMA_SPEED_TYPE_F 0x60
355
356
#define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04
357
#define EFI_ACPI_DMA_BUS_MASTER 0x04
358
359
#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03
360
#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00
361
#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01
362
#define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x02
363
364
//
365
// IO Information
366
// Ref ACPI specification 6.4.2.5
367
//
368
#define EFI_ACPI_IO_DECODE_MASK 0x01
369
#define EFI_ACPI_IO_DECODE_16_BIT 0x01
370
#define EFI_ACPI_IO_DECODE_10_BIT 0x00
371
372
//
373
// Memory Information
374
// Ref ACPI specification 6.4.3.4
375
//
376
#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01
377
#define EFI_ACPI_MEMORY_WRITABLE 0x01
378
#define EFI_ACPI_MEMORY_NON_WRITABLE 0x00
379
380
//
381
// Interrupt Vector Flags definitions for Extended Interrupt Descriptor
382
// Ref ACPI specification 6.4.3.6
383
//
384
#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_PRODUCER_CONSUMER_MASK BIT0
385
#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_MODE_MASK BIT1
386
#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_POLARITY_MASK BIT2
387
#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_SHARABLE_MASK BIT3
388
#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_WAKE_CAPABLITY_MASK BIT4
389
390
//
391
// Ensure proper structure formats
392
//
393
#pragma pack(1)
394
//
395
// ACPI 1.0b table structures
396
//
397
398
///
399
/// Root System Description Pointer Structure.
400
///
401
typedef struct {
402
UINT64 Signature;
403
UINT8 Checksum;
404
UINT8 OemId[6];
405
UINT8 Reserved;
406
UINT32 RsdtAddress;
407
} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
408
409
//
410
// Root System Description Table
411
// No definition needed as it is a common description table header, the same with
412
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
413
//
414
415
///
416
/// RSDT Revision (as defined in ACPI 1.0b specification).
417
///
418
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
419
420
///
421
/// Fixed ACPI Description Table Structure (FADT).
422
///
423
typedef struct {
424
EFI_ACPI_DESCRIPTION_HEADER Header;
425
UINT32 FirmwareCtrl;
426
UINT32 Dsdt;
427
UINT8 IntModel;
428
UINT8 Reserved1;
429
UINT16 SciInt;
430
UINT32 SmiCmd;
431
UINT8 AcpiEnable;
432
UINT8 AcpiDisable;
433
UINT8 S4BiosReq;
434
UINT8 Reserved2;
435
UINT32 Pm1aEvtBlk;
436
UINT32 Pm1bEvtBlk;
437
UINT32 Pm1aCntBlk;
438
UINT32 Pm1bCntBlk;
439
UINT32 Pm2CntBlk;
440
UINT32 PmTmrBlk;
441
UINT32 Gpe0Blk;
442
UINT32 Gpe1Blk;
443
UINT8 Pm1EvtLen;
444
UINT8 Pm1CntLen;
445
UINT8 Pm2CntLen;
446
UINT8 PmTmLen;
447
UINT8 Gpe0BlkLen;
448
UINT8 Gpe1BlkLen;
449
UINT8 Gpe1Base;
450
UINT8 Reserved3;
451
UINT16 PLvl2Lat;
452
UINT16 PLvl3Lat;
453
UINT16 FlushSize;
454
UINT16 FlushStride;
455
UINT8 DutyOffset;
456
UINT8 DutyWidth;
457
UINT8 DayAlrm;
458
UINT8 MonAlrm;
459
UINT8 Century;
460
UINT8 Reserved4;
461
UINT8 Reserved5;
462
UINT8 Reserved6;
463
UINT32 Flags;
464
} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;
465
466
///
467
/// FADT Version (as defined in ACPI 1.0b specification).
468
///
469
#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01
470
471
#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0
472
#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1
473
474
//
475
// Fixed ACPI Description Table Fixed Feature Flags
476
// All other bits are reserved and must be set to 0.
477
//
478
#define EFI_ACPI_1_0_WBINVD BIT0
479
#define EFI_ACPI_1_0_WBINVD_FLUSH BIT1
480
#define EFI_ACPI_1_0_PROC_C1 BIT2
481
#define EFI_ACPI_1_0_P_LVL2_UP BIT3
482
#define EFI_ACPI_1_0_PWR_BUTTON BIT4
483
#define EFI_ACPI_1_0_SLP_BUTTON BIT5
484
#define EFI_ACPI_1_0_FIX_RTC BIT6
485
#define EFI_ACPI_1_0_RTC_S4 BIT7
486
#define EFI_ACPI_1_0_TMR_VAL_EXT BIT8
487
#define EFI_ACPI_1_0_DCK_CAP BIT9
488
489
///
490
/// Firmware ACPI Control Structure.
491
///
492
typedef struct {
493
UINT32 Signature;
494
UINT32 Length;
495
UINT32 HardwareSignature;
496
UINT32 FirmwareWakingVector;
497
UINT32 GlobalLock;
498
UINT32 Flags;
499
UINT8 Reserved[40];
500
} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
501
502
///
503
/// Firmware Control Structure Feature Flags.
504
/// All other bits are reserved and must be set to 0.
505
///
506
#define EFI_ACPI_1_0_S4BIOS_F BIT0
507
508
///
509
/// Multiple APIC Description Table header definition. The rest of the table
510
/// must be defined in a platform-specific manner.
511
///
512
typedef struct {
513
EFI_ACPI_DESCRIPTION_HEADER Header;
514
UINT32 LocalApicAddress;
515
UINT32 Flags;
516
} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
517
518
///
519
/// MADT Revision (as defined in ACPI 1.0b specification).
520
///
521
#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
522
523
///
524
/// Multiple APIC Flags
525
/// All other bits are reserved and must be set to 0.
526
///
527
#define EFI_ACPI_1_0_PCAT_COMPAT BIT0
528
529
//
530
// Multiple APIC Description Table APIC structure types
531
// All other values between 0x05 an 0xFF are reserved and
532
// will be ignored by OSPM.
533
//
534
#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00
535
#define EFI_ACPI_1_0_IO_APIC 0x01
536
#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02
537
#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
538
#define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04
539
540
//
541
// APIC Structure Definitions
542
//
543
544
///
545
/// Processor Local APIC Structure Definition.
546
///
547
typedef struct {
548
UINT8 Type;
549
UINT8 Length;
550
UINT8 AcpiProcessorId;
551
UINT8 ApicId;
552
UINT32 Flags;
553
} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
554
555
///
556
/// Local APIC Flags. All other bits are reserved and must be 0.
557
///
558
#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0
559
560
///
561
/// IO APIC Structure.
562
///
563
typedef struct {
564
UINT8 Type;
565
UINT8 Length;
566
UINT8 IoApicId;
567
UINT8 Reserved;
568
UINT32 IoApicAddress;
569
UINT32 SystemVectorBase;
570
} EFI_ACPI_1_0_IO_APIC_STRUCTURE;
571
572
///
573
/// Interrupt Source Override Structure.
574
///
575
typedef struct {
576
UINT8 Type;
577
UINT8 Length;
578
UINT8 Bus;
579
UINT8 Source;
580
UINT32 GlobalSystemInterruptVector;
581
UINT16 Flags;
582
} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
583
584
///
585
/// Non-Maskable Interrupt Source Structure.
586
///
587
typedef struct {
588
UINT8 Type;
589
UINT8 Length;
590
UINT16 Flags;
591
UINT32 GlobalSystemInterruptVector;
592
} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
593
594
///
595
/// Local APIC NMI Structure.
596
///
597
typedef struct {
598
UINT8 Type;
599
UINT8 Length;
600
UINT8 AcpiProcessorId;
601
UINT16 Flags;
602
UINT8 LocalApicInti;
603
} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;
604
605
///
606
/// Smart Battery Description Table (SBST)
607
///
608
typedef struct {
609
EFI_ACPI_DESCRIPTION_HEADER Header;
610
UINT32 WarningEnergyLevel;
611
UINT32 LowEnergyLevel;
612
UINT32 CriticalEnergyLevel;
613
} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;
614
615
//
616
// Known table signatures
617
//
618
619
///
620
/// "RSD PTR " Root System Description Pointer.
621
///
622
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
623
624
///
625
/// "APIC" Multiple APIC Description Table.
626
///
627
#define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
628
629
///
630
/// "DSDT" Differentiated System Description Table.
631
///
632
#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
633
634
///
635
/// "FACS" Firmware ACPI Control Structure.
636
///
637
#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
638
639
///
640
/// "FACP" Fixed ACPI Description Table.
641
///
642
#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
643
644
///
645
/// "PSDT" Persistent System Description Table.
646
///
647
#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
648
649
///
650
/// "RSDT" Root System Description Table.
651
///
652
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
653
654
///
655
/// "SBST" Smart Battery Specification Table.
656
///
657
#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
658
659
///
660
/// "SSDT" Secondary System Description Table.
661
///
662
#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
663
664
#pragma pack()
665
666
#endif
667
668