~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/ipxe/src/include/ipxe/efi/IndustryStandard/Acpi10.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

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