~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/Acpi30.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 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006
 
3
 
 
4
  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
 
5
  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_3_0_H_
 
15
#define _ACPI_3_0_H_
 
16
 
 
17
FILE_LICENCE ( BSD3 );
 
18
 
 
19
#include <ipxe/efi/IndustryStandard/Acpi20.h>
 
20
 
 
21
//
 
22
// Define for Desriptor
 
23
//
 
24
#define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME    0x0B
 
25
 
 
26
#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR    0x8B
 
27
 
 
28
//
 
29
// Ensure proper structure formats
 
30
//
 
31
#pragma pack(1)
 
32
 
 
33
///
 
34
/// Extended Address Space Descriptor
 
35
///
 
36
typedef PACKED struct {
 
37
  ACPI_LARGE_RESOURCE_HEADER    Header;
 
38
  UINT8                         ResType;
 
39
  UINT8                         GenFlag;
 
40
  UINT8                         SpecificFlag;
 
41
  UINT8                         RevisionId;
 
42
  UINT8                         Reserved;
 
43
  UINT64                        AddrSpaceGranularity;
 
44
  UINT64                        AddrRangeMin;
 
45
  UINT64                        AddrRangeMax;
 
46
  UINT64                        AddrTranslationOffset;
 
47
  UINT64                        AddrLen;
 
48
  UINT64                        TypeSpecificAttribute;
 
49
} EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR;
 
50
 
 
51
#pragma pack()
 
52
 
 
53
//
 
54
// Memory Type Specific Flags
 
55
//
 
56
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC  0x0000000000000001
 
57
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC  0x0000000000000002
 
58
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT  0x0000000000000004
 
59
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB  0x0000000000000008
 
60
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010
 
61
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV  0x0000000000008000
 
62
 
 
63
//
 
64
// Ensure proper structure formats
 
65
//
 
66
#pragma pack(1)
 
67
 
 
68
///
 
69
/// ACPI 3.0 Generic Address Space definition
 
70
///
 
71
typedef struct {
 
72
  UINT8   AddressSpaceId;
 
73
  UINT8   RegisterBitWidth;
 
74
  UINT8   RegisterBitOffset;
 
75
  UINT8   AccessSize;
 
76
  UINT64  Address;
 
77
} EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE;
 
78
 
 
79
//
 
80
// Generic Address Space Address IDs
 
81
//
 
82
#define EFI_ACPI_3_0_SYSTEM_MEMORY              0
 
83
#define EFI_ACPI_3_0_SYSTEM_IO                  1
 
84
#define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE    2
 
85
#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER        3
 
86
#define EFI_ACPI_3_0_SMBUS                      4
 
87
#define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE  0x7F
 
88
 
 
89
//
 
90
// Generic Address Space Access Sizes
 
91
//
 
92
#define EFI_ACPI_3_0_UNDEFINED  0
 
93
#define EFI_ACPI_3_0_BYTE       1
 
94
#define EFI_ACPI_3_0_WORD       2
 
95
#define EFI_ACPI_3_0_DWORD      3
 
96
#define EFI_ACPI_3_0_QWORD      4
 
97
 
 
98
//
 
99
// ACPI 3.0 table structures
 
100
//
 
101
 
 
102
///
 
103
/// Root System Description Pointer Structure
 
104
///
 
105
typedef struct {
 
106
  UINT64  Signature;
 
107
  UINT8   Checksum;
 
108
  UINT8   OemId[6];
 
109
  UINT8   Revision;
 
110
  UINT32  RsdtAddress;
 
111
  UINT32  Length;
 
112
  UINT64  XsdtAddress;
 
113
  UINT8   ExtendedChecksum;
 
114
  UINT8   Reserved[3];
 
115
} EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
116
 
 
117
///
 
118
/// RSD_PTR Revision (as defined in ACPI 3.0b spec.)
 
119
///
 
120
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 3.0b) says current value is 2
 
121
 
 
122
///
 
123
/// Common table header, this prefaces all ACPI tables, including FACS, but
 
124
/// excluding the RSD PTR structure
 
125
///
 
126
typedef struct {
 
127
  UINT32  Signature;
 
128
  UINT32  Length;
 
129
} EFI_ACPI_3_0_COMMON_HEADER;
 
130
 
 
131
//
 
132
// Root System Description Table
 
133
// No definition needed as it is a common description table header, the same with
 
134
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
 
135
//
 
136
 
 
137
///
 
138
/// RSDT Revision (as defined in ACPI 3.0 spec.)
 
139
///
 
140
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
 
141
 
 
142
//
 
143
// Extended System Description Table
 
144
// No definition needed as it is a common description table header, the same with
 
145
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
 
146
//
 
147
 
 
148
///
 
149
/// XSDT Revision (as defined in ACPI 3.0 spec.)
 
150
///
 
151
#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
 
152
 
 
153
///
 
154
/// Fixed ACPI Description Table Structure (FADT)
 
155
///
 
156
typedef struct {
 
157
  EFI_ACPI_DESCRIPTION_HEADER             Header;
 
158
  UINT32                                  FirmwareCtrl;
 
159
  UINT32                                  Dsdt;
 
160
  UINT8                                   Reserved0;
 
161
  UINT8                                   PreferredPmProfile;
 
162
  UINT16                                  SciInt;
 
163
  UINT32                                  SmiCmd;
 
164
  UINT8                                   AcpiEnable;
 
165
  UINT8                                   AcpiDisable;
 
166
  UINT8                                   S4BiosReq;
 
167
  UINT8                                   PstateCnt;
 
168
  UINT32                                  Pm1aEvtBlk;
 
169
  UINT32                                  Pm1bEvtBlk;
 
170
  UINT32                                  Pm1aCntBlk;
 
171
  UINT32                                  Pm1bCntBlk;
 
172
  UINT32                                  Pm2CntBlk;
 
173
  UINT32                                  PmTmrBlk;
 
174
  UINT32                                  Gpe0Blk;
 
175
  UINT32                                  Gpe1Blk;
 
176
  UINT8                                   Pm1EvtLen;
 
177
  UINT8                                   Pm1CntLen;
 
178
  UINT8                                   Pm2CntLen;
 
179
  UINT8                                   PmTmrLen;
 
180
  UINT8                                   Gpe0BlkLen;
 
181
  UINT8                                   Gpe1BlkLen;
 
182
  UINT8                                   Gpe1Base;
 
183
  UINT8                                   CstCnt;
 
184
  UINT16                                  PLvl2Lat;
 
185
  UINT16                                  PLvl3Lat;
 
186
  UINT16                                  FlushSize;
 
187
  UINT16                                  FlushStride;
 
188
  UINT8                                   DutyOffset;
 
189
  UINT8                                   DutyWidth;
 
190
  UINT8                                   DayAlrm;
 
191
  UINT8                                   MonAlrm;
 
192
  UINT8                                   Century;
 
193
  UINT16                                  IaPcBootArch;
 
194
  UINT8                                   Reserved1;
 
195
  UINT32                                  Flags;
 
196
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
 
197
  UINT8                                   ResetValue;
 
198
  UINT8                                   Reserved2[3];
 
199
  UINT64                                  XFirmwareCtrl;
 
200
  UINT64                                  XDsdt;
 
201
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
 
202
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
 
203
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
 
204
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
 
205
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
 
206
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
 
207
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
 
208
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
 
209
} EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
210
 
 
211
///
 
212
/// FADT Version (as defined in ACPI 3.0 spec.)
 
213
///
 
214
#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x04
 
215
 
 
216
//
 
217
// Fixed ACPI Description Table Preferred Power Management Profile
 
218
//
 
219
#define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED         0
 
220
#define EFI_ACPI_3_0_PM_PROFILE_DESKTOP             1
 
221
#define EFI_ACPI_3_0_PM_PROFILE_MOBILE              2
 
222
#define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION         3
 
223
#define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER   4
 
224
#define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER         5
 
225
#define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC        6
 
226
#define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER  7
 
227
 
 
228
//
 
229
// Fixed ACPI Description Table Boot Architecture Flags
 
230
// All other bits are reserved and must be set to 0.
 
231
//
 
232
#define EFI_ACPI_3_0_LEGACY_DEVICES              BIT0
 
233
#define EFI_ACPI_3_0_8042                        BIT1
 
234
#define EFI_ACPI_3_0_VGA_NOT_PRESENT             BIT2
 
235
#define EFI_ACPI_3_0_MSI_NOT_SUPPORTED           BIT3
 
236
#define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS          BIT4
 
237
 
 
238
//
 
239
// Fixed ACPI Description Table Fixed Feature Flags
 
240
// All other bits are reserved and must be set to 0.
 
241
//
 
242
#define EFI_ACPI_3_0_WBINVD                                 BIT0
 
243
#define EFI_ACPI_3_0_WBINVD_FLUSH                           BIT1
 
244
#define EFI_ACPI_3_0_PROC_C1                                BIT2
 
245
#define EFI_ACPI_3_0_P_LVL2_UP                              BIT3
 
246
#define EFI_ACPI_3_0_PWR_BUTTON                             BIT4
 
247
#define EFI_ACPI_3_0_SLP_BUTTON                             BIT5
 
248
#define EFI_ACPI_3_0_FIX_RTC                                BIT6
 
249
#define EFI_ACPI_3_0_RTC_S4                                 BIT7
 
250
#define EFI_ACPI_3_0_TMR_VAL_EXT                            BIT8
 
251
#define EFI_ACPI_3_0_DCK_CAP                                BIT9
 
252
#define EFI_ACPI_3_0_RESET_REG_SUP                          BIT10
 
253
#define EFI_ACPI_3_0_SEALED_CASE                            BIT11
 
254
#define EFI_ACPI_3_0_HEADLESS                               BIT12
 
255
#define EFI_ACPI_3_0_CPU_SW_SLP                             BIT13
 
256
#define EFI_ACPI_3_0_PCI_EXP_WAK                            BIT14
 
257
#define EFI_ACPI_3_0_USE_PLATFORM_CLOCK                     BIT15
 
258
#define EFI_ACPI_3_0_S4_RTC_STS_VALID                       BIT16
 
259
#define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE                BIT17
 
260
#define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL               BIT18
 
261
#define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
 
262
 
 
263
///
 
264
/// Firmware ACPI Control Structure
 
265
///
 
266
typedef struct {
 
267
  UINT32  Signature;
 
268
  UINT32  Length;
 
269
  UINT32  HardwareSignature;
 
270
  UINT32  FirmwareWakingVector;
 
271
  UINT32  GlobalLock;
 
272
  UINT32  Flags;
 
273
  UINT64  XFirmwareWakingVector;
 
274
  UINT8   Version;
 
275
  UINT8   Reserved[31];
 
276
} EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
277
 
 
278
///
 
279
/// FACS Version (as defined in ACPI 3.0 spec.)
 
280
///
 
281
#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x01
 
282
 
 
283
///
 
284
/// Firmware Control Structure Feature Flags
 
285
/// All other bits are reserved and must be set to 0.
 
286
///
 
287
#define EFI_ACPI_3_0_S4BIOS_F       BIT0
 
288
 
 
289
//
 
290
// Differentiated System Description Table,
 
291
// Secondary System Description Table
 
292
// and Persistent System Description Table,
 
293
// no definition needed as they are common description table header, the same with
 
294
// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
 
295
//
 
296
#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
 
297
#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
 
298
 
 
299
///
 
300
/// Multiple APIC Description Table header definition.  The rest of the table
 
301
/// must be defined in a platform specific manner.
 
302
///
 
303
typedef struct {
 
304
  EFI_ACPI_DESCRIPTION_HEADER Header;
 
305
  UINT32                      LocalApicAddress;
 
306
  UINT32                      Flags;
 
307
} EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
308
 
 
309
///
 
310
/// MADT Revision (as defined in ACPI 3.0 spec.)
 
311
///
 
312
#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02
 
313
 
 
314
///
 
315
/// Multiple APIC Flags
 
316
/// All other bits are reserved and must be set to 0.
 
317
///
 
318
#define EFI_ACPI_3_0_PCAT_COMPAT         BIT0
 
319
 
 
320
//
 
321
// Multiple APIC Description Table APIC structure types
 
322
// All other values between 0x09 an 0xFF are reserved and
 
323
// will be ignored by OSPM.
 
324
//
 
325
#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC           0x00
 
326
#define EFI_ACPI_3_0_IO_APIC                        0x01
 
327
#define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE      0x02
 
328
#define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03
 
329
#define EFI_ACPI_3_0_LOCAL_APIC_NMI                 0x04
 
330
#define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
 
331
#define EFI_ACPI_3_0_IO_SAPIC                       0x06
 
332
#define EFI_ACPI_3_0_LOCAL_SAPIC                    0x07
 
333
#define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES     0x08
 
334
 
 
335
//
 
336
// APIC Structure Definitions
 
337
//
 
338
 
 
339
///
 
340
/// Processor Local APIC Structure Definition
 
341
///
 
342
typedef struct {
 
343
  UINT8   Type;
 
344
  UINT8   Length;
 
345
  UINT8   AcpiProcessorId;
 
346
  UINT8   ApicId;
 
347
  UINT32  Flags;
 
348
} EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
349
 
 
350
///
 
351
/// Local APIC Flags.  All other bits are reserved and must be 0.
 
352
///
 
353
#define EFI_ACPI_3_0_LOCAL_APIC_ENABLED        BIT0
 
354
 
 
355
///
 
356
/// IO APIC Structure
 
357
///
 
358
typedef struct {
 
359
  UINT8   Type;
 
360
  UINT8   Length;
 
361
  UINT8   IoApicId;
 
362
  UINT8   Reserved;
 
363
  UINT32  IoApicAddress;
 
364
  UINT32  GlobalSystemInterruptBase;
 
365
} EFI_ACPI_3_0_IO_APIC_STRUCTURE;
 
366
 
 
367
///
 
368
/// Interrupt Source Override Structure
 
369
///
 
370
typedef struct {
 
371
  UINT8   Type;
 
372
  UINT8   Length;
 
373
  UINT8   Bus;
 
374
  UINT8   Source;
 
375
  UINT32  GlobalSystemInterrupt;
 
376
  UINT16  Flags;
 
377
} EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
378
 
 
379
///
 
380
/// Platform Interrupt Sources Structure Definition
 
381
///
 
382
typedef struct {
 
383
  UINT8   Type;
 
384
  UINT8   Length;
 
385
  UINT16  Flags;
 
386
  UINT8   InterruptType;
 
387
  UINT8   ProcessorId;
 
388
  UINT8   ProcessorEid;
 
389
  UINT8   IoSapicVector;
 
390
  UINT32  GlobalSystemInterrupt;
 
391
  UINT32  PlatformInterruptSourceFlags;
 
392
  UINT8   CpeiProcessorOverride;
 
393
  UINT8   Reserved[31];
 
394
} EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
 
395
 
 
396
//
 
397
// MPS INTI flags.
 
398
// All other bits are reserved and must be set to 0.
 
399
//
 
400
#define EFI_ACPI_3_0_POLARITY      (3 << 0)
 
401
#define EFI_ACPI_3_0_TRIGGER_MODE  (3 << 2)
 
402
 
 
403
///
 
404
/// Non-Maskable Interrupt Source Structure
 
405
///
 
406
typedef struct {
 
407
  UINT8   Type;
 
408
  UINT8   Length;
 
409
  UINT16  Flags;
 
410
  UINT32  GlobalSystemInterrupt;
 
411
} EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
412
 
 
413
///
 
414
/// Local APIC NMI Structure
 
415
///
 
416
typedef struct {
 
417
  UINT8   Type;
 
418
  UINT8   Length;
 
419
  UINT8   AcpiProcessorId;
 
420
  UINT16  Flags;
 
421
  UINT8   LocalApicLint;
 
422
} EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE;
 
423
 
 
424
///
 
425
/// Local APIC Address Override Structure
 
426
///
 
427
typedef struct {
 
428
  UINT8   Type;
 
429
  UINT8   Length;
 
430
  UINT16  Reserved;
 
431
  UINT64  LocalApicAddress;
 
432
} EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
433
 
 
434
///
 
435
/// IO SAPIC Structure
 
436
///
 
437
typedef struct {
 
438
  UINT8   Type;
 
439
  UINT8   Length;
 
440
  UINT8   IoApicId;
 
441
  UINT8   Reserved;
 
442
  UINT32  GlobalSystemInterruptBase;
 
443
  UINT64  IoSapicAddress;
 
444
} EFI_ACPI_3_0_IO_SAPIC_STRUCTURE;
 
445
 
 
446
///
 
447
/// Local SAPIC Structure
 
448
/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
 
449
///
 
450
typedef struct {
 
451
  UINT8   Type;
 
452
  UINT8   Length;
 
453
  UINT8   AcpiProcessorId;
 
454
  UINT8   LocalSapicId;
 
455
  UINT8   LocalSapicEid;
 
456
  UINT8   Reserved[3];
 
457
  UINT32  Flags;
 
458
  UINT32  ACPIProcessorUIDValue;
 
459
} EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
460
 
 
461
///
 
462
/// Platform Interrupt Sources Structure
 
463
///
 
464
typedef struct {
 
465
  UINT8   Type;
 
466
  UINT8   Length;
 
467
  UINT16  Flags;
 
468
  UINT8   InterruptType;
 
469
  UINT8   ProcessorId;
 
470
  UINT8   ProcessorEid;
 
471
  UINT8   IoSapicVector;
 
472
  UINT32  GlobalSystemInterrupt;
 
473
  UINT32  PlatformInterruptSourceFlags;
 
474
} EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
475
 
 
476
///
 
477
/// Platform Interrupt Source Flags.
 
478
/// All other bits are reserved and must be set to 0.
 
479
///
 
480
#define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE          BIT0
 
481
 
 
482
///
 
483
/// Smart Battery Description Table (SBST)
 
484
///
 
485
typedef struct {
 
486
  EFI_ACPI_DESCRIPTION_HEADER Header;
 
487
  UINT32                      WarningEnergyLevel;
 
488
  UINT32                      LowEnergyLevel;
 
489
  UINT32                      CriticalEnergyLevel;
 
490
} EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
491
 
 
492
///
 
493
/// SBST Version (as defined in ACPI 3.0 spec.)
 
494
///
 
495
#define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
 
496
 
 
497
///
 
498
/// Embedded Controller Boot Resources Table (ECDT)
 
499
/// The table is followed by a null terminated ASCII string that contains
 
500
/// a fully qualified reference to the name space object.
 
501
///
 
502
typedef struct {
 
503
  EFI_ACPI_DESCRIPTION_HEADER             Header;
 
504
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
 
505
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcData;
 
506
  UINT32                                  Uid;
 
507
  UINT8                                   GpeBit;
 
508
} EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
509
 
 
510
///
 
511
/// ECDT Version (as defined in ACPI 3.0 spec.)
 
512
///
 
513
#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
 
514
 
 
515
///
 
516
/// System Resource Affinity Table (SRAT.  The rest of the table
 
517
/// must be defined in a platform specific manner.
 
518
///
 
519
typedef struct {
 
520
  EFI_ACPI_DESCRIPTION_HEADER Header;
 
521
  UINT32                      Reserved1;  ///< Must be set to 1
 
522
  UINT64                      Reserved2;
 
523
} EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
 
524
 
 
525
///
 
526
/// SRAT Version (as defined in ACPI 3.0 spec.)
 
527
///
 
528
#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x02
 
529
 
 
530
//
 
531
// SRAT structure types.
 
532
// All other values between 0x02 an 0xFF are reserved and
 
533
// will be ignored by OSPM.
 
534
//
 
535
#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
 
536
#define EFI_ACPI_3_0_MEMORY_AFFINITY                      0x01
 
537
 
 
538
///
 
539
/// Processor Local APIC/SAPIC Affinity Structure Definition
 
540
///
 
541
typedef struct {
 
542
  UINT8   Type;
 
543
  UINT8   Length;
 
544
  UINT8   ProximityDomain7To0;
 
545
  UINT8   ApicId;
 
546
  UINT32  Flags;
 
547
  UINT8   LocalSapicEid;
 
548
  UINT8   ProximityDomain31To8[3];
 
549
  UINT8   Reserved[4];
 
550
} EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
 
551
 
 
552
///
 
553
/// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
 
554
///
 
555
#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
 
556
 
 
557
///
 
558
/// Memory Affinity Structure Definition
 
559
///
 
560
typedef struct {
 
561
  UINT8   Type;
 
562
  UINT8   Length;
 
563
  UINT32  ProximityDomain;
 
564
  UINT16  Reserved1;
 
565
  UINT32  AddressBaseLow;
 
566
  UINT32  AddressBaseHigh;
 
567
  UINT32  LengthLow;
 
568
  UINT32  LengthHigh;
 
569
  UINT32  Reserved2;
 
570
  UINT32  Flags;
 
571
  UINT64  Reserved3;
 
572
} EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE;
 
573
 
 
574
//
 
575
// Memory Flags.  All other bits are reserved and must be 0.
 
576
//
 
577
#define EFI_ACPI_3_0_MEMORY_ENABLED       (1 << 0)
 
578
#define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)
 
579
#define EFI_ACPI_3_0_MEMORY_NONVOLATILE   (1 << 2)
 
580
 
 
581
///
 
582
/// System Locality Distance Information Table (SLIT).
 
583
/// The rest of the table is a matrix.
 
584
///
 
585
typedef struct {
 
586
  EFI_ACPI_DESCRIPTION_HEADER Header;
 
587
  UINT64                      NumberOfSystemLocalities;
 
588
} EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
 
589
 
 
590
///
 
591
/// SLIT Version (as defined in ACPI 3.0 spec.)
 
592
///
 
593
#define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
 
594
 
 
595
//
 
596
// Known table signatures
 
597
//
 
598
 
 
599
///
 
600
/// "RSD PTR " Root System Description Pointer
 
601
///
 
602
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
 
603
 
 
604
///
 
605
/// "APIC" Multiple APIC Description Table
 
606
///
 
607
#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
 
608
 
 
609
///
 
610
/// "DSDT" Differentiated System Description Table
 
611
///
 
612
#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
 
613
 
 
614
///
 
615
/// "ECDT" Embedded Controller Boot Resources Table
 
616
///
 
617
#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
 
618
 
 
619
///
 
620
/// "FACP" Fixed ACPI Description Table
 
621
///
 
622
#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
 
623
 
 
624
///
 
625
/// "FACS" Firmware ACPI Control Structure
 
626
///
 
627
#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
 
628
 
 
629
///
 
630
/// "PSDT" Persistent System Description Table
 
631
///
 
632
#define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
 
633
 
 
634
///
 
635
/// "RSDT" Root System Description Table
 
636
///
 
637
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
 
638
 
 
639
///
 
640
/// "SBST" Smart Battery Specification Table
 
641
///
 
642
#define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
 
643
 
 
644
///
 
645
/// "SLIT" System Locality Information Table
 
646
///
 
647
#define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
 
648
 
 
649
///
 
650
/// "SRAT" System Resource Affinity Table
 
651
///
 
652
#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
 
653
 
 
654
///
 
655
/// "SSDT" Secondary System Description Table
 
656
///
 
657
#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
 
658
 
 
659
///
 
660
/// "XSDT" Extended System Description Table
 
661
///
 
662
#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
 
663
 
 
664
///
 
665
/// "BOOT" MS Simple Boot Spec
 
666
///
 
667
#define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
 
668
 
 
669
///
 
670
/// "CPEP" Corrected Platform Error Polling Table
 
671
///
 
672
#define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
 
673
 
 
674
///
 
675
/// "DBGP" MS Debug Port Spec
 
676
///
 
677
#define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
 
678
 
 
679
///
 
680
/// "ETDT" Event Timer Description Table
 
681
///
 
682
#define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
 
683
 
 
684
///
 
685
/// "HPET" IA-PC High Precision Event Timer Table
 
686
///
 
687
#define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
 
688
 
 
689
///
 
690
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
 
691
///
 
692
#define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
 
693
 
 
694
///
 
695
/// "SPCR" Serial Port Concole Redirection Table
 
696
///
 
697
#define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
698
 
 
699
///
 
700
/// "SPMI" Server Platform Management Interface Table
 
701
///
 
702
#define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
 
703
 
 
704
///
 
705
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
 
706
///
 
707
#define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
 
708
 
 
709
///
 
710
/// "WDRT" Watchdog Resource Table
 
711
///
 
712
#define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
 
713
 
 
714
///
 
715
/// "WDAT" Watchdog Action Table
 
716
///
 
717
#define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
 
718
 
 
719
///
 
720
/// "WSPT" Windows Specific Properties Table
 
721
///
 
722
#define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE  SIGNATURE_32('W', 'S', 'P', 'T')
 
723
 
 
724
///
 
725
/// "iBFT" iSCSI Boot Firmware Table
 
726
///
 
727
#define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
 
728
 
 
729
#pragma pack()
 
730
 
 
731
#endif