actbl1.h revision 1.20 1 /******************************************************************************
2 *
3 * Name: actbl1.h - Additional ACPI table definitions
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2022, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44 #ifndef __ACTBL1_H__
45 #define __ACTBL1_H__
46
47
48 /*******************************************************************************
49 *
50 * Additional ACPI Tables
51 *
52 * These tables are not consumed directly by the ACPICA subsystem, but are
53 * included here to support device drivers and the AML disassembler.
54 *
55 ******************************************************************************/
56
57
58 /*
59 * Values for description table header signatures for tables defined in this
60 * file. Useful because they make it more difficult to inadvertently type in
61 * the wrong signature.
62 */
63 #define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */
64 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
65 #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
66 #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
67 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
68 #define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */
69 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
70 #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
71 #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
72 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
73 #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
74 #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */
75 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
76 #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
77 #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
78 #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */
79 #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */
80 #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
81 #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */
82 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
83 #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
84
85 #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
86 #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
87
88
89 /* Reserved table signatures */
90
91 #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */
92 #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
93
94 /*
95 * These tables have been seen in the field, but no definition has been found
96 */
97 #ifdef ACPI_UNDEFINED_TABLES
98 #define ACPI_SIG_ATKG "ATKG"
99 #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
100 #define ACPI_SIG_IEIT "IEIT"
101 #endif
102
103 /*
104 * All tables must be byte-packed to match the ACPI specification, since
105 * the tables are provided by the system BIOS.
106 */
107 #pragma pack(1)
108
109 /*
110 * Note: C bitfields are not used for this reason:
111 *
112 * "Bitfields are great and easy to read, but unfortunately the C language
113 * does not specify the layout of bitfields in memory, which means they are
114 * essentially useless for dealing with packed data in on-disk formats or
115 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
116 * this decision was a design error in C. Ritchie could have picked an order
117 * and stuck with it." Norman Ramsey.
118 * See http://stackoverflow.com/a/1053662/41661
119 */
120
121
122 /*******************************************************************************
123 *
124 * Common subtable headers
125 *
126 ******************************************************************************/
127
128 /* Generic subtable header (used in MADT, SRAT, etc.) */
129
130 typedef struct acpi_subtable_header
131 {
132 UINT8 Type;
133 UINT8 Length;
134
135 } ACPI_SUBTABLE_HEADER;
136
137
138 /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
139
140 typedef struct acpi_whea_header
141 {
142 UINT8 Action;
143 UINT8 Instruction;
144 UINT8 Flags;
145 UINT8 Reserved;
146 ACPI_GENERIC_ADDRESS RegisterRegion;
147 UINT64 Value; /* Value used with Read/Write register */
148 UINT64 Mask; /* Bitmask required for this register instruction */
149
150 } ACPI_WHEA_HEADER;
151
152
153 /*******************************************************************************
154 *
155 * ASF - Alert Standard Format table (Signature "ASF!")
156 * Revision 0x10
157 *
158 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
159 *
160 ******************************************************************************/
161
162 typedef struct acpi_table_asf
163 {
164 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
165
166 } ACPI_TABLE_ASF;
167
168
169 /* ASF subtable header */
170
171 typedef struct acpi_asf_header
172 {
173 UINT8 Type;
174 UINT8 Reserved;
175 UINT16 Length;
176
177 } ACPI_ASF_HEADER;
178
179
180 /* Values for Type field above */
181
182 enum AcpiAsfType
183 {
184 ACPI_ASF_TYPE_INFO = 0,
185 ACPI_ASF_TYPE_ALERT = 1,
186 ACPI_ASF_TYPE_CONTROL = 2,
187 ACPI_ASF_TYPE_BOOT = 3,
188 ACPI_ASF_TYPE_ADDRESS = 4,
189 ACPI_ASF_TYPE_RESERVED = 5
190 };
191
192 /*
193 * ASF subtables
194 */
195
196 /* 0: ASF Information */
197
198 typedef struct acpi_asf_info
199 {
200 ACPI_ASF_HEADER Header;
201 UINT8 MinResetValue;
202 UINT8 MinPollInterval;
203 UINT16 SystemId;
204 UINT32 MfgId;
205 UINT8 Flags;
206 UINT8 Reserved2[3];
207
208 } ACPI_ASF_INFO;
209
210 /* Masks for Flags field above */
211
212 #define ACPI_ASF_SMBUS_PROTOCOLS (1)
213
214
215 /* 1: ASF Alerts */
216
217 typedef struct acpi_asf_alert
218 {
219 ACPI_ASF_HEADER Header;
220 UINT8 AssertMask;
221 UINT8 DeassertMask;
222 UINT8 Alerts;
223 UINT8 DataLength;
224
225 } ACPI_ASF_ALERT;
226
227 typedef struct acpi_asf_alert_data
228 {
229 UINT8 Address;
230 UINT8 Command;
231 UINT8 Mask;
232 UINT8 Value;
233 UINT8 SensorType;
234 UINT8 Type;
235 UINT8 Offset;
236 UINT8 SourceType;
237 UINT8 Severity;
238 UINT8 SensorNumber;
239 UINT8 Entity;
240 UINT8 Instance;
241
242 } ACPI_ASF_ALERT_DATA;
243
244
245 /* 2: ASF Remote Control */
246
247 typedef struct acpi_asf_remote
248 {
249 ACPI_ASF_HEADER Header;
250 UINT8 Controls;
251 UINT8 DataLength;
252 UINT16 Reserved2;
253
254 } ACPI_ASF_REMOTE;
255
256 typedef struct acpi_asf_control_data
257 {
258 UINT8 Function;
259 UINT8 Address;
260 UINT8 Command;
261 UINT8 Value;
262
263 } ACPI_ASF_CONTROL_DATA;
264
265
266 /* 3: ASF RMCP Boot Options */
267
268 typedef struct acpi_asf_rmcp
269 {
270 ACPI_ASF_HEADER Header;
271 UINT8 Capabilities[7];
272 UINT8 CompletionCode;
273 UINT32 EnterpriseId;
274 UINT8 Command;
275 UINT16 Parameter;
276 UINT16 BootOptions;
277 UINT16 OemParameters;
278
279 } ACPI_ASF_RMCP;
280
281
282 /* 4: ASF Address */
283
284 typedef struct acpi_asf_address
285 {
286 ACPI_ASF_HEADER Header;
287 UINT8 EpromAddress;
288 UINT8 Devices;
289
290 } ACPI_ASF_ADDRESS;
291
292
293 /*******************************************************************************
294 *
295 * BERT - Boot Error Record Table (ACPI 4.0)
296 * Version 1
297 *
298 ******************************************************************************/
299
300 typedef struct acpi_table_bert
301 {
302 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
303 UINT32 RegionLength; /* Length of the boot error region */
304 UINT64 Address; /* Physical address of the error region */
305
306 } ACPI_TABLE_BERT;
307
308
309 /* Boot Error Region (not a subtable, pointed to by Address field above) */
310
311 typedef struct acpi_bert_region
312 {
313 UINT32 BlockStatus; /* Type of error information */
314 UINT32 RawDataOffset; /* Offset to raw error data */
315 UINT32 RawDataLength; /* Length of raw error data */
316 UINT32 DataLength; /* Length of generic error data */
317 UINT32 ErrorSeverity; /* Severity code */
318
319 } ACPI_BERT_REGION;
320
321 /* Values for BlockStatus flags above */
322
323 #define ACPI_BERT_UNCORRECTABLE (1)
324 #define ACPI_BERT_CORRECTABLE (1<<1)
325 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)
326 #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)
327 #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
328
329 /* Values for ErrorSeverity above */
330
331 enum AcpiBertErrorSeverity
332 {
333 ACPI_BERT_ERROR_CORRECTABLE = 0,
334 ACPI_BERT_ERROR_FATAL = 1,
335 ACPI_BERT_ERROR_CORRECTED = 2,
336 ACPI_BERT_ERROR_NONE = 3,
337 ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */
338 };
339
340 /*
341 * Note: The generic error data that follows the ErrorSeverity field above
342 * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below
343 */
344
345
346 /*******************************************************************************
347 *
348 * BGRT - Boot Graphics Resource Table (ACPI 5.0)
349 * Version 1
350 *
351 ******************************************************************************/
352
353 typedef struct acpi_table_bgrt
354 {
355 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
356 UINT16 Version;
357 UINT8 Status;
358 UINT8 ImageType;
359 UINT64 ImageAddress;
360 UINT32 ImageOffsetX;
361 UINT32 ImageOffsetY;
362
363 } ACPI_TABLE_BGRT;
364
365 /* Flags for Status field above */
366
367 #define ACPI_BGRT_DISPLAYED (1)
368 #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)
369
370
371 /*******************************************************************************
372 *
373 * BOOT - Simple Boot Flag Table
374 * Version 1
375 *
376 * Conforms to the "Simple Boot Flag Specification", Version 2.1
377 *
378 ******************************************************************************/
379
380 typedef struct acpi_table_boot
381 {
382 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
383 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */
384 UINT8 Reserved[3];
385
386 } ACPI_TABLE_BOOT;
387
388
389 /*******************************************************************************
390 *
391 * CEDT - CXL Early Discovery Table
392 * Version 1
393 *
394 * Conforms to the "CXL Early Discovery Table" (CXL 2.0)
395 *
396 ******************************************************************************/
397
398 typedef struct acpi_table_cedt
399 {
400 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
401
402 } ACPI_TABLE_CEDT;
403
404 /* CEDT subtable header (Performance Record Structure) */
405
406 typedef struct acpi_cedt_header
407 {
408 UINT8 Type;
409 UINT8 Reserved;
410 UINT16 Length;
411
412 } ACPI_CEDT_HEADER;
413
414 /* Values for Type field above */
415
416 enum AcpiCedtType
417 {
418 ACPI_CEDT_TYPE_CHBS = 0,
419 ACPI_CEDT_TYPE_CFMWS = 1,
420 ACPI_CEDT_TYPE_RESERVED = 2,
421 };
422
423 /* Values for version field above */
424
425 #define ACPI_CEDT_CHBS_VERSION_CXL11 (0)
426 #define ACPI_CEDT_CHBS_VERSION_CXL20 (1)
427
428 /* Values for length field above */
429
430 #define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)
431 #define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)
432
433 /*
434 * CEDT subtables
435 */
436
437 /* 0: CXL Host Bridge Structure */
438
439 typedef struct acpi_cedt_chbs
440 {
441 ACPI_CEDT_HEADER Header;
442 UINT32 Uid;
443 UINT32 CxlVersion;
444 UINT32 Reserved;
445 UINT64 Base;
446 UINT64 Length;
447
448 } ACPI_CEDT_CHBS;
449
450
451 /* 1: CXL Fixed Memory Window Structure */
452
453 typedef struct acpi_cedt_cfmws
454 {
455 ACPI_CEDT_HEADER Header;
456 UINT32 Reserved1;
457 UINT64 BaseHpa;
458 UINT64 WindowSize;
459 UINT8 InterleaveWays;
460 UINT8 InterleaveArithmetic;
461 UINT16 Reserved2;
462 UINT32 Granularity;
463 UINT16 Restrictions;
464 UINT16 QtgId;
465 UINT32 InterleaveTargets[];
466
467 } ACPI_CEDT_CFMWS;
468
469 typedef struct acpi_cedt_cfmws_target_element
470 {
471 UINT32 InterleaveTarget;
472
473 } ACPI_CEDT_CFMWS_TARGET_ELEMENT;
474
475 /* Values for Interleave Arithmetic field above */
476
477 #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
478
479 /* Values for Restrictions field above */
480
481 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
482 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
483 #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
484 #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
485 #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
486
487
488 /*******************************************************************************
489 *
490 * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
491 * Version 1
492 *
493 ******************************************************************************/
494
495 typedef struct acpi_table_cpep
496 {
497 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
498 UINT64 Reserved;
499
500 } ACPI_TABLE_CPEP;
501
502
503 /* Subtable */
504
505 typedef struct acpi_cpep_polling
506 {
507 ACPI_SUBTABLE_HEADER Header;
508 UINT8 Id; /* Processor ID */
509 UINT8 Eid; /* Processor EID */
510 UINT32 Interval; /* Polling interval (msec) */
511
512 } ACPI_CPEP_POLLING;
513
514
515 /*******************************************************************************
516 *
517 * CSRT - Core System Resource Table
518 * Version 0
519 *
520 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
521 *
522 ******************************************************************************/
523
524 typedef struct acpi_table_csrt
525 {
526 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
527
528 } ACPI_TABLE_CSRT;
529
530
531 /* Resource Group subtable */
532
533 typedef struct acpi_csrt_group
534 {
535 UINT32 Length;
536 UINT32 VendorId;
537 UINT32 SubvendorId;
538 UINT16 DeviceId;
539 UINT16 SubdeviceId;
540 UINT16 Revision;
541 UINT16 Reserved;
542 UINT32 SharedInfoLength;
543
544 /* Shared data immediately follows (Length = SharedInfoLength) */
545
546 } ACPI_CSRT_GROUP;
547
548 /* Shared Info subtable */
549
550 typedef struct acpi_csrt_shared_info
551 {
552 UINT16 MajorVersion;
553 UINT16 MinorVersion;
554 UINT32 MmioBaseLow;
555 UINT32 MmioBaseHigh;
556 UINT32 GsiInterrupt;
557 UINT8 InterruptPolarity;
558 UINT8 InterruptMode;
559 UINT8 NumChannels;
560 UINT8 DmaAddressWidth;
561 UINT16 BaseRequestLine;
562 UINT16 NumHandshakeSignals;
563 UINT32 MaxBlockSize;
564
565 /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
566
567 } ACPI_CSRT_SHARED_INFO;
568
569 /* Resource Descriptor subtable */
570
571 typedef struct acpi_csrt_descriptor
572 {
573 UINT32 Length;
574 UINT16 Type;
575 UINT16 Subtype;
576 UINT32 Uid;
577
578 /* Resource-specific information immediately follows */
579
580 } ACPI_CSRT_DESCRIPTOR;
581
582
583 /* Resource Types */
584
585 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001
586 #define ACPI_CSRT_TYPE_TIMER 0x0002
587 #define ACPI_CSRT_TYPE_DMA 0x0003
588
589 /* Resource Subtypes */
590
591 #define ACPI_CSRT_XRUPT_LINE 0x0000
592 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
593 #define ACPI_CSRT_TIMER 0x0000
594 #define ACPI_CSRT_DMA_CHANNEL 0x0000
595 #define ACPI_CSRT_DMA_CONTROLLER 0x0001
596
597
598 /*******************************************************************************
599 *
600 * DBG2 - Debug Port Table 2
601 * Version 0 (Both main table and subtables)
602 *
603 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020
604 *
605 ******************************************************************************/
606
607 typedef struct acpi_table_dbg2
608 {
609 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
610 UINT32 InfoOffset;
611 UINT32 InfoCount;
612
613 } ACPI_TABLE_DBG2;
614
615
616 typedef struct acpi_dbg2_header
617 {
618 UINT32 InfoOffset;
619 UINT32 InfoCount;
620
621 } ACPI_DBG2_HEADER;
622
623
624 /* Debug Device Information Subtable */
625
626 typedef struct acpi_dbg2_device
627 {
628 UINT8 Revision;
629 UINT16 Length;
630 UINT8 RegisterCount; /* Number of BaseAddress registers */
631 UINT16 NamepathLength;
632 UINT16 NamepathOffset;
633 UINT16 OemDataLength;
634 UINT16 OemDataOffset;
635 UINT16 PortType;
636 UINT16 PortSubtype;
637 UINT16 Reserved;
638 UINT16 BaseAddressOffset;
639 UINT16 AddressSizeOffset;
640 /*
641 * Data that follows:
642 * BaseAddress (required) - Each in 12-byte Generic Address Structure format.
643 * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
644 * Namepath (required) - Null terminated string. Single dot if not supported.
645 * OemData (optional) - Length is OemDataLength.
646 */
647 } ACPI_DBG2_DEVICE;
648
649 /* Types for PortType field above */
650
651 #define ACPI_DBG2_SERIAL_PORT 0x8000
652 #define ACPI_DBG2_1394_PORT 0x8001
653 #define ACPI_DBG2_USB_PORT 0x8002
654 #define ACPI_DBG2_NET_PORT 0x8003
655
656 /* Subtypes for PortSubtype field above */
657
658 #define ACPI_DBG2_16550_COMPATIBLE 0x0000
659 #define ACPI_DBG2_16550_SUBSET 0x0001
660 #define ACPI_DBG2_MAX311XE_SPI 0x0002
661 #define ACPI_DBG2_ARM_PL011 0x0003
662 #define ACPI_DBG2_MSM8X60 0x0004
663 #define ACPI_DBG2_16550_NVIDIA 0x0005
664 #define ACPI_DBG2_TI_OMAP 0x0006
665 #define ACPI_DBG2_APM88XXXX 0x0008
666 #define ACPI_DBG2_MSM8974 0x0009
667 #define ACPI_DBG2_SAM5250 0x000A
668 #define ACPI_DBG2_INTEL_USIF 0x000B
669 #define ACPI_DBG2_IMX6 0x000C
670 #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
671 #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
672 #define ACPI_DBG2_ARM_DCC 0x000F
673 #define ACPI_DBG2_BCM2835 0x0010
674 #define ACPI_DBG2_SDM845_1_8432MHZ 0x0011
675 #define ACPI_DBG2_16550_WITH_GAS 0x0012
676 #define ACPI_DBG2_SDM845_7_372MHZ 0x0013
677 #define ACPI_DBG2_INTEL_LPSS 0x0014
678
679 #define ACPI_DBG2_1394_STANDARD 0x0000
680
681 #define ACPI_DBG2_USB_XHCI 0x0000
682 #define ACPI_DBG2_USB_EHCI 0x0001
683
684
685 /*******************************************************************************
686 *
687 * DBGP - Debug Port table
688 * Version 1
689 *
690 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
691 *
692 ******************************************************************************/
693
694 typedef struct acpi_table_dbgp
695 {
696 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
697 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */
698 UINT8 Reserved[3];
699 ACPI_GENERIC_ADDRESS DebugPort;
700
701 } ACPI_TABLE_DBGP;
702
703
704 /*******************************************************************************
705 *
706 * DMAR - DMA Remapping table
707 * Version 1
708 *
709 * Conforms to "Intel Virtualization Technology for Directed I/O",
710 * Version 2.3, October 2014
711 *
712 ******************************************************************************/
713
714 typedef struct acpi_table_dmar
715 {
716 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
717 UINT8 Width; /* Host Address Width */
718 UINT8 Flags;
719 UINT8 Reserved[10];
720
721 } ACPI_TABLE_DMAR;
722
723 /* Masks for Flags field above */
724
725 #define ACPI_DMAR_INTR_REMAP (1)
726 #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
727 #define ACPI_DMAR_X2APIC_MODE (1<<2)
728
729
730 /* DMAR subtable header */
731
732 typedef struct acpi_dmar_header
733 {
734 UINT16 Type;
735 UINT16 Length;
736
737 } ACPI_DMAR_HEADER;
738
739 /* Values for subtable type in ACPI_DMAR_HEADER */
740
741 enum AcpiDmarType
742 {
743 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
744 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
745 ACPI_DMAR_TYPE_ROOT_ATS = 2,
746 ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
747 ACPI_DMAR_TYPE_NAMESPACE = 4,
748 ACPI_DMAR_TYPE_SATC = 5,
749 ACPI_DMAR_TYPE_RESERVED = 6 /* 6 and greater are reserved */
750 };
751
752
753 /* DMAR Device Scope structure */
754
755 typedef struct acpi_dmar_device_scope
756 {
757 UINT8 EntryType;
758 UINT8 Length;
759 UINT16 Reserved;
760 UINT8 EnumerationId;
761 UINT8 Bus;
762
763 } ACPI_DMAR_DEVICE_SCOPE;
764
765 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
766
767 enum AcpiDmarScopeType
768 {
769 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
770 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
771 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
772 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
773 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
774 ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
775 ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */
776 };
777
778 typedef struct acpi_dmar_pci_path
779 {
780 UINT8 Device;
781 UINT8 Function;
782
783 } ACPI_DMAR_PCI_PATH;
784
785
786 /*
787 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
788 */
789
790 /* 0: Hardware Unit Definition */
791
792 typedef struct acpi_dmar_hardware_unit
793 {
794 ACPI_DMAR_HEADER Header;
795 UINT8 Flags;
796 UINT8 Reserved;
797 UINT16 Segment;
798 UINT64 Address; /* Register Base Address */
799
800 } ACPI_DMAR_HARDWARE_UNIT;
801
802 /* Masks for Flags field above */
803
804 #define ACPI_DMAR_INCLUDE_ALL (1)
805
806
807 /* 1: Reserved Memory Definition */
808
809 typedef struct acpi_dmar_reserved_memory
810 {
811 ACPI_DMAR_HEADER Header;
812 UINT16 Reserved;
813 UINT16 Segment;
814 UINT64 BaseAddress; /* 4K aligned base address */
815 UINT64 EndAddress; /* 4K aligned limit address */
816
817 } ACPI_DMAR_RESERVED_MEMORY;
818
819 /* Masks for Flags field above */
820
821 #define ACPI_DMAR_ALLOW_ALL (1)
822
823
824 /* 2: Root Port ATS Capability Reporting Structure */
825
826 typedef struct acpi_dmar_atsr
827 {
828 ACPI_DMAR_HEADER Header;
829 UINT8 Flags;
830 UINT8 Reserved;
831 UINT16 Segment;
832
833 } ACPI_DMAR_ATSR;
834
835 /* Masks for Flags field above */
836
837 #define ACPI_DMAR_ALL_PORTS (1)
838
839
840 /* 3: Remapping Hardware Static Affinity Structure */
841
842 typedef struct acpi_dmar_rhsa
843 {
844 ACPI_DMAR_HEADER Header;
845 UINT32 Reserved;
846 UINT64 BaseAddress;
847 UINT32 ProximityDomain;
848
849 } ACPI_DMAR_RHSA;
850
851
852 /* 4: ACPI Namespace Device Declaration Structure */
853
854 typedef struct acpi_dmar_andd
855 {
856 ACPI_DMAR_HEADER Header;
857 UINT8 Reserved[3];
858 UINT8 DeviceNumber;
859 char DeviceName[1];
860
861 } ACPI_DMAR_ANDD;
862
863
864 /* 5: SoC Integrated Address Translation Cache (SATC) */
865
866 typedef struct acpi_dmar_satc
867 {
868 ACPI_DMAR_HEADER Header;
869 UINT8 Flags;
870 UINT8 Reserved;
871 UINT16 Segment;
872
873 } ACPI_DMAR_SATC
874
875 ;
876 /*******************************************************************************
877 *
878 * DRTM - Dynamic Root of Trust for Measurement table
879 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
880 * Table version 1
881 *
882 ******************************************************************************/
883
884 typedef struct acpi_table_drtm
885 {
886 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
887 UINT64 EntryBaseAddress;
888 UINT64 EntryLength;
889 UINT32 EntryAddress32;
890 UINT64 EntryAddress64;
891 UINT64 ExitAddress;
892 UINT64 LogAreaAddress;
893 UINT32 LogAreaLength;
894 UINT64 ArchDependentAddress;
895 UINT32 Flags;
896
897 } ACPI_TABLE_DRTM;
898
899 /* Flag Definitions for above */
900
901 #define ACPI_DRTM_ACCESS_ALLOWED (1)
902 #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
903 #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
904 #define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
905
906
907 /* 1) Validated Tables List (64-bit addresses) */
908
909 typedef struct acpi_drtm_vtable_list
910 {
911 UINT32 ValidatedTableCount;
912 UINT64 ValidatedTables[1];
913
914 } ACPI_DRTM_VTABLE_LIST;
915
916 /* 2) Resources List (of Resource Descriptors) */
917
918 /* Resource Descriptor */
919
920 typedef struct acpi_drtm_resource
921 {
922 UINT8 Size[7];
923 UINT8 Type;
924 UINT64 Address;
925
926 } ACPI_DRTM_RESOURCE;
927
928 typedef struct acpi_drtm_resource_list
929 {
930 UINT32 ResourceCount;
931 ACPI_DRTM_RESOURCE Resources[1];
932
933 } ACPI_DRTM_RESOURCE_LIST;
934
935 /* 3) Platform-specific Identifiers List */
936
937 typedef struct acpi_drtm_dps_id
938 {
939 UINT32 DpsIdLength;
940 UINT8 DpsId[16];
941
942 } ACPI_DRTM_DPS_ID;
943
944
945 /*******************************************************************************
946 *
947 * ECDT - Embedded Controller Boot Resources Table
948 * Version 1
949 *
950 ******************************************************************************/
951
952 typedef struct acpi_table_ecdt
953 {
954 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
955 ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */
956 ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */
957 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
958 UINT8 Gpe; /* The GPE for the EC */
959 UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */
960
961 } ACPI_TABLE_ECDT;
962
963
964 /*******************************************************************************
965 *
966 * EINJ - Error Injection Table (ACPI 4.0)
967 * Version 1
968 *
969 ******************************************************************************/
970
971 typedef struct acpi_table_einj
972 {
973 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
974 UINT32 HeaderLength;
975 UINT8 Flags;
976 UINT8 Reserved[3];
977 UINT32 Entries;
978
979 } ACPI_TABLE_EINJ;
980
981
982 /* EINJ Injection Instruction Entries (actions) */
983
984 typedef struct acpi_einj_entry
985 {
986 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
987
988 } ACPI_EINJ_ENTRY;
989
990 /* Masks for Flags field above */
991
992 #define ACPI_EINJ_PRESERVE (1)
993
994 /* Values for Action field above */
995
996 enum AcpiEinjActions
997 {
998 ACPI_EINJ_BEGIN_OPERATION = 0,
999 ACPI_EINJ_GET_TRIGGER_TABLE = 1,
1000 ACPI_EINJ_SET_ERROR_TYPE = 2,
1001 ACPI_EINJ_GET_ERROR_TYPE = 3,
1002 ACPI_EINJ_END_OPERATION = 4,
1003 ACPI_EINJ_EXECUTE_OPERATION = 5,
1004 ACPI_EINJ_CHECK_BUSY_STATUS = 6,
1005 ACPI_EINJ_GET_COMMAND_STATUS = 7,
1006 ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
1007 ACPI_EINJ_GET_EXECUTE_TIMINGS = 9,
1008 ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */
1009 ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
1010 };
1011
1012 /* Values for Instruction field above */
1013
1014 enum AcpiEinjInstructions
1015 {
1016 ACPI_EINJ_READ_REGISTER = 0,
1017 ACPI_EINJ_READ_REGISTER_VALUE = 1,
1018 ACPI_EINJ_WRITE_REGISTER = 2,
1019 ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
1020 ACPI_EINJ_NOOP = 4,
1021 ACPI_EINJ_FLUSH_CACHELINE = 5,
1022 ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */
1023 };
1024
1025 typedef struct acpi_einj_error_type_with_addr
1026 {
1027 UINT32 ErrorType;
1028 UINT32 VendorStructOffset;
1029 UINT32 Flags;
1030 UINT32 ApicId;
1031 UINT64 Address;
1032 UINT64 Range;
1033 UINT32 PcieId;
1034
1035 } ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
1036
1037 typedef struct acpi_einj_vendor
1038 {
1039 UINT32 Length;
1040 UINT32 PcieId;
1041 UINT16 VendorId;
1042 UINT16 DeviceId;
1043 UINT8 RevisionId;
1044 UINT8 Reserved[3];
1045
1046 } ACPI_EINJ_VENDOR;
1047
1048
1049 /* EINJ Trigger Error Action Table */
1050
1051 typedef struct acpi_einj_trigger
1052 {
1053 UINT32 HeaderSize;
1054 UINT32 Revision;
1055 UINT32 TableSize;
1056 UINT32 EntryCount;
1057
1058 } ACPI_EINJ_TRIGGER;
1059
1060 /* Command status return values */
1061
1062 enum AcpiEinjCommandStatus
1063 {
1064 ACPI_EINJ_SUCCESS = 0,
1065 ACPI_EINJ_FAILURE = 1,
1066 ACPI_EINJ_INVALID_ACCESS = 2,
1067 ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */
1068 };
1069
1070
1071 /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
1072
1073 #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
1074 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
1075 #define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
1076 #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
1077 #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
1078 #define ACPI_EINJ_MEMORY_FATAL (1<<5)
1079 #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
1080 #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
1081 #define ACPI_EINJ_PCIX_FATAL (1<<8)
1082 #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
1083 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
1084 #define ACPI_EINJ_PLATFORM_FATAL (1<<11)
1085 #define ACPI_EINJ_VENDOR_DEFINED (1<<31)
1086
1087
1088 /*******************************************************************************
1089 *
1090 * ERST - Error Record Serialization Table (ACPI 4.0)
1091 * Version 1
1092 *
1093 ******************************************************************************/
1094
1095 typedef struct acpi_table_erst
1096 {
1097 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1098 UINT32 HeaderLength;
1099 UINT32 Reserved;
1100 UINT32 Entries;
1101
1102 } ACPI_TABLE_ERST;
1103
1104
1105 /* ERST Serialization Entries (actions) */
1106
1107 typedef struct acpi_erst_entry
1108 {
1109 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
1110
1111 } ACPI_ERST_ENTRY;
1112
1113 /* Masks for Flags field above */
1114
1115 #define ACPI_ERST_PRESERVE (1)
1116
1117 /* Values for Action field above */
1118
1119 enum AcpiErstActions
1120 {
1121 ACPI_ERST_BEGIN_WRITE = 0,
1122 ACPI_ERST_BEGIN_READ = 1,
1123 ACPI_ERST_BEGIN_CLEAR = 2,
1124 ACPI_ERST_END = 3,
1125 ACPI_ERST_SET_RECORD_OFFSET = 4,
1126 ACPI_ERST_EXECUTE_OPERATION = 5,
1127 ACPI_ERST_CHECK_BUSY_STATUS = 6,
1128 ACPI_ERST_GET_COMMAND_STATUS = 7,
1129 ACPI_ERST_GET_RECORD_ID = 8,
1130 ACPI_ERST_SET_RECORD_ID = 9,
1131 ACPI_ERST_GET_RECORD_COUNT = 10,
1132 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
1133 ACPI_ERST_NOT_USED = 12,
1134 ACPI_ERST_GET_ERROR_RANGE = 13,
1135 ACPI_ERST_GET_ERROR_LENGTH = 14,
1136 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
1137 ACPI_ERST_EXECUTE_TIMINGS = 16,
1138 ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */
1139 };
1140
1141 /* Values for Instruction field above */
1142
1143 enum AcpiErstInstructions
1144 {
1145 ACPI_ERST_READ_REGISTER = 0,
1146 ACPI_ERST_READ_REGISTER_VALUE = 1,
1147 ACPI_ERST_WRITE_REGISTER = 2,
1148 ACPI_ERST_WRITE_REGISTER_VALUE = 3,
1149 ACPI_ERST_NOOP = 4,
1150 ACPI_ERST_LOAD_VAR1 = 5,
1151 ACPI_ERST_LOAD_VAR2 = 6,
1152 ACPI_ERST_STORE_VAR1 = 7,
1153 ACPI_ERST_ADD = 8,
1154 ACPI_ERST_SUBTRACT = 9,
1155 ACPI_ERST_ADD_VALUE = 10,
1156 ACPI_ERST_SUBTRACT_VALUE = 11,
1157 ACPI_ERST_STALL = 12,
1158 ACPI_ERST_STALL_WHILE_TRUE = 13,
1159 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
1160 ACPI_ERST_GOTO = 15,
1161 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
1162 ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
1163 ACPI_ERST_MOVE_DATA = 18,
1164 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
1165 };
1166
1167 /* Command status return values */
1168
1169 enum AcpiErstCommandStatus
1170 {
1171 ACPI_ERST_SUCCESS = 0,
1172 ACPI_ERST_NO_SPACE = 1,
1173 ACPI_ERST_NOT_AVAILABLE = 2,
1174 ACPI_ERST_FAILURE = 3,
1175 ACPI_ERST_RECORD_EMPTY = 4,
1176 ACPI_ERST_NOT_FOUND = 5,
1177 ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */
1178 };
1179
1180
1181 /* Error Record Serialization Information */
1182
1183 typedef struct acpi_erst_info
1184 {
1185 UINT16 Signature; /* Should be "ER" */
1186 UINT8 Data[48];
1187
1188 } ACPI_ERST_INFO;
1189
1190
1191 /*******************************************************************************
1192 *
1193 * FPDT - Firmware Performance Data Table (ACPI 5.0)
1194 * Version 1
1195 *
1196 ******************************************************************************/
1197
1198 typedef struct acpi_table_fpdt
1199 {
1200 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1201
1202 } ACPI_TABLE_FPDT;
1203
1204
1205 /* FPDT subtable header (Performance Record Structure) */
1206
1207 typedef struct acpi_fpdt_header
1208 {
1209 UINT16 Type;
1210 UINT8 Length;
1211 UINT8 Revision;
1212
1213 } ACPI_FPDT_HEADER;
1214
1215 /* Values for Type field above */
1216
1217 enum AcpiFpdtType
1218 {
1219 ACPI_FPDT_TYPE_BOOT = 0,
1220 ACPI_FPDT_TYPE_S3PERF = 1
1221 };
1222
1223
1224 /*
1225 * FPDT subtables
1226 */
1227
1228 /* 0: Firmware Basic Boot Performance Record */
1229
1230 typedef struct acpi_fpdt_boot_pointer
1231 {
1232 ACPI_FPDT_HEADER Header;
1233 UINT8 Reserved[4];
1234 UINT64 Address;
1235
1236 } ACPI_FPDT_BOOT_POINTER;
1237
1238
1239 /* 1: S3 Performance Table Pointer Record */
1240
1241 typedef struct acpi_fpdt_s3pt_pointer
1242 {
1243 ACPI_FPDT_HEADER Header;
1244 UINT8 Reserved[4];
1245 UINT64 Address;
1246
1247 } ACPI_FPDT_S3PT_POINTER;
1248
1249
1250 /*
1251 * S3PT - S3 Performance Table. This table is pointed to by the
1252 * S3 Pointer Record above.
1253 */
1254 typedef struct acpi_table_s3pt
1255 {
1256 UINT8 Signature[4]; /* "S3PT" */
1257 UINT32 Length;
1258
1259 } ACPI_TABLE_S3PT;
1260
1261
1262 /*
1263 * S3PT Subtables (Not part of the actual FPDT)
1264 */
1265
1266 /* Values for Type field in S3PT header */
1267
1268 enum AcpiS3ptType
1269 {
1270 ACPI_S3PT_TYPE_RESUME = 0,
1271 ACPI_S3PT_TYPE_SUSPEND = 1,
1272 ACPI_FPDT_BOOT_PERFORMANCE = 2
1273 };
1274
1275 typedef struct acpi_s3pt_resume
1276 {
1277 ACPI_FPDT_HEADER Header;
1278 UINT32 ResumeCount;
1279 UINT64 FullResume;
1280 UINT64 AverageResume;
1281
1282 } ACPI_S3PT_RESUME;
1283
1284 typedef struct acpi_s3pt_suspend
1285 {
1286 ACPI_FPDT_HEADER Header;
1287 UINT64 SuspendStart;
1288 UINT64 SuspendEnd;
1289
1290 } ACPI_S3PT_SUSPEND;
1291
1292
1293 /*
1294 * FPDT Boot Performance Record (Not part of the actual FPDT)
1295 */
1296 typedef struct acpi_fpdt_boot
1297 {
1298 ACPI_FPDT_HEADER Header;
1299 UINT8 Reserved[4];
1300 UINT64 ResetEnd;
1301 UINT64 LoadStart;
1302 UINT64 StartupStart;
1303 UINT64 ExitServicesEntry;
1304 UINT64 ExitServicesExit;
1305
1306 } ACPI_FPDT_BOOT;
1307
1308
1309 /*******************************************************************************
1310 *
1311 * GTDT - Generic Timer Description Table (ACPI 5.1)
1312 * Version 2
1313 *
1314 ******************************************************************************/
1315
1316 typedef struct acpi_table_gtdt
1317 {
1318 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1319 UINT64 CounterBlockAddresss;
1320 UINT32 Reserved;
1321 UINT32 SecureEl1Interrupt;
1322 UINT32 SecureEl1Flags;
1323 UINT32 NonSecureEl1Interrupt;
1324 UINT32 NonSecureEl1Flags;
1325 UINT32 VirtualTimerInterrupt;
1326 UINT32 VirtualTimerFlags;
1327 UINT32 NonSecureEl2Interrupt;
1328 UINT32 NonSecureEl2Flags;
1329 UINT64 CounterReadBlockAddress;
1330 UINT32 PlatformTimerCount;
1331 UINT32 PlatformTimerOffset;
1332
1333 } ACPI_TABLE_GTDT;
1334
1335 /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
1336
1337 #define ACPI_GTDT_INTERRUPT_MODE (1)
1338 #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
1339 #define ACPI_GTDT_ALWAYS_ON (1<<2)
1340
1341 typedef struct acpi_gtdt_el2
1342 {
1343 UINT32 VirtualEL2TimerGsiv;
1344 UINT32 VirtualEL2TimerFlags;
1345 } ACPI_GTDT_EL2;
1346
1347
1348 /* Common GTDT subtable header */
1349
1350 typedef struct acpi_gtdt_header
1351 {
1352 UINT8 Type;
1353 UINT16 Length;
1354
1355 } ACPI_GTDT_HEADER;
1356
1357 /* Values for GTDT subtable type above */
1358
1359 enum AcpiGtdtType
1360 {
1361 ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
1362 ACPI_GTDT_TYPE_WATCHDOG = 1,
1363 ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */
1364 };
1365
1366
1367 /* GTDT Subtables, correspond to Type in acpi_gtdt_header */
1368
1369 /* 0: Generic Timer Block */
1370
1371 typedef struct acpi_gtdt_timer_block
1372 {
1373 ACPI_GTDT_HEADER Header;
1374 UINT8 Reserved;
1375 UINT64 BlockAddress;
1376 UINT32 TimerCount;
1377 UINT32 TimerOffset;
1378
1379 } ACPI_GTDT_TIMER_BLOCK;
1380
1381 /* Timer Sub-Structure, one per timer */
1382
1383 typedef struct acpi_gtdt_timer_entry
1384 {
1385 UINT8 FrameNumber;
1386 UINT8 Reserved[3];
1387 UINT64 BaseAddress;
1388 UINT64 El0BaseAddress;
1389 UINT32 TimerInterrupt;
1390 UINT32 TimerFlags;
1391 UINT32 VirtualTimerInterrupt;
1392 UINT32 VirtualTimerFlags;
1393 UINT32 CommonFlags;
1394
1395 } ACPI_GTDT_TIMER_ENTRY;
1396
1397 /* Flag Definitions: TimerFlags and VirtualTimerFlags above */
1398
1399 #define ACPI_GTDT_GT_IRQ_MODE (1)
1400 #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
1401
1402 /* Flag Definitions: CommonFlags above */
1403
1404 #define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
1405 #define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
1406
1407
1408 /* 1: SBSA Generic Watchdog Structure */
1409
1410 typedef struct acpi_gtdt_watchdog
1411 {
1412 ACPI_GTDT_HEADER Header;
1413 UINT8 Reserved;
1414 UINT64 RefreshFrameAddress;
1415 UINT64 ControlFrameAddress;
1416 UINT32 TimerInterrupt;
1417 UINT32 TimerFlags;
1418
1419 } ACPI_GTDT_WATCHDOG;
1420
1421 /* Flag Definitions: TimerFlags above */
1422
1423 #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
1424 #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
1425 #define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
1426
1427
1428 /*******************************************************************************
1429 *
1430 * HEST - Hardware Error Source Table (ACPI 4.0)
1431 * Version 1
1432 *
1433 ******************************************************************************/
1434
1435 typedef struct acpi_table_hest
1436 {
1437 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1438 UINT32 ErrorSourceCount;
1439
1440 } ACPI_TABLE_HEST;
1441
1442
1443 /* HEST subtable header */
1444
1445 typedef struct acpi_hest_header
1446 {
1447 UINT16 Type;
1448 UINT16 SourceId;
1449
1450 } ACPI_HEST_HEADER;
1451
1452
1453 /* Values for Type field above for subtables */
1454
1455 enum AcpiHestTypes
1456 {
1457 ACPI_HEST_TYPE_IA32_CHECK = 0,
1458 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
1459 ACPI_HEST_TYPE_IA32_NMI = 2,
1460 ACPI_HEST_TYPE_NOT_USED3 = 3,
1461 ACPI_HEST_TYPE_NOT_USED4 = 4,
1462 ACPI_HEST_TYPE_NOT_USED5 = 5,
1463 ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
1464 ACPI_HEST_TYPE_AER_ENDPOINT = 7,
1465 ACPI_HEST_TYPE_AER_BRIDGE = 8,
1466 ACPI_HEST_TYPE_GENERIC_ERROR = 9,
1467 ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,
1468 ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,
1469 ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */
1470 };
1471
1472
1473 /*
1474 * HEST substructures contained in subtables
1475 */
1476
1477 /*
1478 * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
1479 * ACPI_HEST_IA_CORRECTED structures.
1480 */
1481 typedef struct acpi_hest_ia_error_bank
1482 {
1483 UINT8 BankNumber;
1484 UINT8 ClearStatusOnInit;
1485 UINT8 StatusFormat;
1486 UINT8 Reserved;
1487 UINT32 ControlRegister;
1488 UINT64 ControlData;
1489 UINT32 StatusRegister;
1490 UINT32 AddressRegister;
1491 UINT32 MiscRegister;
1492
1493 } ACPI_HEST_IA_ERROR_BANK;
1494
1495
1496 /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
1497
1498 typedef struct acpi_hest_aer_common
1499 {
1500 UINT16 Reserved1;
1501 UINT8 Flags;
1502 UINT8 Enabled;
1503 UINT32 RecordsToPreallocate;
1504 UINT32 MaxSectionsPerRecord;
1505 UINT32 Bus; /* Bus and Segment numbers */
1506 UINT16 Device;
1507 UINT16 Function;
1508 UINT16 DeviceControl;
1509 UINT16 Reserved2;
1510 UINT32 UncorrectableMask;
1511 UINT32 UncorrectableSeverity;
1512 UINT32 CorrectableMask;
1513 UINT32 AdvancedCapabilities;
1514
1515 } ACPI_HEST_AER_COMMON;
1516
1517 /* Masks for HEST Flags fields */
1518
1519 #define ACPI_HEST_FIRMWARE_FIRST (1)
1520 #define ACPI_HEST_GLOBAL (1<<1)
1521 #define ACPI_HEST_GHES_ASSIST (1<<2)
1522
1523 /*
1524 * Macros to access the bus/segment numbers in Bus field above:
1525 * Bus number is encoded in bits 7:0
1526 * Segment number is encoded in bits 23:8
1527 */
1528 #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
1529 #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
1530
1531
1532 /* Hardware Error Notification */
1533
1534 typedef struct acpi_hest_notify
1535 {
1536 UINT8 Type;
1537 UINT8 Length;
1538 UINT16 ConfigWriteEnable;
1539 UINT32 PollInterval;
1540 UINT32 Vector;
1541 UINT32 PollingThresholdValue;
1542 UINT32 PollingThresholdWindow;
1543 UINT32 ErrorThresholdValue;
1544 UINT32 ErrorThresholdWindow;
1545
1546 } ACPI_HEST_NOTIFY;
1547
1548 /* Values for Notify Type field above */
1549
1550 enum AcpiHestNotifyTypes
1551 {
1552 ACPI_HEST_NOTIFY_POLLED = 0,
1553 ACPI_HEST_NOTIFY_EXTERNAL = 1,
1554 ACPI_HEST_NOTIFY_LOCAL = 2,
1555 ACPI_HEST_NOTIFY_SCI = 3,
1556 ACPI_HEST_NOTIFY_NMI = 4,
1557 ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */
1558 ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */
1559 ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */
1560 ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */
1561 ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */
1562 ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */
1563 ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */
1564 ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */
1565 };
1566
1567 /* Values for ConfigWriteEnable bitfield above */
1568
1569 #define ACPI_HEST_TYPE (1)
1570 #define ACPI_HEST_POLL_INTERVAL (1<<1)
1571 #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
1572 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
1573 #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
1574 #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
1575
1576
1577 /*
1578 * HEST subtables
1579 */
1580
1581 /* 0: IA32 Machine Check Exception */
1582
1583 typedef struct acpi_hest_ia_machine_check
1584 {
1585 ACPI_HEST_HEADER Header;
1586 UINT16 Reserved1;
1587 UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
1588 UINT8 Enabled;
1589 UINT32 RecordsToPreallocate;
1590 UINT32 MaxSectionsPerRecord;
1591 UINT64 GlobalCapabilityData;
1592 UINT64 GlobalControlData;
1593 UINT8 NumHardwareBanks;
1594 UINT8 Reserved3[7];
1595
1596 } ACPI_HEST_IA_MACHINE_CHECK;
1597
1598
1599 /* 1: IA32 Corrected Machine Check */
1600
1601 typedef struct acpi_hest_ia_corrected
1602 {
1603 ACPI_HEST_HEADER Header;
1604 UINT16 Reserved1;
1605 UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
1606 UINT8 Enabled;
1607 UINT32 RecordsToPreallocate;
1608 UINT32 MaxSectionsPerRecord;
1609 ACPI_HEST_NOTIFY Notify;
1610 UINT8 NumHardwareBanks;
1611 UINT8 Reserved2[3];
1612
1613 } ACPI_HEST_IA_CORRECTED;
1614
1615
1616 /* 2: IA32 Non-Maskable Interrupt */
1617
1618 typedef struct acpi_hest_ia_nmi
1619 {
1620 ACPI_HEST_HEADER Header;
1621 UINT32 Reserved;
1622 UINT32 RecordsToPreallocate;
1623 UINT32 MaxSectionsPerRecord;
1624 UINT32 MaxRawDataLength;
1625
1626 } ACPI_HEST_IA_NMI;
1627
1628
1629 /* 3,4,5: Not used */
1630
1631 /* 6: PCI Express Root Port AER */
1632
1633 typedef struct acpi_hest_aer_root
1634 {
1635 ACPI_HEST_HEADER Header;
1636 ACPI_HEST_AER_COMMON Aer;
1637 UINT32 RootErrorCommand;
1638
1639 } ACPI_HEST_AER_ROOT;
1640
1641
1642 /* 7: PCI Express AER (AER Endpoint) */
1643
1644 typedef struct acpi_hest_aer
1645 {
1646 ACPI_HEST_HEADER Header;
1647 ACPI_HEST_AER_COMMON Aer;
1648
1649 } ACPI_HEST_AER;
1650
1651
1652 /* 8: PCI Express/PCI-X Bridge AER */
1653
1654 typedef struct acpi_hest_aer_bridge
1655 {
1656 ACPI_HEST_HEADER Header;
1657 ACPI_HEST_AER_COMMON Aer;
1658 UINT32 UncorrectableMask2;
1659 UINT32 UncorrectableSeverity2;
1660 UINT32 AdvancedCapabilities2;
1661
1662 } ACPI_HEST_AER_BRIDGE;
1663
1664
1665 /* 9: Generic Hardware Error Source */
1666
1667 typedef struct acpi_hest_generic
1668 {
1669 ACPI_HEST_HEADER Header;
1670 UINT16 RelatedSourceId;
1671 UINT8 Reserved;
1672 UINT8 Enabled;
1673 UINT32 RecordsToPreallocate;
1674 UINT32 MaxSectionsPerRecord;
1675 UINT32 MaxRawDataLength;
1676 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
1677 ACPI_HEST_NOTIFY Notify;
1678 UINT32 ErrorBlockLength;
1679
1680 } ACPI_HEST_GENERIC;
1681
1682
1683 /* 10: Generic Hardware Error Source, version 2 */
1684
1685 typedef struct acpi_hest_generic_v2
1686 {
1687 ACPI_HEST_HEADER Header;
1688 UINT16 RelatedSourceId;
1689 UINT8 Reserved;
1690 UINT8 Enabled;
1691 UINT32 RecordsToPreallocate;
1692 UINT32 MaxSectionsPerRecord;
1693 UINT32 MaxRawDataLength;
1694 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
1695 ACPI_HEST_NOTIFY Notify;
1696 UINT32 ErrorBlockLength;
1697 ACPI_GENERIC_ADDRESS ReadAckRegister;
1698 UINT64 ReadAckPreserve;
1699 UINT64 ReadAckWrite;
1700
1701 } ACPI_HEST_GENERIC_V2;
1702
1703
1704 /* Generic Error Status block */
1705
1706 typedef struct acpi_hest_generic_status
1707 {
1708 UINT32 BlockStatus;
1709 UINT32 RawDataOffset;
1710 UINT32 RawDataLength;
1711 UINT32 DataLength;
1712 UINT32 ErrorSeverity;
1713
1714 } ACPI_HEST_GENERIC_STATUS;
1715
1716 /* Values for BlockStatus flags above */
1717
1718 #define ACPI_HEST_UNCORRECTABLE (1)
1719 #define ACPI_HEST_CORRECTABLE (1<<1)
1720 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
1721 #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
1722 #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
1723
1724
1725 /* Generic Error Data entry */
1726
1727 typedef struct acpi_hest_generic_data
1728 {
1729 UINT8 SectionType[16];
1730 UINT32 ErrorSeverity;
1731 UINT16 Revision;
1732 UINT8 ValidationBits;
1733 UINT8 Flags;
1734 UINT32 ErrorDataLength;
1735 UINT8 FruId[16];
1736 UINT8 FruText[20];
1737
1738 } ACPI_HEST_GENERIC_DATA;
1739
1740 /* Extension for revision 0x0300 */
1741
1742 typedef struct acpi_hest_generic_data_v300
1743 {
1744 UINT8 SectionType[16];
1745 UINT32 ErrorSeverity;
1746 UINT16 Revision;
1747 UINT8 ValidationBits;
1748 UINT8 Flags;
1749 UINT32 ErrorDataLength;
1750 UINT8 FruId[16];
1751 UINT8 FruText[20];
1752 UINT64 TimeStamp;
1753
1754 } ACPI_HEST_GENERIC_DATA_V300;
1755
1756 /* Values for ErrorSeverity above */
1757
1758 #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
1759 #define ACPI_HEST_GEN_ERROR_FATAL 1
1760 #define ACPI_HEST_GEN_ERROR_CORRECTED 2
1761 #define ACPI_HEST_GEN_ERROR_NONE 3
1762
1763 /* Flags for ValidationBits above */
1764
1765 #define ACPI_HEST_GEN_VALID_FRU_ID (1)
1766 #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
1767 #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
1768
1769
1770 /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
1771
1772 typedef struct acpi_hest_ia_deferred_check
1773 {
1774 ACPI_HEST_HEADER Header;
1775 UINT16 Reserved1;
1776 UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
1777 UINT8 Enabled;
1778 UINT32 RecordsToPreallocate;
1779 UINT32 MaxSectionsPerRecord;
1780 ACPI_HEST_NOTIFY Notify;
1781 UINT8 NumHardwareBanks;
1782 UINT8 Reserved2[3];
1783
1784 } ACPI_HEST_IA_DEFERRED_CHECK;
1785
1786
1787 /*******************************************************************************
1788 *
1789 * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3)
1790 *
1791 ******************************************************************************/
1792
1793 typedef struct acpi_table_hmat
1794 {
1795 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1796 UINT32 Reserved;
1797
1798 } ACPI_TABLE_HMAT;
1799
1800
1801 /* Values for HMAT structure types */
1802
1803 enum AcpiHmatType
1804 {
1805 ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subsystem address range */
1806 ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */
1807 ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */
1808 ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
1809 };
1810
1811 typedef struct acpi_hmat_structure
1812 {
1813 UINT16 Type;
1814 UINT16 Reserved;
1815 UINT32 Length;
1816
1817 } ACPI_HMAT_STRUCTURE;
1818
1819
1820 /*
1821 * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
1822 */
1823
1824 /* 0: Memory proximity domain attributes */
1825
1826 typedef struct acpi_hmat_proximity_domain
1827 {
1828 ACPI_HMAT_STRUCTURE Header;
1829 UINT16 Flags;
1830 UINT16 Reserved1;
1831 UINT32 InitiatorPD; /* Attached Initiator proximity domain */
1832 UINT32 MemoryPD; /* Memory proximity domain */
1833 UINT32 Reserved2;
1834 UINT64 Reserved3;
1835 UINT64 Reserved4;
1836
1837 } ACPI_HMAT_PROXIMITY_DOMAIN;
1838
1839 /* Masks for Flags field above */
1840
1841 #define ACPI_HMAT_INITIATOR_PD_VALID (1) /* 1: InitiatorPD field is valid */
1842
1843
1844 /* 1: System locality latency and bandwidth information */
1845
1846 typedef struct acpi_hmat_locality
1847 {
1848 ACPI_HMAT_STRUCTURE Header;
1849 UINT8 Flags;
1850 UINT8 DataType;
1851 UINT8 MinTransferSize;
1852 UINT8 Reserved1;
1853 UINT32 NumberOfInitiatorPDs;
1854 UINT32 NumberOfTargetPDs;
1855 UINT32 Reserved2;
1856 UINT64 EntryBaseUnit;
1857
1858 } ACPI_HMAT_LOCALITY;
1859
1860 /* Masks for Flags field above */
1861
1862 #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */
1863
1864 /* Values for Memory Hierarchy flags */
1865
1866 #define ACPI_HMAT_MEMORY 0
1867 #define ACPI_HMAT_1ST_LEVEL_CACHE 1
1868 #define ACPI_HMAT_2ND_LEVEL_CACHE 2
1869 #define ACPI_HMAT_3RD_LEVEL_CACHE 3
1870 #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */
1871 #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */
1872
1873
1874 /* Values for DataType field above */
1875
1876 #define ACPI_HMAT_ACCESS_LATENCY 0
1877 #define ACPI_HMAT_READ_LATENCY 1
1878 #define ACPI_HMAT_WRITE_LATENCY 2
1879 #define ACPI_HMAT_ACCESS_BANDWIDTH 3
1880 #define ACPI_HMAT_READ_BANDWIDTH 4
1881 #define ACPI_HMAT_WRITE_BANDWIDTH 5
1882
1883
1884 /* 2: Memory side cache information */
1885
1886 typedef struct acpi_hmat_cache
1887 {
1888 ACPI_HMAT_STRUCTURE Header;
1889 UINT32 MemoryPD;
1890 UINT32 Reserved1;
1891 UINT64 CacheSize;
1892 UINT32 CacheAttributes;
1893 UINT16 Reserved2;
1894 UINT16 NumberOfSMBIOSHandles;
1895
1896 } ACPI_HMAT_CACHE;
1897
1898 /* Masks for CacheAttributes field above */
1899
1900 #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
1901 #define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
1902 #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
1903 #define ACPI_HMAT_WRITE_POLICY (0x0000F000)
1904 #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
1905
1906 /* Values for cache associativity flag */
1907
1908 #define ACPI_HMAT_CA_NONE (0)
1909 #define ACPI_HMAT_CA_DIRECT_MAPPED (1)
1910 #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
1911
1912 /* Values for write policy flag */
1913
1914 #define ACPI_HMAT_CP_NONE (0)
1915 #define ACPI_HMAT_CP_WB (1)
1916 #define ACPI_HMAT_CP_WT (2)
1917
1918
1919 /*******************************************************************************
1920 *
1921 * HPET - High Precision Event Timer table
1922 * Version 1
1923 *
1924 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
1925 * Version 1.0a, October 2004
1926 *
1927 ******************************************************************************/
1928
1929 typedef struct acpi_table_hpet
1930 {
1931 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1932 UINT32 Id; /* Hardware ID of event timer block */
1933 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */
1934 UINT8 Sequence; /* HPET sequence number */
1935 UINT16 MinimumTick; /* Main counter min tick, periodic mode */
1936 UINT8 Flags;
1937
1938 } ACPI_TABLE_HPET;
1939
1940 /* Masks for Flags field above */
1941
1942 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
1943
1944 /* Values for Page Protect flags */
1945
1946 enum AcpiHpetPageProtect
1947 {
1948 ACPI_HPET_NO_PAGE_PROTECT = 0,
1949 ACPI_HPET_PAGE_PROTECT4 = 1,
1950 ACPI_HPET_PAGE_PROTECT64 = 2
1951 };
1952
1953
1954 /*******************************************************************************
1955 *
1956 * IBFT - Boot Firmware Table
1957 * Version 1
1958 *
1959 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
1960 * Specification", Version 1.01, March 1, 2007
1961 *
1962 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
1963 * Therefore, it is not currently supported by the disassembler.
1964 *
1965 ******************************************************************************/
1966
1967 typedef struct acpi_table_ibft
1968 {
1969 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1970 UINT8 Reserved[12];
1971
1972 } ACPI_TABLE_IBFT;
1973
1974
1975 /* IBFT common subtable header */
1976
1977 typedef struct acpi_ibft_header
1978 {
1979 UINT8 Type;
1980 UINT8 Version;
1981 UINT16 Length;
1982 UINT8 Index;
1983 UINT8 Flags;
1984
1985 } ACPI_IBFT_HEADER;
1986
1987 /* Values for Type field above */
1988
1989 enum AcpiIbftType
1990 {
1991 ACPI_IBFT_TYPE_NOT_USED = 0,
1992 ACPI_IBFT_TYPE_CONTROL = 1,
1993 ACPI_IBFT_TYPE_INITIATOR = 2,
1994 ACPI_IBFT_TYPE_NIC = 3,
1995 ACPI_IBFT_TYPE_TARGET = 4,
1996 ACPI_IBFT_TYPE_EXTENSIONS = 5,
1997 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
1998 };
1999
2000
2001 /* IBFT subtables */
2002
2003 typedef struct acpi_ibft_control
2004 {
2005 ACPI_IBFT_HEADER Header;
2006 UINT16 Extensions;
2007 UINT16 InitiatorOffset;
2008 UINT16 Nic0Offset;
2009 UINT16 Target0Offset;
2010 UINT16 Nic1Offset;
2011 UINT16 Target1Offset;
2012
2013 } ACPI_IBFT_CONTROL;
2014
2015 typedef struct acpi_ibft_initiator
2016 {
2017 ACPI_IBFT_HEADER Header;
2018 UINT8 SnsServer[16];
2019 UINT8 SlpServer[16];
2020 UINT8 PrimaryServer[16];
2021 UINT8 SecondaryServer[16];
2022 UINT16 NameLength;
2023 UINT16 NameOffset;
2024
2025 } ACPI_IBFT_INITIATOR;
2026
2027 typedef struct acpi_ibft_nic
2028 {
2029 ACPI_IBFT_HEADER Header;
2030 UINT8 IpAddress[16];
2031 UINT8 SubnetMaskPrefix;
2032 UINT8 Origin;
2033 UINT8 Gateway[16];
2034 UINT8 PrimaryDns[16];
2035 UINT8 SecondaryDns[16];
2036 UINT8 Dhcp[16];
2037 UINT16 Vlan;
2038 UINT8 MacAddress[6];
2039 UINT16 PciAddress;
2040 UINT16 NameLength;
2041 UINT16 NameOffset;
2042
2043 } ACPI_IBFT_NIC;
2044
2045 typedef struct acpi_ibft_target
2046 {
2047 ACPI_IBFT_HEADER Header;
2048 UINT8 TargetIpAddress[16];
2049 UINT16 TargetIpSocket;
2050 UINT8 TargetBootLun[8];
2051 UINT8 ChapType;
2052 UINT8 NicAssociation;
2053 UINT16 TargetNameLength;
2054 UINT16 TargetNameOffset;
2055 UINT16 ChapNameLength;
2056 UINT16 ChapNameOffset;
2057 UINT16 ChapSecretLength;
2058 UINT16 ChapSecretOffset;
2059 UINT16 ReverseChapNameLength;
2060 UINT16 ReverseChapNameOffset;
2061 UINT16 ReverseChapSecretLength;
2062 UINT16 ReverseChapSecretOffset;
2063
2064 } ACPI_IBFT_TARGET;
2065
2066
2067 /* Reset to default packing */
2068
2069 #pragma pack()
2070
2071 #endif /* __ACTBL1_H__ */
2072