]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - source/include/actbl2.h
Import ACPICA 20121220.
[FreeBSD/FreeBSD.git] / source / include / actbl2.h
1 /******************************************************************************
2  *
3  * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2012, 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 MERCHANTIBILITY 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 __ACTBL2_H__
45 #define __ACTBL2_H__
46
47
48 /*******************************************************************************
49  *
50  * Additional ACPI Tables (2)
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  * The tables in this file are defined by third-party specifications, and are
56  * not defined directly by the ACPI specification itself.
57  *
58  ******************************************************************************/
59
60
61 /*
62  * Values for description table header signatures for tables defined in this
63  * file. Useful because they make it more difficult to inadvertently type in
64  * the wrong signature.
65  */
66 #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
67 #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
68 #define ACPI_SIG_CSRT           "CSRT"      /* Core System Resource Table */
69 #define ACPI_SIG_DBG2           "DBG2"      /* Debug Port table type 2 */
70 #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
71 #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
72 #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
73 #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
74 #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
75 #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
76 #define ACPI_SIG_MCHI           "MCHI"      /* Management Controller Host Interface table */
77 #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
78 #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
79 #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
80 #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
81 #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
82 #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
83 #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
84 #define ACPI_SIG_WDDT           "WDDT"      /* Watchdog Timer Description Table */
85 #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
86
87 #ifdef ACPI_UNDEFINED_TABLES
88 /*
89  * These tables have been seen in the field, but no definition has been found
90  */
91 #define ACPI_SIG_ATKG           "ATKG"
92 #define ACPI_SIG_GSCI           "GSCI"      /* GMCH SCI table */
93 #define ACPI_SIG_IEIT           "IEIT"
94 #endif
95
96 /*
97  * All tables must be byte-packed to match the ACPI specification, since
98  * the tables are provided by the system BIOS.
99  */
100 #pragma pack(1)
101
102 /*
103  * Note: C bitfields are not used for this reason:
104  *
105  * "Bitfields are great and easy to read, but unfortunately the C language
106  * does not specify the layout of bitfields in memory, which means they are
107  * essentially useless for dealing with packed data in on-disk formats or
108  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
109  * this decision was a design error in C. Ritchie could have picked an order
110  * and stuck with it." Norman Ramsey.
111  * See http://stackoverflow.com/a/1053662/41661
112  */
113
114
115 /*******************************************************************************
116  *
117  * ASF - Alert Standard Format table (Signature "ASF!")
118  *       Revision 0x10
119  *
120  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
121  *
122  ******************************************************************************/
123
124 typedef struct acpi_table_asf
125 {
126     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
127
128 } ACPI_TABLE_ASF;
129
130
131 /* ASF subtable header */
132
133 typedef struct acpi_asf_header
134 {
135     UINT8                   Type;
136     UINT8                   Reserved;
137     UINT16                  Length;
138
139 } ACPI_ASF_HEADER;
140
141
142 /* Values for Type field above */
143
144 enum AcpiAsfType
145 {
146     ACPI_ASF_TYPE_INFO          = 0,
147     ACPI_ASF_TYPE_ALERT         = 1,
148     ACPI_ASF_TYPE_CONTROL       = 2,
149     ACPI_ASF_TYPE_BOOT          = 3,
150     ACPI_ASF_TYPE_ADDRESS       = 4,
151     ACPI_ASF_TYPE_RESERVED      = 5
152 };
153
154 /*
155  * ASF subtables
156  */
157
158 /* 0: ASF Information */
159
160 typedef struct acpi_asf_info
161 {
162     ACPI_ASF_HEADER         Header;
163     UINT8                   MinResetValue;
164     UINT8                   MinPollInterval;
165     UINT16                  SystemId;
166     UINT32                  MfgId;
167     UINT8                   Flags;
168     UINT8                   Reserved2[3];
169
170 } ACPI_ASF_INFO;
171
172 /* Masks for Flags field above */
173
174 #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
175
176
177 /* 1: ASF Alerts */
178
179 typedef struct acpi_asf_alert
180 {
181     ACPI_ASF_HEADER         Header;
182     UINT8                   AssertMask;
183     UINT8                   DeassertMask;
184     UINT8                   Alerts;
185     UINT8                   DataLength;
186
187 } ACPI_ASF_ALERT;
188
189 typedef struct acpi_asf_alert_data
190 {
191     UINT8                   Address;
192     UINT8                   Command;
193     UINT8                   Mask;
194     UINT8                   Value;
195     UINT8                   SensorType;
196     UINT8                   Type;
197     UINT8                   Offset;
198     UINT8                   SourceType;
199     UINT8                   Severity;
200     UINT8                   SensorNumber;
201     UINT8                   Entity;
202     UINT8                   Instance;
203
204 } ACPI_ASF_ALERT_DATA;
205
206
207 /* 2: ASF Remote Control */
208
209 typedef struct acpi_asf_remote
210 {
211     ACPI_ASF_HEADER         Header;
212     UINT8                   Controls;
213     UINT8                   DataLength;
214     UINT16                  Reserved2;
215
216 } ACPI_ASF_REMOTE;
217
218 typedef struct acpi_asf_control_data
219 {
220     UINT8                   Function;
221     UINT8                   Address;
222     UINT8                   Command;
223     UINT8                   Value;
224
225 } ACPI_ASF_CONTROL_DATA;
226
227
228 /* 3: ASF RMCP Boot Options */
229
230 typedef struct acpi_asf_rmcp
231 {
232     ACPI_ASF_HEADER         Header;
233     UINT8                   Capabilities[7];
234     UINT8                   CompletionCode;
235     UINT32                  EnterpriseId;
236     UINT8                   Command;
237     UINT16                  Parameter;
238     UINT16                  BootOptions;
239     UINT16                  OemParameters;
240
241 } ACPI_ASF_RMCP;
242
243
244 /* 4: ASF Address */
245
246 typedef struct acpi_asf_address
247 {
248     ACPI_ASF_HEADER         Header;
249     UINT8                   EpromAddress;
250     UINT8                   Devices;
251
252 } ACPI_ASF_ADDRESS;
253
254
255 /*******************************************************************************
256  *
257  * BOOT - Simple Boot Flag Table
258  *        Version 1
259  *
260  * Conforms to the "Simple Boot Flag Specification", Version 2.1
261  *
262  ******************************************************************************/
263
264 typedef struct acpi_table_boot
265 {
266     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
267     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
268     UINT8                   Reserved[3];
269
270 } ACPI_TABLE_BOOT;
271
272
273 /*******************************************************************************
274  *
275  * CSRT - Core System Resource Table
276  *        Version 0
277  *
278  * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
279  *
280  ******************************************************************************/
281
282 typedef struct acpi_table_csrt
283 {
284     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
285
286 } ACPI_TABLE_CSRT;
287
288
289 /* Resource Group subtable */
290
291 typedef struct acpi_csrt_group
292 {
293     UINT32                  Length;
294     UINT32                  VendorId;
295     UINT32                  SubvendorId;
296     UINT16                  DeviceId;
297     UINT16                  SubdeviceId;
298     UINT16                  Revision;
299     UINT16                  Reserved;
300     UINT32                  SharedInfoLength;
301
302     /* Shared data immediately follows (Length = SharedInfoLength) */
303
304 } ACPI_CSRT_GROUP;
305
306 /* Shared Info subtable */
307
308 typedef struct acpi_csrt_shared_info
309 {
310     UINT16                  MajorVersion;
311     UINT16                  MinorVersion;
312     UINT32                  MmioBaseLow;
313     UINT32                  MmioBaseHigh;
314     UINT32                  GsiInterrupt;
315     UINT8                   InterruptPolarity;
316     UINT8                   InterruptMode;
317     UINT8                   NumChannels;
318     UINT8                   DmaAddressWidth;
319     UINT16                  BaseRequestLine;
320     UINT16                  NumHandshakeSignals;
321     UINT32                  MaxBlockSize;
322
323     /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
324
325 } ACPI_CSRT_SHARED_INFO;
326
327 /* Resource Descriptor subtable */
328
329 typedef struct acpi_csrt_descriptor
330 {
331     UINT32                  Length;
332     UINT16                  Type;
333     UINT16                  Subtype;
334     UINT32                  Uid;
335
336     /* Resource-specific information immediately follows */
337
338 } ACPI_CSRT_DESCRIPTOR;
339
340
341 /* Resource Types */
342
343 #define ACPI_CSRT_TYPE_INTERRUPT    0x0001
344 #define ACPI_CSRT_TYPE_TIMER        0x0002
345 #define ACPI_CSRT_TYPE_DMA          0x0003
346
347 /* Resource Subtypes */
348
349 #define ACPI_CSRT_XRUPT_LINE        0x0000
350 #define ACPI_CSRT_XRUPT_CONTROLLER  0x0001
351 #define ACPI_CSRT_TIMER             0x0000
352 #define ACPI_CSRT_DMA_CHANNEL       0x0000
353 #define ACPI_CSRT_DMA_CONTROLLER    0x0001
354
355
356 /*******************************************************************************
357  *
358  * DBG2 - Debug Port Table 2
359  *        Version 0 (Both main table and subtables)
360  *
361  * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012.
362  *
363  ******************************************************************************/
364
365 typedef struct acpi_table_dbg2
366 {
367     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
368     UINT32                  InfoOffset;
369     UINT32                  InfoCount;
370
371 } ACPI_TABLE_DBG2;
372
373
374 /* Debug Device Information Subtable */
375
376 typedef struct acpi_dbg2_device
377 {
378     UINT8                   Revision;
379     UINT16                  Length;
380     UINT8                   RegisterCount;      /* Number of BaseAddress registers */
381     UINT16                  NamepathLength;
382     UINT16                  NamepathOffset;
383     UINT16                  OemDataLength;
384     UINT16                  OemDataOffset;
385     UINT16                  PortType;
386     UINT16                  PortSubtype;
387     UINT16                  Reserved;
388     UINT16                  BaseAddressOffset;
389     UINT16                  AddressSizeOffset;
390     /*
391      * Data that follows:
392      *    BaseAddress (required) - Each in 12-byte Generic Address Structure format.
393      *    AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
394      *    Namepath    (required) - Null terminated string. Single dot if not supported.
395      *    OemData     (optional) - Length is OemDataLength.
396      */
397 } ACPI_DBG2_DEVICE;
398
399 /* Types for PortType field above */
400
401 #define ACPI_DBG2_SERIAL_PORT       0x8000
402 #define ACPI_DBG2_1394_PORT         0x8001
403 #define ACPI_DBG2_USB_PORT          0x8002
404 #define ACPI_DBG2_NET_PORT          0x8003
405
406 /* Subtypes for PortSubtype field above */
407
408 #define ACPI_DBG2_16550_COMPATIBLE  0x0000
409 #define ACPI_DBG2_16550_SUBSET      0x0001
410
411 #define ACPI_DBG2_1394_STANDARD     0x0000
412
413 #define ACPI_DBG2_USB_XHCI          0x0000
414 #define ACPI_DBG2_USB_EHCI          0x0001
415
416
417 /*******************************************************************************
418  *
419  * DBGP - Debug Port table
420  *        Version 1
421  *
422  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
423  *
424  ******************************************************************************/
425
426 typedef struct acpi_table_dbgp
427 {
428     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
429     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
430     UINT8                   Reserved[3];
431     ACPI_GENERIC_ADDRESS    DebugPort;
432
433 } ACPI_TABLE_DBGP;
434
435
436 /*******************************************************************************
437  *
438  * DMAR - DMA Remapping table
439  *        Version 1
440  *
441  * Conforms to "Intel Virtualization Technology for Directed I/O",
442  * Version 1.2, Sept. 2008
443  *
444  ******************************************************************************/
445
446 typedef struct acpi_table_dmar
447 {
448     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
449     UINT8                   Width;              /* Host Address Width */
450     UINT8                   Flags;
451     UINT8                   Reserved[10];
452
453 } ACPI_TABLE_DMAR;
454
455 /* Masks for Flags field above */
456
457 #define ACPI_DMAR_INTR_REMAP        (1)
458
459
460 /* DMAR subtable header */
461
462 typedef struct acpi_dmar_header
463 {
464     UINT16                  Type;
465     UINT16                  Length;
466
467 } ACPI_DMAR_HEADER;
468
469 /* Values for subtable type in ACPI_DMAR_HEADER */
470
471 enum AcpiDmarType
472 {
473     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
474     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
475     ACPI_DMAR_TYPE_ATSR                 = 2,
476     ACPI_DMAR_HARDWARE_AFFINITY         = 3,
477     ACPI_DMAR_TYPE_RESERVED             = 4     /* 4 and greater are reserved */
478 };
479
480
481 /* DMAR Device Scope structure */
482
483 typedef struct acpi_dmar_device_scope
484 {
485     UINT8                   EntryType;
486     UINT8                   Length;
487     UINT16                  Reserved;
488     UINT8                   EnumerationId;
489     UINT8                   Bus;
490
491 } ACPI_DMAR_DEVICE_SCOPE;
492
493 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */
494
495 enum AcpiDmarScopeType
496 {
497     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
498     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
499     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
500     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
501     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
502     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 5     /* 5 and greater are reserved */
503 };
504
505 typedef struct acpi_dmar_pci_path
506 {
507     UINT8                   Device;
508     UINT8                   Function;
509
510 } ACPI_DMAR_PCI_PATH;
511
512
513 /*
514  * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER
515  */
516
517 /* 0: Hardware Unit Definition */
518
519 typedef struct acpi_dmar_hardware_unit
520 {
521     ACPI_DMAR_HEADER        Header;
522     UINT8                   Flags;
523     UINT8                   Reserved;
524     UINT16                  Segment;
525     UINT64                  Address;            /* Register Base Address */
526
527 } ACPI_DMAR_HARDWARE_UNIT;
528
529 /* Masks for Flags field above */
530
531 #define ACPI_DMAR_INCLUDE_ALL       (1)
532
533
534 /* 1: Reserved Memory Defininition */
535
536 typedef struct acpi_dmar_reserved_memory
537 {
538     ACPI_DMAR_HEADER        Header;
539     UINT16                  Reserved;
540     UINT16                  Segment;
541     UINT64                  BaseAddress;        /* 4K aligned base address */
542     UINT64                  EndAddress;         /* 4K aligned limit address */
543
544 } ACPI_DMAR_RESERVED_MEMORY;
545
546 /* Masks for Flags field above */
547
548 #define ACPI_DMAR_ALLOW_ALL         (1)
549
550
551 /* 2: Root Port ATS Capability Reporting Structure */
552
553 typedef struct acpi_dmar_atsr
554 {
555     ACPI_DMAR_HEADER        Header;
556     UINT8                   Flags;
557     UINT8                   Reserved;
558     UINT16                  Segment;
559
560 } ACPI_DMAR_ATSR;
561
562 /* Masks for Flags field above */
563
564 #define ACPI_DMAR_ALL_PORTS         (1)
565
566
567 /* 3: Remapping Hardware Static Affinity Structure */
568
569 typedef struct acpi_dmar_rhsa
570 {
571     ACPI_DMAR_HEADER        Header;
572     UINT32                  Reserved;
573     UINT64                  BaseAddress;
574     UINT32                  ProximityDomain;
575
576 } ACPI_DMAR_RHSA;
577
578
579 /*******************************************************************************
580  *
581  * HPET - High Precision Event Timer table
582  *        Version 1
583  *
584  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
585  * Version 1.0a, October 2004
586  *
587  ******************************************************************************/
588
589 typedef struct acpi_table_hpet
590 {
591     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
592     UINT32                  Id;                 /* Hardware ID of event timer block */
593     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
594     UINT8                   Sequence;           /* HPET sequence number */
595     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
596     UINT8                   Flags;
597
598 } ACPI_TABLE_HPET;
599
600 /* Masks for Flags field above */
601
602 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
603
604 /* Values for Page Protect flags */
605
606 enum AcpiHpetPageProtect
607 {
608     ACPI_HPET_NO_PAGE_PROTECT       = 0,
609     ACPI_HPET_PAGE_PROTECT4         = 1,
610     ACPI_HPET_PAGE_PROTECT64        = 2
611 };
612
613
614 /*******************************************************************************
615  *
616  * IBFT - Boot Firmware Table
617  *        Version 1
618  *
619  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
620  * Specification", Version 1.01, March 1, 2007
621  *
622  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
623  * Therefore, it is not currently supported by the disassembler.
624  *
625  ******************************************************************************/
626
627 typedef struct acpi_table_ibft
628 {
629     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
630     UINT8                   Reserved[12];
631
632 } ACPI_TABLE_IBFT;
633
634
635 /* IBFT common subtable header */
636
637 typedef struct acpi_ibft_header
638 {
639     UINT8                   Type;
640     UINT8                   Version;
641     UINT16                  Length;
642     UINT8                   Index;
643     UINT8                   Flags;
644
645 } ACPI_IBFT_HEADER;
646
647 /* Values for Type field above */
648
649 enum AcpiIbftType
650 {
651     ACPI_IBFT_TYPE_NOT_USED         = 0,
652     ACPI_IBFT_TYPE_CONTROL          = 1,
653     ACPI_IBFT_TYPE_INITIATOR        = 2,
654     ACPI_IBFT_TYPE_NIC              = 3,
655     ACPI_IBFT_TYPE_TARGET           = 4,
656     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
657     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
658 };
659
660
661 /* IBFT subtables */
662
663 typedef struct acpi_ibft_control
664 {
665     ACPI_IBFT_HEADER        Header;
666     UINT16                  Extensions;
667     UINT16                  InitiatorOffset;
668     UINT16                  Nic0Offset;
669     UINT16                  Target0Offset;
670     UINT16                  Nic1Offset;
671     UINT16                  Target1Offset;
672
673 } ACPI_IBFT_CONTROL;
674
675 typedef struct acpi_ibft_initiator
676 {
677     ACPI_IBFT_HEADER        Header;
678     UINT8                   SnsServer[16];
679     UINT8                   SlpServer[16];
680     UINT8                   PrimaryServer[16];
681     UINT8                   SecondaryServer[16];
682     UINT16                  NameLength;
683     UINT16                  NameOffset;
684
685 } ACPI_IBFT_INITIATOR;
686
687 typedef struct acpi_ibft_nic
688 {
689     ACPI_IBFT_HEADER        Header;
690     UINT8                   IpAddress[16];
691     UINT8                   SubnetMaskPrefix;
692     UINT8                   Origin;
693     UINT8                   Gateway[16];
694     UINT8                   PrimaryDns[16];
695     UINT8                   SecondaryDns[16];
696     UINT8                   Dhcp[16];
697     UINT16                  Vlan;
698     UINT8                   MacAddress[6];
699     UINT16                  PciAddress;
700     UINT16                  NameLength;
701     UINT16                  NameOffset;
702
703 } ACPI_IBFT_NIC;
704
705 typedef struct acpi_ibft_target
706 {
707     ACPI_IBFT_HEADER        Header;
708     UINT8                   TargetIpAddress[16];
709     UINT16                  TargetIpSocket;
710     UINT8                   TargetBootLun[8];
711     UINT8                   ChapType;
712     UINT8                   NicAssociation;
713     UINT16                  TargetNameLength;
714     UINT16                  TargetNameOffset;
715     UINT16                  ChapNameLength;
716     UINT16                  ChapNameOffset;
717     UINT16                  ChapSecretLength;
718     UINT16                  ChapSecretOffset;
719     UINT16                  ReverseChapNameLength;
720     UINT16                  ReverseChapNameOffset;
721     UINT16                  ReverseChapSecretLength;
722     UINT16                  ReverseChapSecretOffset;
723
724 } ACPI_IBFT_TARGET;
725
726
727 /*******************************************************************************
728  *
729  * IVRS - I/O Virtualization Reporting Structure
730  *        Version 1
731  *
732  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
733  * Revision 1.26, February 2009.
734  *
735  ******************************************************************************/
736
737 typedef struct acpi_table_ivrs
738 {
739     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
740     UINT32                  Info;               /* Common virtualization info */
741     UINT64                  Reserved;
742
743 } ACPI_TABLE_IVRS;
744
745 /* Values for Info field above */
746
747 #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
748 #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
749 #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
750
751
752 /* IVRS subtable header */
753
754 typedef struct acpi_ivrs_header
755 {
756     UINT8                   Type;               /* Subtable type */
757     UINT8                   Flags;
758     UINT16                  Length;             /* Subtable length */
759     UINT16                  DeviceId;           /* ID of IOMMU */
760
761 } ACPI_IVRS_HEADER;
762
763 /* Values for subtable Type above */
764
765 enum AcpiIvrsType
766 {
767     ACPI_IVRS_TYPE_HARDWARE         = 0x10,
768     ACPI_IVRS_TYPE_MEMORY1          = 0x20,
769     ACPI_IVRS_TYPE_MEMORY2          = 0x21,
770     ACPI_IVRS_TYPE_MEMORY3          = 0x22
771 };
772
773 /* Masks for Flags field above for IVHD subtable */
774
775 #define ACPI_IVHD_TT_ENABLE         (1)
776 #define ACPI_IVHD_PASS_PW           (1<<1)
777 #define ACPI_IVHD_RES_PASS_PW       (1<<2)
778 #define ACPI_IVHD_ISOC              (1<<3)
779 #define ACPI_IVHD_IOTLB             (1<<4)
780
781 /* Masks for Flags field above for IVMD subtable */
782
783 #define ACPI_IVMD_UNITY             (1)
784 #define ACPI_IVMD_READ              (1<<1)
785 #define ACPI_IVMD_WRITE             (1<<2)
786 #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
787
788
789 /*
790  * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
791  */
792
793 /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
794
795 typedef struct acpi_ivrs_hardware
796 {
797     ACPI_IVRS_HEADER        Header;
798     UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
799     UINT64                  BaseAddress;        /* IOMMU control registers */
800     UINT16                  PciSegmentGroup;
801     UINT16                  Info;               /* MSI number and unit ID */
802     UINT32                  Reserved;
803
804 } ACPI_IVRS_HARDWARE;
805
806 /* Masks for Info field above */
807
808 #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
809 #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
810
811
812 /*
813  * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
814  * Upper two bits of the Type field are the (encoded) length of the structure.
815  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
816  * are reserved for future use but not defined.
817  */
818 typedef struct acpi_ivrs_de_header
819 {
820     UINT8                   Type;
821     UINT16                  Id;
822     UINT8                   DataSetting;
823
824 } ACPI_IVRS_DE_HEADER;
825
826 /* Length of device entry is in the top two bits of Type field above */
827
828 #define ACPI_IVHD_ENTRY_LENGTH      0xC0
829
830 /* Values for device entry Type field above */
831
832 enum AcpiIvrsDeviceEntryType
833 {
834     /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
835
836     ACPI_IVRS_TYPE_PAD4             = 0,
837     ACPI_IVRS_TYPE_ALL              = 1,
838     ACPI_IVRS_TYPE_SELECT           = 2,
839     ACPI_IVRS_TYPE_START            = 3,
840     ACPI_IVRS_TYPE_END              = 4,
841
842     /* 8-byte device entries */
843
844     ACPI_IVRS_TYPE_PAD8             = 64,
845     ACPI_IVRS_TYPE_NOT_USED         = 65,
846     ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
847     ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
848     ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
849     ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
850     ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
851 };
852
853 /* Values for Data field above */
854
855 #define ACPI_IVHD_INIT_PASS         (1)
856 #define ACPI_IVHD_EINT_PASS         (1<<1)
857 #define ACPI_IVHD_NMI_PASS          (1<<2)
858 #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
859 #define ACPI_IVHD_LINT0_PASS        (1<<6)
860 #define ACPI_IVHD_LINT1_PASS        (1<<7)
861
862
863 /* Types 0-4: 4-byte device entry */
864
865 typedef struct acpi_ivrs_device4
866 {
867     ACPI_IVRS_DE_HEADER     Header;
868
869 } ACPI_IVRS_DEVICE4;
870
871 /* Types 66-67: 8-byte device entry */
872
873 typedef struct acpi_ivrs_device8a
874 {
875     ACPI_IVRS_DE_HEADER     Header;
876     UINT8                   Reserved1;
877     UINT16                  UsedId;
878     UINT8                   Reserved2;
879
880 } ACPI_IVRS_DEVICE8A;
881
882 /* Types 70-71: 8-byte device entry */
883
884 typedef struct acpi_ivrs_device8b
885 {
886     ACPI_IVRS_DE_HEADER     Header;
887     UINT32                  ExtendedData;
888
889 } ACPI_IVRS_DEVICE8B;
890
891 /* Values for ExtendedData above */
892
893 #define ACPI_IVHD_ATS_DISABLED      (1<<31)
894
895 /* Type 72: 8-byte device entry */
896
897 typedef struct acpi_ivrs_device8c
898 {
899     ACPI_IVRS_DE_HEADER     Header;
900     UINT8                   Handle;
901     UINT16                  UsedId;
902     UINT8                   Variety;
903
904 } ACPI_IVRS_DEVICE8C;
905
906 /* Values for Variety field above */
907
908 #define ACPI_IVHD_IOAPIC            1
909 #define ACPI_IVHD_HPET              2
910
911
912 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
913
914 typedef struct acpi_ivrs_memory
915 {
916     ACPI_IVRS_HEADER        Header;
917     UINT16                  AuxData;
918     UINT64                  Reserved;
919     UINT64                  StartAddress;
920     UINT64                  MemoryLength;
921
922 } ACPI_IVRS_MEMORY;
923
924
925 /*******************************************************************************
926  *
927  * MCFG - PCI Memory Mapped Configuration table and sub-table
928  *        Version 1
929  *
930  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
931  *
932  ******************************************************************************/
933
934 typedef struct acpi_table_mcfg
935 {
936     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
937     UINT8                   Reserved[8];
938
939 } ACPI_TABLE_MCFG;
940
941
942 /* Subtable */
943
944 typedef struct acpi_mcfg_allocation
945 {
946     UINT64                  Address;            /* Base address, processor-relative */
947     UINT16                  PciSegment;         /* PCI segment group number */
948     UINT8                   StartBusNumber;     /* Starting PCI Bus number */
949     UINT8                   EndBusNumber;       /* Final PCI Bus number */
950     UINT32                  Reserved;
951
952 } ACPI_MCFG_ALLOCATION;
953
954
955 /*******************************************************************************
956  *
957  * MCHI - Management Controller Host Interface Table
958  *        Version 1
959  *
960  * Conforms to "Management Component Transport Protocol (MCTP) Host
961  * Interface Specification", Revision 1.0.0a, October 13, 2009
962  *
963  ******************************************************************************/
964
965 typedef struct acpi_table_mchi
966 {
967     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
968     UINT8                   InterfaceType;
969     UINT8                   Protocol;
970     UINT64                  ProtocolData;
971     UINT8                   InterruptType;
972     UINT8                   Gpe;
973     UINT8                   PciDeviceFlag;
974     UINT32                  GlobalInterrupt;
975     ACPI_GENERIC_ADDRESS    ControlRegister;
976     UINT8                   PciSegment;
977     UINT8                   PciBus;
978     UINT8                   PciDevice;
979     UINT8                   PciFunction;
980
981 } ACPI_TABLE_MCHI;
982
983
984 /*******************************************************************************
985  *
986  * SLIC - Software Licensing Description Table
987  *        Version 1
988  *
989  * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems",
990  * Copyright 2006
991  *
992  ******************************************************************************/
993
994 /* Basic SLIC table is only the common ACPI header */
995
996 typedef struct acpi_table_slic
997 {
998     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
999
1000 } ACPI_TABLE_SLIC;
1001
1002
1003 /* Common SLIC subtable header */
1004
1005 typedef struct acpi_slic_header
1006 {
1007     UINT32                  Type;
1008     UINT32                  Length;
1009
1010 } ACPI_SLIC_HEADER;
1011
1012 /* Values for Type field above */
1013
1014 enum AcpiSlicType
1015 {
1016     ACPI_SLIC_TYPE_PUBLIC_KEY           = 0,
1017     ACPI_SLIC_TYPE_WINDOWS_MARKER       = 1,
1018     ACPI_SLIC_TYPE_RESERVED             = 2    /* 2 and greater are reserved */
1019 };
1020
1021
1022 /*
1023  * SLIC Sub-tables, correspond to Type in ACPI_SLIC_HEADER
1024  */
1025
1026 /* 0: Public Key Structure */
1027
1028 typedef struct acpi_slic_key
1029 {
1030     ACPI_SLIC_HEADER        Header;
1031     UINT8                   KeyType;
1032     UINT8                   Version;
1033     UINT16                  Reserved;
1034     UINT32                  Algorithm;
1035     char                    Magic[4];
1036     UINT32                  BitLength;
1037     UINT32                  Exponent;
1038     UINT8                   Modulus[128];
1039
1040 } ACPI_SLIC_KEY;
1041
1042
1043 /* 1: Windows Marker Structure */
1044
1045 typedef struct acpi_slic_marker
1046 {
1047     ACPI_SLIC_HEADER        Header;
1048     UINT32                  Version;
1049     char                    OemId[ACPI_OEM_ID_SIZE];            /* ASCII OEM identification */
1050     char                    OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */
1051     char                    WindowsFlag[8];
1052     UINT32                  SlicVersion;
1053     UINT8                   Reserved[16];
1054     UINT8                   Signature[128];
1055
1056 } ACPI_SLIC_MARKER;
1057
1058
1059 /*******************************************************************************
1060  *
1061  * SPCR - Serial Port Console Redirection table
1062  *        Version 1
1063  *
1064  * Conforms to "Serial Port Console Redirection Table",
1065  * Version 1.00, January 11, 2002
1066  *
1067  ******************************************************************************/
1068
1069 typedef struct acpi_table_spcr
1070 {
1071     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1072     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
1073     UINT8                   Reserved[3];
1074     ACPI_GENERIC_ADDRESS    SerialPort;
1075     UINT8                   InterruptType;
1076     UINT8                   PcInterrupt;
1077     UINT32                  Interrupt;
1078     UINT8                   BaudRate;
1079     UINT8                   Parity;
1080     UINT8                   StopBits;
1081     UINT8                   FlowControl;
1082     UINT8                   TerminalType;
1083     UINT8                   Reserved1;
1084     UINT16                  PciDeviceId;
1085     UINT16                  PciVendorId;
1086     UINT8                   PciBus;
1087     UINT8                   PciDevice;
1088     UINT8                   PciFunction;
1089     UINT32                  PciFlags;
1090     UINT8                   PciSegment;
1091     UINT32                  Reserved2;
1092
1093 } ACPI_TABLE_SPCR;
1094
1095 /* Masks for PciFlags field above */
1096
1097 #define ACPI_SPCR_DO_NOT_DISABLE    (1)
1098
1099
1100 /*******************************************************************************
1101  *
1102  * SPMI - Server Platform Management Interface table
1103  *        Version 5
1104  *
1105  * Conforms to "Intelligent Platform Management Interface Specification
1106  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
1107  * June 12, 2009 markup.
1108  *
1109  ******************************************************************************/
1110
1111 typedef struct acpi_table_spmi
1112 {
1113     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1114     UINT8                   InterfaceType;
1115     UINT8                   Reserved;           /* Must be 1 */
1116     UINT16                  SpecRevision;       /* Version of IPMI */
1117     UINT8                   InterruptType;
1118     UINT8                   GpeNumber;          /* GPE assigned */
1119     UINT8                   Reserved1;
1120     UINT8                   PciDeviceFlag;
1121     UINT32                  Interrupt;
1122     ACPI_GENERIC_ADDRESS    IpmiRegister;
1123     UINT8                   PciSegment;
1124     UINT8                   PciBus;
1125     UINT8                   PciDevice;
1126     UINT8                   PciFunction;
1127     UINT8                   Reserved2;
1128
1129 } ACPI_TABLE_SPMI;
1130
1131 /* Values for InterfaceType above */
1132
1133 enum AcpiSpmiInterfaceTypes
1134 {
1135     ACPI_SPMI_NOT_USED              = 0,
1136     ACPI_SPMI_KEYBOARD              = 1,
1137     ACPI_SPMI_SMI                   = 2,
1138     ACPI_SPMI_BLOCK_TRANSFER        = 3,
1139     ACPI_SPMI_SMBUS                 = 4,
1140     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
1141 };
1142
1143
1144 /*******************************************************************************
1145  *
1146  * TCPA - Trusted Computing Platform Alliance table
1147  *        Version 1
1148  *
1149  * Conforms to "TCG PC Specific Implementation Specification",
1150  * Version 1.1, August 18, 2003
1151  *
1152  ******************************************************************************/
1153
1154 typedef struct acpi_table_tcpa
1155 {
1156     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1157     UINT16                  Reserved;
1158     UINT32                  MaxLogLength;       /* Maximum length for the event log area */
1159     UINT64                  LogAddress;         /* Address of the event log area */
1160
1161 } ACPI_TABLE_TCPA;
1162
1163
1164 /*******************************************************************************
1165  *
1166  * UEFI - UEFI Boot optimization Table
1167  *        Version 1
1168  *
1169  * Conforms to "Unified Extensible Firmware Interface Specification",
1170  * Version 2.3, May 8, 2009
1171  *
1172  ******************************************************************************/
1173
1174 typedef struct acpi_table_uefi
1175 {
1176     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1177     UINT8                   Identifier[16];     /* UUID identifier */
1178     UINT16                  DataOffset;         /* Offset of remaining data in table */
1179
1180 } ACPI_TABLE_UEFI;
1181
1182
1183 /*******************************************************************************
1184  *
1185  * WAET - Windows ACPI Emulated devices Table
1186  *        Version 1
1187  *
1188  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
1189  *
1190  ******************************************************************************/
1191
1192 typedef struct acpi_table_waet
1193 {
1194     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1195     UINT32                  Flags;
1196
1197 } ACPI_TABLE_WAET;
1198
1199 /* Masks for Flags field above */
1200
1201 #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
1202 #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
1203
1204
1205 /*******************************************************************************
1206  *
1207  * WDAT - Watchdog Action Table
1208  *        Version 1
1209  *
1210  * Conforms to "Hardware Watchdog Timers Design Specification",
1211  * Copyright 2006 Microsoft Corporation.
1212  *
1213  ******************************************************************************/
1214
1215 typedef struct acpi_table_wdat
1216 {
1217     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1218     UINT32                  HeaderLength;       /* Watchdog Header Length */
1219     UINT16                  PciSegment;         /* PCI Segment number */
1220     UINT8                   PciBus;             /* PCI Bus number */
1221     UINT8                   PciDevice;          /* PCI Device number */
1222     UINT8                   PciFunction;        /* PCI Function number */
1223     UINT8                   Reserved[3];
1224     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
1225     UINT32                  MaxCount;           /* Maximum counter value supported */
1226     UINT32                  MinCount;           /* Minimum counter value */
1227     UINT8                   Flags;
1228     UINT8                   Reserved2[3];
1229     UINT32                  Entries;            /* Number of watchdog entries that follow */
1230
1231 } ACPI_TABLE_WDAT;
1232
1233 /* Masks for Flags field above */
1234
1235 #define ACPI_WDAT_ENABLED           (1)
1236 #define ACPI_WDAT_STOPPED           0x80
1237
1238
1239 /* WDAT Instruction Entries (actions) */
1240
1241 typedef struct acpi_wdat_entry
1242 {
1243     UINT8                   Action;
1244     UINT8                   Instruction;
1245     UINT16                  Reserved;
1246     ACPI_GENERIC_ADDRESS    RegisterRegion;
1247     UINT32                  Value;              /* Value used with Read/Write register */
1248     UINT32                  Mask;               /* Bitmask required for this register instruction */
1249
1250 } ACPI_WDAT_ENTRY;
1251
1252 /* Values for Action field above */
1253
1254 enum AcpiWdatActions
1255 {
1256     ACPI_WDAT_RESET                 = 1,
1257     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1258     ACPI_WDAT_GET_COUNTDOWN         = 5,
1259     ACPI_WDAT_SET_COUNTDOWN         = 6,
1260     ACPI_WDAT_GET_RUNNING_STATE     = 8,
1261     ACPI_WDAT_SET_RUNNING_STATE     = 9,
1262     ACPI_WDAT_GET_STOPPED_STATE     = 10,
1263     ACPI_WDAT_SET_STOPPED_STATE     = 11,
1264     ACPI_WDAT_GET_REBOOT            = 16,
1265     ACPI_WDAT_SET_REBOOT            = 17,
1266     ACPI_WDAT_GET_SHUTDOWN          = 18,
1267     ACPI_WDAT_SET_SHUTDOWN          = 19,
1268     ACPI_WDAT_GET_STATUS            = 32,
1269     ACPI_WDAT_SET_STATUS            = 33,
1270     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
1271 };
1272
1273 /* Values for Instruction field above */
1274
1275 enum AcpiWdatInstructions
1276 {
1277     ACPI_WDAT_READ_VALUE            = 0,
1278     ACPI_WDAT_READ_COUNTDOWN        = 1,
1279     ACPI_WDAT_WRITE_VALUE           = 2,
1280     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
1281     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
1282     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
1283 };
1284
1285
1286 /*******************************************************************************
1287  *
1288  * WDDT - Watchdog Descriptor Table
1289  *        Version 1
1290  *
1291  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
1292  * Version 001, September 2002
1293  *
1294  ******************************************************************************/
1295
1296 typedef struct acpi_table_wddt
1297 {
1298     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1299     UINT16                  SpecVersion;
1300     UINT16                  TableVersion;
1301     UINT16                  PciVendorId;
1302     ACPI_GENERIC_ADDRESS    Address;
1303     UINT16                  MaxCount;           /* Maximum counter value supported */
1304     UINT16                  MinCount;           /* Minimum counter value supported */
1305     UINT16                  Period;
1306     UINT16                  Status;
1307     UINT16                  Capability;
1308
1309 } ACPI_TABLE_WDDT;
1310
1311 /* Flags for Status field above */
1312
1313 #define ACPI_WDDT_AVAILABLE     (1)
1314 #define ACPI_WDDT_ACTIVE        (1<<1)
1315 #define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
1316 #define ACPI_WDDT_USER_RESET    (1<<11)
1317 #define ACPI_WDDT_WDT_RESET     (1<<12)
1318 #define ACPI_WDDT_POWER_FAIL    (1<<13)
1319 #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
1320
1321 /* Flags for Capability field above */
1322
1323 #define ACPI_WDDT_AUTO_RESET    (1)
1324 #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1325
1326
1327 /*******************************************************************************
1328  *
1329  * WDRT - Watchdog Resource Table
1330  *        Version 1
1331  *
1332  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1333  * Version 1.01, August 28, 2006
1334  *
1335  ******************************************************************************/
1336
1337 typedef struct acpi_table_wdrt
1338 {
1339     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1340     ACPI_GENERIC_ADDRESS    ControlRegister;
1341     ACPI_GENERIC_ADDRESS    CountRegister;
1342     UINT16                  PciDeviceId;
1343     UINT16                  PciVendorId;
1344     UINT8                   PciBus;             /* PCI Bus number */
1345     UINT8                   PciDevice;          /* PCI Device number */
1346     UINT8                   PciFunction;        /* PCI Function number */
1347     UINT8                   PciSegment;         /* PCI Segment number */
1348     UINT16                  MaxCount;           /* Maximum counter value supported */
1349     UINT8                   Units;
1350
1351 } ACPI_TABLE_WDRT;
1352
1353
1354 /* Reset to default packing */
1355
1356 #pragma pack()
1357
1358 #endif /* __ACTBL2_H__ */