xref: /onnv-gate/usr/src/uts/intel/sys/acpi/actbl2.h (revision 11225:eb6056029d84)
10Sstevel@tonic-gate /******************************************************************************
20Sstevel@tonic-gate  *
30Sstevel@tonic-gate  * Name: actbl2.h - ACPI Specification Revision 2.0 Tables
40Sstevel@tonic-gate  *
50Sstevel@tonic-gate  *****************************************************************************/
60Sstevel@tonic-gate 
70Sstevel@tonic-gate /******************************************************************************
80Sstevel@tonic-gate  *
90Sstevel@tonic-gate  * 1. Copyright Notice
100Sstevel@tonic-gate  *
119980SDana.Myers@Sun.COM  * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp.
120Sstevel@tonic-gate  * All rights reserved.
130Sstevel@tonic-gate  *
140Sstevel@tonic-gate  * 2. License
150Sstevel@tonic-gate  *
160Sstevel@tonic-gate  * 2.1. This is your license from Intel Corp. under its intellectual property
170Sstevel@tonic-gate  * rights.  You may have additional license terms from the party that provided
180Sstevel@tonic-gate  * you this software, covering your right to use that party's intellectual
190Sstevel@tonic-gate  * property rights.
200Sstevel@tonic-gate  *
210Sstevel@tonic-gate  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
220Sstevel@tonic-gate  * copy of the source code appearing in this file ("Covered Code") an
230Sstevel@tonic-gate  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
240Sstevel@tonic-gate  * base code distributed originally by Intel ("Original Intel Code") to copy,
250Sstevel@tonic-gate  * make derivatives, distribute, use and display any portion of the Covered
260Sstevel@tonic-gate  * Code in any form, with the right to sublicense such rights; and
270Sstevel@tonic-gate  *
280Sstevel@tonic-gate  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
290Sstevel@tonic-gate  * license (with the right to sublicense), under only those claims of Intel
300Sstevel@tonic-gate  * patents that are infringed by the Original Intel Code, to make, use, sell,
310Sstevel@tonic-gate  * offer to sell, and import the Covered Code and derivative works thereof
320Sstevel@tonic-gate  * solely to the minimum extent necessary to exercise the above copyright
330Sstevel@tonic-gate  * license, and in no event shall the patent license extend to any additions
340Sstevel@tonic-gate  * to or modifications of the Original Intel Code.  No other license or right
350Sstevel@tonic-gate  * is granted directly or by implication, estoppel or otherwise;
360Sstevel@tonic-gate  *
370Sstevel@tonic-gate  * The above copyright and patent license is granted only if the following
380Sstevel@tonic-gate  * conditions are met:
390Sstevel@tonic-gate  *
400Sstevel@tonic-gate  * 3. Conditions
410Sstevel@tonic-gate  *
420Sstevel@tonic-gate  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
430Sstevel@tonic-gate  * Redistribution of source code of any substantial portion of the Covered
440Sstevel@tonic-gate  * Code or modification with rights to further distribute source must include
450Sstevel@tonic-gate  * the above Copyright Notice, the above License, this list of Conditions,
460Sstevel@tonic-gate  * and the following Disclaimer and Export Compliance provision.  In addition,
470Sstevel@tonic-gate  * Licensee must cause all Covered Code to which Licensee contributes to
480Sstevel@tonic-gate  * contain a file documenting the changes Licensee made to create that Covered
490Sstevel@tonic-gate  * Code and the date of any change.  Licensee must include in that file the
500Sstevel@tonic-gate  * documentation of any changes made by any predecessor Licensee.  Licensee
510Sstevel@tonic-gate  * must include a prominent statement that the modification is derived,
520Sstevel@tonic-gate  * directly or indirectly, from Original Intel Code.
530Sstevel@tonic-gate  *
540Sstevel@tonic-gate  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
550Sstevel@tonic-gate  * Redistribution of source code of any substantial portion of the Covered
560Sstevel@tonic-gate  * Code or modification without rights to further distribute source must
570Sstevel@tonic-gate  * include the following Disclaimer and Export Compliance provision in the
580Sstevel@tonic-gate  * documentation and/or other materials provided with distribution.  In
590Sstevel@tonic-gate  * addition, Licensee may not authorize further sublicense of source of any
600Sstevel@tonic-gate  * portion of the Covered Code, and must include terms to the effect that the
610Sstevel@tonic-gate  * license from Licensee to its licensee is limited to the intellectual
620Sstevel@tonic-gate  * property embodied in the software Licensee provides to its licensee, and
630Sstevel@tonic-gate  * not to intellectual property embodied in modifications its licensee may
640Sstevel@tonic-gate  * make.
650Sstevel@tonic-gate  *
660Sstevel@tonic-gate  * 3.3. Redistribution of Executable. Redistribution in executable form of any
670Sstevel@tonic-gate  * substantial portion of the Covered Code or modification must reproduce the
680Sstevel@tonic-gate  * above Copyright Notice, and the following Disclaimer and Export Compliance
690Sstevel@tonic-gate  * provision in the documentation and/or other materials provided with the
700Sstevel@tonic-gate  * distribution.
710Sstevel@tonic-gate  *
720Sstevel@tonic-gate  * 3.4. Intel retains all right, title, and interest in and to the Original
730Sstevel@tonic-gate  * Intel Code.
740Sstevel@tonic-gate  *
750Sstevel@tonic-gate  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
760Sstevel@tonic-gate  * Intel shall be used in advertising or otherwise to promote the sale, use or
770Sstevel@tonic-gate  * other dealings in products derived from or relating to the Covered Code
780Sstevel@tonic-gate  * without prior written authorization from Intel.
790Sstevel@tonic-gate  *
800Sstevel@tonic-gate  * 4. Disclaimer and Export Compliance
810Sstevel@tonic-gate  *
820Sstevel@tonic-gate  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
830Sstevel@tonic-gate  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
840Sstevel@tonic-gate  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
850Sstevel@tonic-gate  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
860Sstevel@tonic-gate  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
870Sstevel@tonic-gate  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
880Sstevel@tonic-gate  * PARTICULAR PURPOSE.
890Sstevel@tonic-gate  *
900Sstevel@tonic-gate  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
910Sstevel@tonic-gate  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
920Sstevel@tonic-gate  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
930Sstevel@tonic-gate  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
940Sstevel@tonic-gate  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
950Sstevel@tonic-gate  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
960Sstevel@tonic-gate  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
970Sstevel@tonic-gate  * LIMITED REMEDY.
980Sstevel@tonic-gate  *
990Sstevel@tonic-gate  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1000Sstevel@tonic-gate  * software or system incorporating such software without first obtaining any
1010Sstevel@tonic-gate  * required license or other approval from the U. S. Department of Commerce or
1020Sstevel@tonic-gate  * any other agency or department of the United States Government.  In the
1030Sstevel@tonic-gate  * event Licensee exports any such software from the United States or
1040Sstevel@tonic-gate  * re-exports any such software from a foreign destination, Licensee shall
1050Sstevel@tonic-gate  * ensure that the distribution and export/re-export of the software is in
1060Sstevel@tonic-gate  * compliance with all laws, regulations, orders, or other restrictions of the
1070Sstevel@tonic-gate  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1080Sstevel@tonic-gate  * any of its subsidiaries will export/re-export any technical data, process,
1090Sstevel@tonic-gate  * software, or service, directly or indirectly, to any country for which the
1100Sstevel@tonic-gate  * United States government or any agency thereof requires an export license,
1110Sstevel@tonic-gate  * other governmental approval, or letter of assurance, without first obtaining
1120Sstevel@tonic-gate  * such license, approval or letter.
1130Sstevel@tonic-gate  *
1140Sstevel@tonic-gate  *****************************************************************************/
1150Sstevel@tonic-gate 
1160Sstevel@tonic-gate #ifndef __ACTBL2_H__
1170Sstevel@tonic-gate #define __ACTBL2_H__
1180Sstevel@tonic-gate 
119*11225SDana.Myers@Sun.COM 
120*11225SDana.Myers@Sun.COM /*******************************************************************************
121*11225SDana.Myers@Sun.COM  *
122*11225SDana.Myers@Sun.COM  * Additional ACPI Tables (2)
123*11225SDana.Myers@Sun.COM  *
124*11225SDana.Myers@Sun.COM  * These tables are not consumed directly by the ACPICA subsystem, but are
125*11225SDana.Myers@Sun.COM  * included here to support device drivers and the AML disassembler.
126*11225SDana.Myers@Sun.COM  *
127*11225SDana.Myers@Sun.COM  * The tables in this file are defined by third-party specifications, and are
128*11225SDana.Myers@Sun.COM  * not defined directly by the ACPI specification itself.
129*11225SDana.Myers@Sun.COM  *
130*11225SDana.Myers@Sun.COM  ******************************************************************************/
131*11225SDana.Myers@Sun.COM 
132*11225SDana.Myers@Sun.COM 
133*11225SDana.Myers@Sun.COM /*
134*11225SDana.Myers@Sun.COM  * Values for description table header signatures for tables defined in this
135*11225SDana.Myers@Sun.COM  * file. Useful because they make it more difficult to inadvertently type in
136*11225SDana.Myers@Sun.COM  * the wrong signature.
137*11225SDana.Myers@Sun.COM  */
138*11225SDana.Myers@Sun.COM #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
139*11225SDana.Myers@Sun.COM #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
140*11225SDana.Myers@Sun.COM #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
141*11225SDana.Myers@Sun.COM #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
142*11225SDana.Myers@Sun.COM #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
143*11225SDana.Myers@Sun.COM #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
144*11225SDana.Myers@Sun.COM #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
145*11225SDana.Myers@Sun.COM #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
146*11225SDana.Myers@Sun.COM #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
147*11225SDana.Myers@Sun.COM #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
148*11225SDana.Myers@Sun.COM #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
149*11225SDana.Myers@Sun.COM #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
150*11225SDana.Myers@Sun.COM #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
151*11225SDana.Myers@Sun.COM #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
152*11225SDana.Myers@Sun.COM #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
153*11225SDana.Myers@Sun.COM #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
154*11225SDana.Myers@Sun.COM 
155*11225SDana.Myers@Sun.COM 
156*11225SDana.Myers@Sun.COM /*
157*11225SDana.Myers@Sun.COM  * All tables must be byte-packed to match the ACPI specification, since
158*11225SDana.Myers@Sun.COM  * the tables are provided by the system BIOS.
159*11225SDana.Myers@Sun.COM  */
160*11225SDana.Myers@Sun.COM #pragma pack(1)
161*11225SDana.Myers@Sun.COM 
162*11225SDana.Myers@Sun.COM /*
163*11225SDana.Myers@Sun.COM  * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
164*11225SDana.Myers@Sun.COM  * This is the only type that is even remotely portable. Anything else is not
165*11225SDana.Myers@Sun.COM  * portable, so do not use any other bitfield types.
166*11225SDana.Myers@Sun.COM  */
167*11225SDana.Myers@Sun.COM 
168*11225SDana.Myers@Sun.COM 
169*11225SDana.Myers@Sun.COM /*******************************************************************************
170*11225SDana.Myers@Sun.COM  *
171*11225SDana.Myers@Sun.COM  * ASF - Alert Standard Format table (Signature "ASF!")
172*11225SDana.Myers@Sun.COM  *       Revision 0x10
173*11225SDana.Myers@Sun.COM  *
174*11225SDana.Myers@Sun.COM  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
175*11225SDana.Myers@Sun.COM  *
176*11225SDana.Myers@Sun.COM  ******************************************************************************/
177*11225SDana.Myers@Sun.COM 
178*11225SDana.Myers@Sun.COM typedef struct acpi_table_asf
179*11225SDana.Myers@Sun.COM {
180*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
181*11225SDana.Myers@Sun.COM 
182*11225SDana.Myers@Sun.COM } ACPI_TABLE_ASF;
183*11225SDana.Myers@Sun.COM 
184*11225SDana.Myers@Sun.COM 
185*11225SDana.Myers@Sun.COM /* ASF subtable header */
186*11225SDana.Myers@Sun.COM 
187*11225SDana.Myers@Sun.COM typedef struct acpi_asf_header
188*11225SDana.Myers@Sun.COM {
189*11225SDana.Myers@Sun.COM     UINT8                   Type;
190*11225SDana.Myers@Sun.COM     UINT8                   Reserved;
191*11225SDana.Myers@Sun.COM     UINT16                  Length;
192*11225SDana.Myers@Sun.COM 
193*11225SDana.Myers@Sun.COM } ACPI_ASF_HEADER;
194*11225SDana.Myers@Sun.COM 
195*11225SDana.Myers@Sun.COM 
196*11225SDana.Myers@Sun.COM /* Values for Type field above */
197*11225SDana.Myers@Sun.COM 
198*11225SDana.Myers@Sun.COM enum AcpiAsfType
199*11225SDana.Myers@Sun.COM {
200*11225SDana.Myers@Sun.COM     ACPI_ASF_TYPE_INFO          = 0,
201*11225SDana.Myers@Sun.COM     ACPI_ASF_TYPE_ALERT         = 1,
202*11225SDana.Myers@Sun.COM     ACPI_ASF_TYPE_CONTROL       = 2,
203*11225SDana.Myers@Sun.COM     ACPI_ASF_TYPE_BOOT          = 3,
204*11225SDana.Myers@Sun.COM     ACPI_ASF_TYPE_ADDRESS       = 4,
205*11225SDana.Myers@Sun.COM     ACPI_ASF_TYPE_RESERVED      = 5
206*11225SDana.Myers@Sun.COM };
207*11225SDana.Myers@Sun.COM 
208*11225SDana.Myers@Sun.COM /*
209*11225SDana.Myers@Sun.COM  * ASF subtables
210*11225SDana.Myers@Sun.COM  */
211*11225SDana.Myers@Sun.COM 
212*11225SDana.Myers@Sun.COM /* 0: ASF Information */
213*11225SDana.Myers@Sun.COM 
214*11225SDana.Myers@Sun.COM typedef struct acpi_asf_info
215*11225SDana.Myers@Sun.COM {
216*11225SDana.Myers@Sun.COM     ACPI_ASF_HEADER         Header;
217*11225SDana.Myers@Sun.COM     UINT8                   MinResetValue;
218*11225SDana.Myers@Sun.COM     UINT8                   MinPollInterval;
219*11225SDana.Myers@Sun.COM     UINT16                  SystemId;
220*11225SDana.Myers@Sun.COM     UINT32                  MfgId;
221*11225SDana.Myers@Sun.COM     UINT8                   Flags;
222*11225SDana.Myers@Sun.COM     UINT8                   Reserved2[3];
223*11225SDana.Myers@Sun.COM 
224*11225SDana.Myers@Sun.COM } ACPI_ASF_INFO;
225*11225SDana.Myers@Sun.COM 
226*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
227*11225SDana.Myers@Sun.COM 
228*11225SDana.Myers@Sun.COM #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
229*11225SDana.Myers@Sun.COM 
230*11225SDana.Myers@Sun.COM 
231*11225SDana.Myers@Sun.COM /* 1: ASF Alerts */
232*11225SDana.Myers@Sun.COM 
233*11225SDana.Myers@Sun.COM typedef struct acpi_asf_alert
234*11225SDana.Myers@Sun.COM {
235*11225SDana.Myers@Sun.COM     ACPI_ASF_HEADER         Header;
236*11225SDana.Myers@Sun.COM     UINT8                   AssertMask;
237*11225SDana.Myers@Sun.COM     UINT8                   DeassertMask;
238*11225SDana.Myers@Sun.COM     UINT8                   Alerts;
239*11225SDana.Myers@Sun.COM     UINT8                   DataLength;
240*11225SDana.Myers@Sun.COM 
241*11225SDana.Myers@Sun.COM } ACPI_ASF_ALERT;
242*11225SDana.Myers@Sun.COM 
243*11225SDana.Myers@Sun.COM typedef struct acpi_asf_alert_data
244*11225SDana.Myers@Sun.COM {
245*11225SDana.Myers@Sun.COM     UINT8                   Address;
246*11225SDana.Myers@Sun.COM     UINT8                   Command;
247*11225SDana.Myers@Sun.COM     UINT8                   Mask;
248*11225SDana.Myers@Sun.COM     UINT8                   Value;
249*11225SDana.Myers@Sun.COM     UINT8                   SensorType;
250*11225SDana.Myers@Sun.COM     UINT8                   Type;
251*11225SDana.Myers@Sun.COM     UINT8                   Offset;
252*11225SDana.Myers@Sun.COM     UINT8                   SourceType;
253*11225SDana.Myers@Sun.COM     UINT8                   Severity;
254*11225SDana.Myers@Sun.COM     UINT8                   SensorNumber;
255*11225SDana.Myers@Sun.COM     UINT8                   Entity;
256*11225SDana.Myers@Sun.COM     UINT8                   Instance;
257*11225SDana.Myers@Sun.COM 
258*11225SDana.Myers@Sun.COM } ACPI_ASF_ALERT_DATA;
259*11225SDana.Myers@Sun.COM 
260*11225SDana.Myers@Sun.COM 
261*11225SDana.Myers@Sun.COM /* 2: ASF Remote Control */
262*11225SDana.Myers@Sun.COM 
263*11225SDana.Myers@Sun.COM typedef struct acpi_asf_remote
264*11225SDana.Myers@Sun.COM {
265*11225SDana.Myers@Sun.COM     ACPI_ASF_HEADER         Header;
266*11225SDana.Myers@Sun.COM     UINT8                   Controls;
267*11225SDana.Myers@Sun.COM     UINT8                   DataLength;
268*11225SDana.Myers@Sun.COM     UINT16                  Reserved2;
269*11225SDana.Myers@Sun.COM 
270*11225SDana.Myers@Sun.COM } ACPI_ASF_REMOTE;
271*11225SDana.Myers@Sun.COM 
272*11225SDana.Myers@Sun.COM typedef struct acpi_asf_control_data
273*11225SDana.Myers@Sun.COM {
274*11225SDana.Myers@Sun.COM     UINT8                   Function;
275*11225SDana.Myers@Sun.COM     UINT8                   Address;
276*11225SDana.Myers@Sun.COM     UINT8                   Command;
277*11225SDana.Myers@Sun.COM     UINT8                   Value;
278*11225SDana.Myers@Sun.COM 
279*11225SDana.Myers@Sun.COM } ACPI_ASF_CONTROL_DATA;
280*11225SDana.Myers@Sun.COM 
281*11225SDana.Myers@Sun.COM 
282*11225SDana.Myers@Sun.COM /* 3: ASF RMCP Boot Options */
283*11225SDana.Myers@Sun.COM 
284*11225SDana.Myers@Sun.COM typedef struct acpi_asf_rmcp
285*11225SDana.Myers@Sun.COM {
286*11225SDana.Myers@Sun.COM     ACPI_ASF_HEADER         Header;
287*11225SDana.Myers@Sun.COM     UINT8                   Capabilities[7];
288*11225SDana.Myers@Sun.COM     UINT8                   CompletionCode;
289*11225SDana.Myers@Sun.COM     UINT32                  EnterpriseId;
290*11225SDana.Myers@Sun.COM     UINT8                   Command;
291*11225SDana.Myers@Sun.COM     UINT16                  Parameter;
292*11225SDana.Myers@Sun.COM     UINT16                  BootOptions;
293*11225SDana.Myers@Sun.COM     UINT16                  OemParameters;
294*11225SDana.Myers@Sun.COM 
295*11225SDana.Myers@Sun.COM } ACPI_ASF_RMCP;
296*11225SDana.Myers@Sun.COM 
297*11225SDana.Myers@Sun.COM 
298*11225SDana.Myers@Sun.COM /* 4: ASF Address */
299*11225SDana.Myers@Sun.COM 
300*11225SDana.Myers@Sun.COM typedef struct acpi_asf_address
301*11225SDana.Myers@Sun.COM {
302*11225SDana.Myers@Sun.COM     ACPI_ASF_HEADER         Header;
303*11225SDana.Myers@Sun.COM     UINT8                   EpromAddress;
304*11225SDana.Myers@Sun.COM     UINT8                   Devices;
305*11225SDana.Myers@Sun.COM 
306*11225SDana.Myers@Sun.COM } ACPI_ASF_ADDRESS;
307*11225SDana.Myers@Sun.COM 
308*11225SDana.Myers@Sun.COM 
309*11225SDana.Myers@Sun.COM /*******************************************************************************
310*11225SDana.Myers@Sun.COM  *
311*11225SDana.Myers@Sun.COM  * BOOT - Simple Boot Flag Table
312*11225SDana.Myers@Sun.COM  *        Version 1
313*11225SDana.Myers@Sun.COM  *
314*11225SDana.Myers@Sun.COM  * Conforms to the "Simple Boot Flag Specification", Version 2.1
315*11225SDana.Myers@Sun.COM  *
316*11225SDana.Myers@Sun.COM  ******************************************************************************/
317*11225SDana.Myers@Sun.COM 
318*11225SDana.Myers@Sun.COM typedef struct acpi_table_boot
319*11225SDana.Myers@Sun.COM {
320*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
321*11225SDana.Myers@Sun.COM     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
322*11225SDana.Myers@Sun.COM     UINT8                   Reserved[3];
323*11225SDana.Myers@Sun.COM 
324*11225SDana.Myers@Sun.COM } ACPI_TABLE_BOOT;
325*11225SDana.Myers@Sun.COM 
326*11225SDana.Myers@Sun.COM 
327*11225SDana.Myers@Sun.COM /*******************************************************************************
328*11225SDana.Myers@Sun.COM  *
329*11225SDana.Myers@Sun.COM  * DBGP - Debug Port table
330*11225SDana.Myers@Sun.COM  *        Version 1
331*11225SDana.Myers@Sun.COM  *
332*11225SDana.Myers@Sun.COM  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
333*11225SDana.Myers@Sun.COM  *
334*11225SDana.Myers@Sun.COM  ******************************************************************************/
335*11225SDana.Myers@Sun.COM 
336*11225SDana.Myers@Sun.COM typedef struct acpi_table_dbgp
337*11225SDana.Myers@Sun.COM {
338*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
339*11225SDana.Myers@Sun.COM     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
340*11225SDana.Myers@Sun.COM     UINT8                   Reserved[3];
341*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    DebugPort;
342*11225SDana.Myers@Sun.COM 
343*11225SDana.Myers@Sun.COM } ACPI_TABLE_DBGP;
344*11225SDana.Myers@Sun.COM 
345*11225SDana.Myers@Sun.COM 
346*11225SDana.Myers@Sun.COM /*******************************************************************************
347*11225SDana.Myers@Sun.COM  *
348*11225SDana.Myers@Sun.COM  * DMAR - DMA Remapping table
349*11225SDana.Myers@Sun.COM  *        Version 1
350*11225SDana.Myers@Sun.COM  *
351*11225SDana.Myers@Sun.COM  * Conforms to "Intel Virtualization Technology for Directed I/O",
352*11225SDana.Myers@Sun.COM  * Version 1.2, Sept. 2008
353*11225SDana.Myers@Sun.COM  *
354*11225SDana.Myers@Sun.COM  ******************************************************************************/
355*11225SDana.Myers@Sun.COM 
356*11225SDana.Myers@Sun.COM typedef struct acpi_table_dmar
357*11225SDana.Myers@Sun.COM {
358*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
359*11225SDana.Myers@Sun.COM     UINT8                   Width;              /* Host Address Width */
360*11225SDana.Myers@Sun.COM     UINT8                   Flags;
361*11225SDana.Myers@Sun.COM     UINT8                   Reserved[10];
362*11225SDana.Myers@Sun.COM 
363*11225SDana.Myers@Sun.COM } ACPI_TABLE_DMAR;
364*11225SDana.Myers@Sun.COM 
365*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
366*11225SDana.Myers@Sun.COM 
367*11225SDana.Myers@Sun.COM #define ACPI_DMAR_INTR_REMAP        (1)
368*11225SDana.Myers@Sun.COM 
369*11225SDana.Myers@Sun.COM 
370*11225SDana.Myers@Sun.COM /* DMAR subtable header */
371*11225SDana.Myers@Sun.COM 
372*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_header
373*11225SDana.Myers@Sun.COM {
374*11225SDana.Myers@Sun.COM     UINT16                  Type;
375*11225SDana.Myers@Sun.COM     UINT16                  Length;
376*11225SDana.Myers@Sun.COM 
377*11225SDana.Myers@Sun.COM } ACPI_DMAR_HEADER;
378*11225SDana.Myers@Sun.COM 
379*11225SDana.Myers@Sun.COM /* Values for subtable type in ACPI_DMAR_HEADER */
380*11225SDana.Myers@Sun.COM 
381*11225SDana.Myers@Sun.COM enum AcpiDmarType
382*11225SDana.Myers@Sun.COM {
383*11225SDana.Myers@Sun.COM     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
384*11225SDana.Myers@Sun.COM     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
385*11225SDana.Myers@Sun.COM     ACPI_DMAR_TYPE_ATSR                 = 2,
386*11225SDana.Myers@Sun.COM     ACPI_DMAR_HARDWARE_AFFINITY         = 3,
387*11225SDana.Myers@Sun.COM     ACPI_DMAR_TYPE_RESERVED             = 4     /* 4 and greater are reserved */
388*11225SDana.Myers@Sun.COM };
389*11225SDana.Myers@Sun.COM 
390*11225SDana.Myers@Sun.COM 
391*11225SDana.Myers@Sun.COM /* DMAR Device Scope structure */
392*11225SDana.Myers@Sun.COM 
393*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_device_scope
394*11225SDana.Myers@Sun.COM {
395*11225SDana.Myers@Sun.COM     UINT8                   EntryType;
396*11225SDana.Myers@Sun.COM     UINT8                   Length;
397*11225SDana.Myers@Sun.COM     UINT16                  Reserved;
398*11225SDana.Myers@Sun.COM     UINT8                   EnumerationId;
399*11225SDana.Myers@Sun.COM     UINT8                   Bus;
400*11225SDana.Myers@Sun.COM 
401*11225SDana.Myers@Sun.COM } ACPI_DMAR_DEVICE_SCOPE;
402*11225SDana.Myers@Sun.COM 
403*11225SDana.Myers@Sun.COM /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */
404*11225SDana.Myers@Sun.COM 
405*11225SDana.Myers@Sun.COM enum AcpiDmarScopeType
406*11225SDana.Myers@Sun.COM {
407*11225SDana.Myers@Sun.COM     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
408*11225SDana.Myers@Sun.COM     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
409*11225SDana.Myers@Sun.COM     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
410*11225SDana.Myers@Sun.COM     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
411*11225SDana.Myers@Sun.COM     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
412*11225SDana.Myers@Sun.COM     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 5     /* 5 and greater are reserved */
413*11225SDana.Myers@Sun.COM };
414*11225SDana.Myers@Sun.COM 
415*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_pci_path
416*11225SDana.Myers@Sun.COM {
417*11225SDana.Myers@Sun.COM     UINT8                   Device;
418*11225SDana.Myers@Sun.COM     UINT8                   Function;
419*11225SDana.Myers@Sun.COM 
420*11225SDana.Myers@Sun.COM } ACPI_DMAR_PCI_PATH;
421*11225SDana.Myers@Sun.COM 
422*11225SDana.Myers@Sun.COM 
423*11225SDana.Myers@Sun.COM /*
424*11225SDana.Myers@Sun.COM  * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER
425*11225SDana.Myers@Sun.COM  */
426*11225SDana.Myers@Sun.COM 
427*11225SDana.Myers@Sun.COM /* 0: Hardware Unit Definition */
428*11225SDana.Myers@Sun.COM 
429*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_hardware_unit
430*11225SDana.Myers@Sun.COM {
431*11225SDana.Myers@Sun.COM     ACPI_DMAR_HEADER        Header;
432*11225SDana.Myers@Sun.COM     UINT8                   Flags;
433*11225SDana.Myers@Sun.COM     UINT8                   Reserved;
434*11225SDana.Myers@Sun.COM     UINT16                  Segment;
435*11225SDana.Myers@Sun.COM     UINT64                  Address;            /* Register Base Address */
436*11225SDana.Myers@Sun.COM 
437*11225SDana.Myers@Sun.COM } ACPI_DMAR_HARDWARE_UNIT;
438*11225SDana.Myers@Sun.COM 
439*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
440*11225SDana.Myers@Sun.COM 
441*11225SDana.Myers@Sun.COM #define ACPI_DMAR_INCLUDE_ALL       (1)
442*11225SDana.Myers@Sun.COM 
443*11225SDana.Myers@Sun.COM 
444*11225SDana.Myers@Sun.COM /* 1: Reserved Memory Defininition */
445*11225SDana.Myers@Sun.COM 
446*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_reserved_memory
447*11225SDana.Myers@Sun.COM {
448*11225SDana.Myers@Sun.COM     ACPI_DMAR_HEADER        Header;
449*11225SDana.Myers@Sun.COM     UINT16                  Reserved;
450*11225SDana.Myers@Sun.COM     UINT16                  Segment;
451*11225SDana.Myers@Sun.COM     UINT64                  BaseAddress;        /* 4K aligned base address */
452*11225SDana.Myers@Sun.COM     UINT64                  EndAddress;         /* 4K aligned limit address */
453*11225SDana.Myers@Sun.COM 
454*11225SDana.Myers@Sun.COM } ACPI_DMAR_RESERVED_MEMORY;
455*11225SDana.Myers@Sun.COM 
456*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
457*11225SDana.Myers@Sun.COM 
458*11225SDana.Myers@Sun.COM #define ACPI_DMAR_ALLOW_ALL         (1)
459*11225SDana.Myers@Sun.COM 
460*11225SDana.Myers@Sun.COM 
461*11225SDana.Myers@Sun.COM /* 2: Root Port ATS Capability Reporting Structure */
462*11225SDana.Myers@Sun.COM 
463*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_atsr
464*11225SDana.Myers@Sun.COM {
465*11225SDana.Myers@Sun.COM     ACPI_DMAR_HEADER        Header;
466*11225SDana.Myers@Sun.COM     UINT8                   Flags;
467*11225SDana.Myers@Sun.COM     UINT8                   Reserved;
468*11225SDana.Myers@Sun.COM     UINT16                  Segment;
469*11225SDana.Myers@Sun.COM 
470*11225SDana.Myers@Sun.COM } ACPI_DMAR_ATSR;
471*11225SDana.Myers@Sun.COM 
472*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
473*11225SDana.Myers@Sun.COM 
474*11225SDana.Myers@Sun.COM #define ACPI_DMAR_ALL_PORTS         (1)
475*11225SDana.Myers@Sun.COM 
476*11225SDana.Myers@Sun.COM 
477*11225SDana.Myers@Sun.COM /* 3: Remapping Hardware Static Affinity Structure */
478*11225SDana.Myers@Sun.COM 
479*11225SDana.Myers@Sun.COM typedef struct acpi_dmar_rhsa
480*11225SDana.Myers@Sun.COM {
481*11225SDana.Myers@Sun.COM     ACPI_DMAR_HEADER        Header;
482*11225SDana.Myers@Sun.COM     UINT32                  Reserved;
483*11225SDana.Myers@Sun.COM     UINT64                  BaseAddress;
484*11225SDana.Myers@Sun.COM     UINT32                  ProximityDomain;
485*11225SDana.Myers@Sun.COM 
486*11225SDana.Myers@Sun.COM } ACPI_DMAR_RHSA;
487*11225SDana.Myers@Sun.COM 
488*11225SDana.Myers@Sun.COM 
489*11225SDana.Myers@Sun.COM /*******************************************************************************
490*11225SDana.Myers@Sun.COM  *
491*11225SDana.Myers@Sun.COM  * HPET - High Precision Event Timer table
492*11225SDana.Myers@Sun.COM  *        Version 1
493*11225SDana.Myers@Sun.COM  *
494*11225SDana.Myers@Sun.COM  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
495*11225SDana.Myers@Sun.COM  * Version 1.0a, October 2004
496*11225SDana.Myers@Sun.COM  *
497*11225SDana.Myers@Sun.COM  ******************************************************************************/
498*11225SDana.Myers@Sun.COM 
499*11225SDana.Myers@Sun.COM typedef struct acpi_table_hpet
500*11225SDana.Myers@Sun.COM {
501*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
502*11225SDana.Myers@Sun.COM     UINT32                  Id;                 /* Hardware ID of event timer block */
503*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
504*11225SDana.Myers@Sun.COM     UINT8                   Sequence;           /* HPET sequence number */
505*11225SDana.Myers@Sun.COM     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
506*11225SDana.Myers@Sun.COM     UINT8                   Flags;
507*11225SDana.Myers@Sun.COM 
508*11225SDana.Myers@Sun.COM } ACPI_TABLE_HPET;
509*11225SDana.Myers@Sun.COM 
510*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
511*11225SDana.Myers@Sun.COM 
512*11225SDana.Myers@Sun.COM #define ACPI_HPET_PAGE_PROTECT_MASK (3)
513*11225SDana.Myers@Sun.COM 
514*11225SDana.Myers@Sun.COM /* Values for Page Protect flags */
515*11225SDana.Myers@Sun.COM 
516*11225SDana.Myers@Sun.COM enum AcpiHpetPageProtect
517*11225SDana.Myers@Sun.COM {
518*11225SDana.Myers@Sun.COM     ACPI_HPET_NO_PAGE_PROTECT       = 0,
519*11225SDana.Myers@Sun.COM     ACPI_HPET_PAGE_PROTECT4         = 1,
520*11225SDana.Myers@Sun.COM     ACPI_HPET_PAGE_PROTECT64        = 2
521*11225SDana.Myers@Sun.COM };
522*11225SDana.Myers@Sun.COM 
523*11225SDana.Myers@Sun.COM 
524*11225SDana.Myers@Sun.COM /*******************************************************************************
525*11225SDana.Myers@Sun.COM  *
526*11225SDana.Myers@Sun.COM  * IBFT - Boot Firmware Table
527*11225SDana.Myers@Sun.COM  *        Version 1
528*11225SDana.Myers@Sun.COM  *
529*11225SDana.Myers@Sun.COM  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
530*11225SDana.Myers@Sun.COM  * Specification", Version 1.01, March 1, 2007
531*11225SDana.Myers@Sun.COM  *
532*11225SDana.Myers@Sun.COM  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
533*11225SDana.Myers@Sun.COM  * Therefore, it is not currently supported by the disassembler.
534*11225SDana.Myers@Sun.COM  *
535*11225SDana.Myers@Sun.COM  ******************************************************************************/
536*11225SDana.Myers@Sun.COM 
537*11225SDana.Myers@Sun.COM typedef struct acpi_table_ibft
538*11225SDana.Myers@Sun.COM {
539*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
540*11225SDana.Myers@Sun.COM     UINT8                   Reserved[12];
541*11225SDana.Myers@Sun.COM 
542*11225SDana.Myers@Sun.COM } ACPI_TABLE_IBFT;
543*11225SDana.Myers@Sun.COM 
544*11225SDana.Myers@Sun.COM 
545*11225SDana.Myers@Sun.COM /* IBFT common subtable header */
546*11225SDana.Myers@Sun.COM 
547*11225SDana.Myers@Sun.COM typedef struct acpi_ibft_header
548*11225SDana.Myers@Sun.COM {
549*11225SDana.Myers@Sun.COM     UINT8                   Type;
550*11225SDana.Myers@Sun.COM     UINT8                   Version;
551*11225SDana.Myers@Sun.COM     UINT16                  Length;
552*11225SDana.Myers@Sun.COM     UINT8                   Index;
553*11225SDana.Myers@Sun.COM     UINT8                   Flags;
554*11225SDana.Myers@Sun.COM 
555*11225SDana.Myers@Sun.COM } ACPI_IBFT_HEADER;
556*11225SDana.Myers@Sun.COM 
557*11225SDana.Myers@Sun.COM /* Values for Type field above */
558*11225SDana.Myers@Sun.COM 
559*11225SDana.Myers@Sun.COM enum AcpiIbftType
560*11225SDana.Myers@Sun.COM {
561*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_NOT_USED         = 0,
562*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_CONTROL          = 1,
563*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_INITIATOR        = 2,
564*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_NIC              = 3,
565*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_TARGET           = 4,
566*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
567*11225SDana.Myers@Sun.COM     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
568*11225SDana.Myers@Sun.COM };
569*11225SDana.Myers@Sun.COM 
570*11225SDana.Myers@Sun.COM 
571*11225SDana.Myers@Sun.COM /* IBFT subtables */
572*11225SDana.Myers@Sun.COM 
573*11225SDana.Myers@Sun.COM typedef struct acpi_ibft_control
574*11225SDana.Myers@Sun.COM {
575*11225SDana.Myers@Sun.COM     ACPI_IBFT_HEADER        Header;
576*11225SDana.Myers@Sun.COM     UINT16                  Extensions;
577*11225SDana.Myers@Sun.COM     UINT16                  InitiatorOffset;
578*11225SDana.Myers@Sun.COM     UINT16                  Nic0Offset;
579*11225SDana.Myers@Sun.COM     UINT16                  Target0Offset;
580*11225SDana.Myers@Sun.COM     UINT16                  Nic1Offset;
581*11225SDana.Myers@Sun.COM     UINT16                  Target1Offset;
582*11225SDana.Myers@Sun.COM 
583*11225SDana.Myers@Sun.COM } ACPI_IBFT_CONTROL;
584*11225SDana.Myers@Sun.COM 
585*11225SDana.Myers@Sun.COM typedef struct acpi_ibft_initiator
586*11225SDana.Myers@Sun.COM {
587*11225SDana.Myers@Sun.COM     ACPI_IBFT_HEADER        Header;
588*11225SDana.Myers@Sun.COM     UINT8                   SnsServer[16];
589*11225SDana.Myers@Sun.COM     UINT8                   SlpServer[16];
590*11225SDana.Myers@Sun.COM     UINT8                   PrimaryServer[16];
591*11225SDana.Myers@Sun.COM     UINT8                   SecondaryServer[16];
592*11225SDana.Myers@Sun.COM     UINT16                  NameLength;
593*11225SDana.Myers@Sun.COM     UINT16                  NameOffset;
594*11225SDana.Myers@Sun.COM 
595*11225SDana.Myers@Sun.COM } ACPI_IBFT_INITIATOR;
596*11225SDana.Myers@Sun.COM 
597*11225SDana.Myers@Sun.COM typedef struct acpi_ibft_nic
598*11225SDana.Myers@Sun.COM {
599*11225SDana.Myers@Sun.COM     ACPI_IBFT_HEADER        Header;
600*11225SDana.Myers@Sun.COM     UINT8                   IpAddress[16];
601*11225SDana.Myers@Sun.COM     UINT8                   SubnetMaskPrefix;
602*11225SDana.Myers@Sun.COM     UINT8                   Origin;
603*11225SDana.Myers@Sun.COM     UINT8                   Gateway[16];
604*11225SDana.Myers@Sun.COM     UINT8                   PrimaryDns[16];
605*11225SDana.Myers@Sun.COM     UINT8                   SecondaryDns[16];
606*11225SDana.Myers@Sun.COM     UINT8                   Dhcp[16];
607*11225SDana.Myers@Sun.COM     UINT16                  Vlan;
608*11225SDana.Myers@Sun.COM     UINT8                   MacAddress[6];
609*11225SDana.Myers@Sun.COM     UINT16                  PciAddress;
610*11225SDana.Myers@Sun.COM     UINT16                  NameLength;
611*11225SDana.Myers@Sun.COM     UINT16                  NameOffset;
612*11225SDana.Myers@Sun.COM 
613*11225SDana.Myers@Sun.COM } ACPI_IBFT_NIC;
614*11225SDana.Myers@Sun.COM 
615*11225SDana.Myers@Sun.COM typedef struct acpi_ibft_target
616*11225SDana.Myers@Sun.COM {
617*11225SDana.Myers@Sun.COM     ACPI_IBFT_HEADER        Header;
618*11225SDana.Myers@Sun.COM     UINT8                   TargetIpAddress[16];
619*11225SDana.Myers@Sun.COM     UINT16                  TargetIpSocket;
620*11225SDana.Myers@Sun.COM     UINT8                   TargetBootLun[8];
621*11225SDana.Myers@Sun.COM     UINT8                   ChapType;
622*11225SDana.Myers@Sun.COM     UINT8                   NicAssociation;
623*11225SDana.Myers@Sun.COM     UINT16                  TargetNameLength;
624*11225SDana.Myers@Sun.COM     UINT16                  TargetNameOffset;
625*11225SDana.Myers@Sun.COM     UINT16                  ChapNameLength;
626*11225SDana.Myers@Sun.COM     UINT16                  ChapNameOffset;
627*11225SDana.Myers@Sun.COM     UINT16                  ChapSecretLength;
628*11225SDana.Myers@Sun.COM     UINT16                  ChapSecretOffset;
629*11225SDana.Myers@Sun.COM     UINT16                  ReverseChapNameLength;
630*11225SDana.Myers@Sun.COM     UINT16                  ReverseChapNameOffset;
631*11225SDana.Myers@Sun.COM     UINT16                  ReverseChapSecretLength;
632*11225SDana.Myers@Sun.COM     UINT16                  ReverseChapSecretOffset;
633*11225SDana.Myers@Sun.COM 
634*11225SDana.Myers@Sun.COM } ACPI_IBFT_TARGET;
635*11225SDana.Myers@Sun.COM 
636*11225SDana.Myers@Sun.COM 
637*11225SDana.Myers@Sun.COM /*******************************************************************************
638*11225SDana.Myers@Sun.COM  *
639*11225SDana.Myers@Sun.COM  * IVRS - I/O Virtualization Reporting Structure
640*11225SDana.Myers@Sun.COM  *        Version 1
641*11225SDana.Myers@Sun.COM  *
642*11225SDana.Myers@Sun.COM  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
643*11225SDana.Myers@Sun.COM  * Revision 1.26, February 2009.
644*11225SDana.Myers@Sun.COM  *
645*11225SDana.Myers@Sun.COM  ******************************************************************************/
646*11225SDana.Myers@Sun.COM 
647*11225SDana.Myers@Sun.COM typedef struct acpi_table_ivrs
648*11225SDana.Myers@Sun.COM {
649*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
650*11225SDana.Myers@Sun.COM     UINT32                  Info;               /* Common virtualization info */
651*11225SDana.Myers@Sun.COM     UINT64                  Reserved;
652*11225SDana.Myers@Sun.COM 
653*11225SDana.Myers@Sun.COM } ACPI_TABLE_IVRS;
654*11225SDana.Myers@Sun.COM 
655*11225SDana.Myers@Sun.COM /* Values for Info field above */
656*11225SDana.Myers@Sun.COM 
657*11225SDana.Myers@Sun.COM #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
658*11225SDana.Myers@Sun.COM #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
659*11225SDana.Myers@Sun.COM #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
660*11225SDana.Myers@Sun.COM 
661*11225SDana.Myers@Sun.COM 
662*11225SDana.Myers@Sun.COM /* IVRS subtable header */
663*11225SDana.Myers@Sun.COM 
664*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_header
665*11225SDana.Myers@Sun.COM {
666*11225SDana.Myers@Sun.COM     UINT8                   Type;               /* Subtable type */
667*11225SDana.Myers@Sun.COM     UINT8                   Flags;
668*11225SDana.Myers@Sun.COM     UINT16                  Length;             /* Subtable length */
669*11225SDana.Myers@Sun.COM     UINT16                  DeviceId;           /* ID of IOMMU */
670*11225SDana.Myers@Sun.COM 
671*11225SDana.Myers@Sun.COM } ACPI_IVRS_HEADER;
672*11225SDana.Myers@Sun.COM 
673*11225SDana.Myers@Sun.COM /* Values for subtable Type above */
674*11225SDana.Myers@Sun.COM 
675*11225SDana.Myers@Sun.COM enum AcpiIvrsType
676*11225SDana.Myers@Sun.COM {
677*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_HARDWARE         = 0x10,
678*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_MEMORY1          = 0x20,
679*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_MEMORY2          = 0x21,
680*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_MEMORY3          = 0x22
681*11225SDana.Myers@Sun.COM };
682*11225SDana.Myers@Sun.COM 
683*11225SDana.Myers@Sun.COM /* Masks for Flags field above for IVHD subtable */
684*11225SDana.Myers@Sun.COM 
685*11225SDana.Myers@Sun.COM #define ACPI_IVHD_TT_ENABLE         (1)
686*11225SDana.Myers@Sun.COM #define ACPI_IVHD_PASS_PW           (1<<1)
687*11225SDana.Myers@Sun.COM #define ACPI_IVHD_RES_PASS_PW       (1<<2)
688*11225SDana.Myers@Sun.COM #define ACPI_IVHD_ISOC              (1<<3)
689*11225SDana.Myers@Sun.COM #define ACPI_IVHD_IOTLB             (1<<4)
690*11225SDana.Myers@Sun.COM 
691*11225SDana.Myers@Sun.COM /* Masks for Flags field above for IVMD subtable */
692*11225SDana.Myers@Sun.COM 
693*11225SDana.Myers@Sun.COM #define ACPI_IVMD_UNITY             (1)
694*11225SDana.Myers@Sun.COM #define ACPI_IVMD_READ              (1<<1)
695*11225SDana.Myers@Sun.COM #define ACPI_IVMD_WRITE             (1<<2)
696*11225SDana.Myers@Sun.COM #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
697*11225SDana.Myers@Sun.COM 
698*11225SDana.Myers@Sun.COM 
699*11225SDana.Myers@Sun.COM /*
700*11225SDana.Myers@Sun.COM  * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
701*11225SDana.Myers@Sun.COM  */
702*11225SDana.Myers@Sun.COM 
703*11225SDana.Myers@Sun.COM /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
704*11225SDana.Myers@Sun.COM 
705*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_hardware
706*11225SDana.Myers@Sun.COM {
707*11225SDana.Myers@Sun.COM     ACPI_IVRS_HEADER        Header;
708*11225SDana.Myers@Sun.COM     UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
709*11225SDana.Myers@Sun.COM     UINT64                  BaseAddress;        /* IOMMU control registers */
710*11225SDana.Myers@Sun.COM     UINT16                  PciSegmentGroup;
711*11225SDana.Myers@Sun.COM     UINT16                  Info;               /* MSI number and unit ID */
712*11225SDana.Myers@Sun.COM     UINT32                  Reserved;
713*11225SDana.Myers@Sun.COM 
714*11225SDana.Myers@Sun.COM } ACPI_IVRS_HARDWARE;
715*11225SDana.Myers@Sun.COM 
716*11225SDana.Myers@Sun.COM /* Masks for Info field above */
717*11225SDana.Myers@Sun.COM 
718*11225SDana.Myers@Sun.COM #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
719*11225SDana.Myers@Sun.COM #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
720*11225SDana.Myers@Sun.COM 
721*11225SDana.Myers@Sun.COM 
722*11225SDana.Myers@Sun.COM /*
723*11225SDana.Myers@Sun.COM  * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
724*11225SDana.Myers@Sun.COM  * Upper two bits of the Type field are the (encoded) length of the structure.
725*11225SDana.Myers@Sun.COM  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
726*11225SDana.Myers@Sun.COM  * are reserved for future use but not defined.
727*11225SDana.Myers@Sun.COM  */
728*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_de_header
729*11225SDana.Myers@Sun.COM {
730*11225SDana.Myers@Sun.COM     UINT8                   Type;
731*11225SDana.Myers@Sun.COM     UINT16                  Id;
732*11225SDana.Myers@Sun.COM     UINT8                   DataSetting;
733*11225SDana.Myers@Sun.COM 
734*11225SDana.Myers@Sun.COM } ACPI_IVRS_DE_HEADER;
735*11225SDana.Myers@Sun.COM 
736*11225SDana.Myers@Sun.COM /* Length of device entry is in the top two bits of Type field above */
737*11225SDana.Myers@Sun.COM 
738*11225SDana.Myers@Sun.COM #define ACPI_IVHD_ENTRY_LENGTH      0xC0
739*11225SDana.Myers@Sun.COM 
740*11225SDana.Myers@Sun.COM /* Values for device entry Type field above */
741*11225SDana.Myers@Sun.COM 
742*11225SDana.Myers@Sun.COM enum AcpiIvrsDeviceEntryType
743*11225SDana.Myers@Sun.COM {
744*11225SDana.Myers@Sun.COM     /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
745*11225SDana.Myers@Sun.COM 
746*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_PAD4             = 0,
747*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_ALL              = 1,
748*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_SELECT           = 2,
749*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_START            = 3,
750*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_END              = 4,
751*11225SDana.Myers@Sun.COM 
752*11225SDana.Myers@Sun.COM     /* 8-byte device entries */
753*11225SDana.Myers@Sun.COM 
754*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_PAD8             = 64,
755*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_NOT_USED         = 65,
756*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
757*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
758*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
759*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
760*11225SDana.Myers@Sun.COM     ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
761*11225SDana.Myers@Sun.COM };
762*11225SDana.Myers@Sun.COM 
763*11225SDana.Myers@Sun.COM /* Values for Data field above */
764*11225SDana.Myers@Sun.COM 
765*11225SDana.Myers@Sun.COM #define ACPI_IVHD_INIT_PASS         (1)
766*11225SDana.Myers@Sun.COM #define ACPI_IVHD_EINT_PASS         (1<<1)
767*11225SDana.Myers@Sun.COM #define ACPI_IVHD_NMI_PASS          (1<<2)
768*11225SDana.Myers@Sun.COM #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
769*11225SDana.Myers@Sun.COM #define ACPI_IVHD_LINT0_PASS        (1<<6)
770*11225SDana.Myers@Sun.COM #define ACPI_IVHD_LINT1_PASS        (1<<7)
771*11225SDana.Myers@Sun.COM 
772*11225SDana.Myers@Sun.COM 
773*11225SDana.Myers@Sun.COM /* Types 0-4: 4-byte device entry */
774*11225SDana.Myers@Sun.COM 
775*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_device4
776*11225SDana.Myers@Sun.COM {
777*11225SDana.Myers@Sun.COM     ACPI_IVRS_DE_HEADER     Header;
778*11225SDana.Myers@Sun.COM 
779*11225SDana.Myers@Sun.COM } ACPI_IVRS_DEVICE4;
780*11225SDana.Myers@Sun.COM 
781*11225SDana.Myers@Sun.COM /* Types 66-67: 8-byte device entry */
782*11225SDana.Myers@Sun.COM 
783*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_device8a
784*11225SDana.Myers@Sun.COM {
785*11225SDana.Myers@Sun.COM     ACPI_IVRS_DE_HEADER     Header;
786*11225SDana.Myers@Sun.COM     UINT8                   Reserved1;
787*11225SDana.Myers@Sun.COM     UINT16                  UsedId;
788*11225SDana.Myers@Sun.COM     UINT8                   Reserved2;
789*11225SDana.Myers@Sun.COM 
790*11225SDana.Myers@Sun.COM } ACPI_IVRS_DEVICE8A;
791*11225SDana.Myers@Sun.COM 
792*11225SDana.Myers@Sun.COM /* Types 70-71: 8-byte device entry */
793*11225SDana.Myers@Sun.COM 
794*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_device8b
795*11225SDana.Myers@Sun.COM {
796*11225SDana.Myers@Sun.COM     ACPI_IVRS_DE_HEADER     Header;
797*11225SDana.Myers@Sun.COM     UINT32                  ExtendedData;
798*11225SDana.Myers@Sun.COM 
799*11225SDana.Myers@Sun.COM } ACPI_IVRS_DEVICE8B;
800*11225SDana.Myers@Sun.COM 
801*11225SDana.Myers@Sun.COM /* Values for ExtendedData above */
802*11225SDana.Myers@Sun.COM 
803*11225SDana.Myers@Sun.COM #define ACPI_IVHD_ATS_DISABLED      (1<<31)
804*11225SDana.Myers@Sun.COM 
805*11225SDana.Myers@Sun.COM /* Type 72: 8-byte device entry */
806*11225SDana.Myers@Sun.COM 
807*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_device8c
808*11225SDana.Myers@Sun.COM {
809*11225SDana.Myers@Sun.COM     ACPI_IVRS_DE_HEADER     Header;
810*11225SDana.Myers@Sun.COM     UINT8                   Handle;
811*11225SDana.Myers@Sun.COM     UINT16                  UsedId;
812*11225SDana.Myers@Sun.COM     UINT8                   Variety;
813*11225SDana.Myers@Sun.COM 
814*11225SDana.Myers@Sun.COM } ACPI_IVRS_DEVICE8C;
815*11225SDana.Myers@Sun.COM 
816*11225SDana.Myers@Sun.COM /* Values for Variety field above */
817*11225SDana.Myers@Sun.COM 
818*11225SDana.Myers@Sun.COM #define ACPI_IVHD_IOAPIC            1
819*11225SDana.Myers@Sun.COM #define ACPI_IVHD_HPET              2
820*11225SDana.Myers@Sun.COM 
821*11225SDana.Myers@Sun.COM 
822*11225SDana.Myers@Sun.COM /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
823*11225SDana.Myers@Sun.COM 
824*11225SDana.Myers@Sun.COM typedef struct acpi_ivrs_memory
825*11225SDana.Myers@Sun.COM {
826*11225SDana.Myers@Sun.COM     ACPI_IVRS_HEADER        Header;
827*11225SDana.Myers@Sun.COM     UINT16                  AuxData;
828*11225SDana.Myers@Sun.COM     UINT64                  Reserved;
829*11225SDana.Myers@Sun.COM     UINT64                  StartAddress;
830*11225SDana.Myers@Sun.COM     UINT64                  MemoryLength;
831*11225SDana.Myers@Sun.COM 
832*11225SDana.Myers@Sun.COM } ACPI_IVRS_MEMORY;
833*11225SDana.Myers@Sun.COM 
834*11225SDana.Myers@Sun.COM 
835*11225SDana.Myers@Sun.COM /*******************************************************************************
836*11225SDana.Myers@Sun.COM  *
837*11225SDana.Myers@Sun.COM  * MCFG - PCI Memory Mapped Configuration table and sub-table
838*11225SDana.Myers@Sun.COM  *        Version 1
839*11225SDana.Myers@Sun.COM  *
840*11225SDana.Myers@Sun.COM  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
841*11225SDana.Myers@Sun.COM  *
842*11225SDana.Myers@Sun.COM  ******************************************************************************/
843*11225SDana.Myers@Sun.COM 
844*11225SDana.Myers@Sun.COM typedef struct acpi_table_mcfg
845*11225SDana.Myers@Sun.COM {
846*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
847*11225SDana.Myers@Sun.COM     UINT8                   Reserved[8];
848*11225SDana.Myers@Sun.COM 
849*11225SDana.Myers@Sun.COM } ACPI_TABLE_MCFG;
850*11225SDana.Myers@Sun.COM 
851*11225SDana.Myers@Sun.COM 
852*11225SDana.Myers@Sun.COM /* Subtable */
853*11225SDana.Myers@Sun.COM 
854*11225SDana.Myers@Sun.COM typedef struct acpi_mcfg_allocation
855*11225SDana.Myers@Sun.COM {
856*11225SDana.Myers@Sun.COM     UINT64                  Address;            /* Base address, processor-relative */
857*11225SDana.Myers@Sun.COM     UINT16                  PciSegment;         /* PCI segment group number */
858*11225SDana.Myers@Sun.COM     UINT8                   StartBusNumber;     /* Starting PCI Bus number */
859*11225SDana.Myers@Sun.COM     UINT8                   EndBusNumber;       /* Final PCI Bus number */
860*11225SDana.Myers@Sun.COM     UINT32                  Reserved;
861*11225SDana.Myers@Sun.COM 
862*11225SDana.Myers@Sun.COM } ACPI_MCFG_ALLOCATION;
863*11225SDana.Myers@Sun.COM 
864*11225SDana.Myers@Sun.COM 
865*11225SDana.Myers@Sun.COM /*******************************************************************************
866*11225SDana.Myers@Sun.COM  *
867*11225SDana.Myers@Sun.COM  * SPCR - Serial Port Console Redirection table
868*11225SDana.Myers@Sun.COM  *        Version 1
869*11225SDana.Myers@Sun.COM  *
870*11225SDana.Myers@Sun.COM  * Conforms to "Serial Port Console Redirection Table",
871*11225SDana.Myers@Sun.COM  * Version 1.00, January 11, 2002
872*11225SDana.Myers@Sun.COM  *
873*11225SDana.Myers@Sun.COM  ******************************************************************************/
874*11225SDana.Myers@Sun.COM 
875*11225SDana.Myers@Sun.COM typedef struct acpi_table_spcr
876*11225SDana.Myers@Sun.COM {
877*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
878*11225SDana.Myers@Sun.COM     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
879*11225SDana.Myers@Sun.COM     UINT8                   Reserved[3];
880*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    SerialPort;
881*11225SDana.Myers@Sun.COM     UINT8                   InterruptType;
882*11225SDana.Myers@Sun.COM     UINT8                   PcInterrupt;
883*11225SDana.Myers@Sun.COM     UINT32                  Interrupt;
884*11225SDana.Myers@Sun.COM     UINT8                   BaudRate;
885*11225SDana.Myers@Sun.COM     UINT8                   Parity;
886*11225SDana.Myers@Sun.COM     UINT8                   StopBits;
887*11225SDana.Myers@Sun.COM     UINT8                   FlowControl;
888*11225SDana.Myers@Sun.COM     UINT8                   TerminalType;
889*11225SDana.Myers@Sun.COM     UINT8                   Reserved1;
890*11225SDana.Myers@Sun.COM     UINT16                  PciDeviceId;
891*11225SDana.Myers@Sun.COM     UINT16                  PciVendorId;
892*11225SDana.Myers@Sun.COM     UINT8                   PciBus;
893*11225SDana.Myers@Sun.COM     UINT8                   PciDevice;
894*11225SDana.Myers@Sun.COM     UINT8                   PciFunction;
895*11225SDana.Myers@Sun.COM     UINT32                  PciFlags;
896*11225SDana.Myers@Sun.COM     UINT8                   PciSegment;
897*11225SDana.Myers@Sun.COM     UINT32                  Reserved2;
898*11225SDana.Myers@Sun.COM 
899*11225SDana.Myers@Sun.COM } ACPI_TABLE_SPCR;
900*11225SDana.Myers@Sun.COM 
901*11225SDana.Myers@Sun.COM /* Masks for PciFlags field above */
902*11225SDana.Myers@Sun.COM 
903*11225SDana.Myers@Sun.COM #define ACPI_SPCR_DO_NOT_DISABLE    (1)
904*11225SDana.Myers@Sun.COM 
905*11225SDana.Myers@Sun.COM 
906*11225SDana.Myers@Sun.COM /*******************************************************************************
907*11225SDana.Myers@Sun.COM  *
908*11225SDana.Myers@Sun.COM  * SPMI - Server Platform Management Interface table
909*11225SDana.Myers@Sun.COM  *        Version 5
910*11225SDana.Myers@Sun.COM  *
911*11225SDana.Myers@Sun.COM  * Conforms to "Intelligent Platform Management Interface Specification
912*11225SDana.Myers@Sun.COM  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
913*11225SDana.Myers@Sun.COM  * June 12, 2009 markup.
914*11225SDana.Myers@Sun.COM  *
915*11225SDana.Myers@Sun.COM  ******************************************************************************/
916*11225SDana.Myers@Sun.COM 
917*11225SDana.Myers@Sun.COM typedef struct acpi_table_spmi
918*11225SDana.Myers@Sun.COM {
919*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
920*11225SDana.Myers@Sun.COM     UINT8                   InterfaceType;
921*11225SDana.Myers@Sun.COM     UINT8                   Reserved;           /* Must be 1 */
922*11225SDana.Myers@Sun.COM     UINT16                  SpecRevision;       /* Version of IPMI */
923*11225SDana.Myers@Sun.COM     UINT8                   InterruptType;
924*11225SDana.Myers@Sun.COM     UINT8                   GpeNumber;          /* GPE assigned */
925*11225SDana.Myers@Sun.COM     UINT8                   Reserved1;
926*11225SDana.Myers@Sun.COM     UINT8                   PciDeviceFlag;
927*11225SDana.Myers@Sun.COM     UINT32                  Interrupt;
928*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    IpmiRegister;
929*11225SDana.Myers@Sun.COM     UINT8                   PciSegment;
930*11225SDana.Myers@Sun.COM     UINT8                   PciBus;
931*11225SDana.Myers@Sun.COM     UINT8                   PciDevice;
932*11225SDana.Myers@Sun.COM     UINT8                   PciFunction;
933*11225SDana.Myers@Sun.COM     UINT8                   Reserved2;
934*11225SDana.Myers@Sun.COM 
935*11225SDana.Myers@Sun.COM } ACPI_TABLE_SPMI;
936*11225SDana.Myers@Sun.COM 
937*11225SDana.Myers@Sun.COM /* Values for InterfaceType above */
938*11225SDana.Myers@Sun.COM 
939*11225SDana.Myers@Sun.COM enum AcpiSpmiInterfaceTypes
940*11225SDana.Myers@Sun.COM {
941*11225SDana.Myers@Sun.COM     ACPI_SPMI_NOT_USED              = 0,
942*11225SDana.Myers@Sun.COM     ACPI_SPMI_KEYBOARD              = 1,
943*11225SDana.Myers@Sun.COM     ACPI_SPMI_SMI                   = 2,
944*11225SDana.Myers@Sun.COM     ACPI_SPMI_BLOCK_TRANSFER        = 3,
945*11225SDana.Myers@Sun.COM     ACPI_SPMI_SMBUS                 = 4,
946*11225SDana.Myers@Sun.COM     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
947*11225SDana.Myers@Sun.COM };
948*11225SDana.Myers@Sun.COM 
949*11225SDana.Myers@Sun.COM 
950*11225SDana.Myers@Sun.COM /*******************************************************************************
951*11225SDana.Myers@Sun.COM  *
952*11225SDana.Myers@Sun.COM  * TCPA - Trusted Computing Platform Alliance table
953*11225SDana.Myers@Sun.COM  *        Version 1
954*11225SDana.Myers@Sun.COM  *
955*11225SDana.Myers@Sun.COM  * Conforms to "TCG PC Specific Implementation Specification",
956*11225SDana.Myers@Sun.COM  * Version 1.1, August 18, 2003
957*11225SDana.Myers@Sun.COM  *
958*11225SDana.Myers@Sun.COM  ******************************************************************************/
959*11225SDana.Myers@Sun.COM 
960*11225SDana.Myers@Sun.COM typedef struct acpi_table_tcpa
961*11225SDana.Myers@Sun.COM {
962*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
963*11225SDana.Myers@Sun.COM     UINT16                  Reserved;
964*11225SDana.Myers@Sun.COM     UINT32                  MaxLogLength;       /* Maximum length for the event log area */
965*11225SDana.Myers@Sun.COM     UINT64                  LogAddress;         /* Address of the event log area */
966*11225SDana.Myers@Sun.COM 
967*11225SDana.Myers@Sun.COM } ACPI_TABLE_TCPA;
968*11225SDana.Myers@Sun.COM 
969*11225SDana.Myers@Sun.COM 
970*11225SDana.Myers@Sun.COM /*******************************************************************************
971*11225SDana.Myers@Sun.COM  *
972*11225SDana.Myers@Sun.COM  * UEFI - UEFI Boot optimization Table
973*11225SDana.Myers@Sun.COM  *        Version 1
974*11225SDana.Myers@Sun.COM  *
975*11225SDana.Myers@Sun.COM  * Conforms to "Unified Extensible Firmware Interface Specification",
976*11225SDana.Myers@Sun.COM  * Version 2.3, May 8, 2009
977*11225SDana.Myers@Sun.COM  *
978*11225SDana.Myers@Sun.COM  ******************************************************************************/
979*11225SDana.Myers@Sun.COM 
980*11225SDana.Myers@Sun.COM typedef struct acpi_table_uefi
981*11225SDana.Myers@Sun.COM {
982*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
983*11225SDana.Myers@Sun.COM     UINT8                   Identifier[16];     /* UUID identifier */
984*11225SDana.Myers@Sun.COM     UINT16                  DataOffset;         /* Offset of remaining data in table */
985*11225SDana.Myers@Sun.COM 
986*11225SDana.Myers@Sun.COM } ACPI_TABLE_UEFI;
987*11225SDana.Myers@Sun.COM 
988*11225SDana.Myers@Sun.COM 
989*11225SDana.Myers@Sun.COM /*******************************************************************************
990*11225SDana.Myers@Sun.COM  *
991*11225SDana.Myers@Sun.COM  * WAET - Windows ACPI Emulated devices Table
992*11225SDana.Myers@Sun.COM  *        Version 1
993*11225SDana.Myers@Sun.COM  *
994*11225SDana.Myers@Sun.COM  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
995*11225SDana.Myers@Sun.COM  *
996*11225SDana.Myers@Sun.COM  ******************************************************************************/
997*11225SDana.Myers@Sun.COM 
998*11225SDana.Myers@Sun.COM typedef struct acpi_table_waet
999*11225SDana.Myers@Sun.COM {
1000*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1001*11225SDana.Myers@Sun.COM     UINT32                  Flags;
1002*11225SDana.Myers@Sun.COM 
1003*11225SDana.Myers@Sun.COM } ACPI_TABLE_WAET;
1004*11225SDana.Myers@Sun.COM 
1005*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
1006*11225SDana.Myers@Sun.COM 
1007*11225SDana.Myers@Sun.COM #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
1008*11225SDana.Myers@Sun.COM #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
1009*11225SDana.Myers@Sun.COM 
1010*11225SDana.Myers@Sun.COM 
1011*11225SDana.Myers@Sun.COM /*******************************************************************************
1012*11225SDana.Myers@Sun.COM  *
1013*11225SDana.Myers@Sun.COM  * WDAT - Watchdog Action Table
1014*11225SDana.Myers@Sun.COM  *        Version 1
1015*11225SDana.Myers@Sun.COM  *
1016*11225SDana.Myers@Sun.COM  * Conforms to "Hardware Watchdog Timers Design Specification",
1017*11225SDana.Myers@Sun.COM  * Copyright 2006 Microsoft Corporation.
1018*11225SDana.Myers@Sun.COM  *
1019*11225SDana.Myers@Sun.COM  ******************************************************************************/
1020*11225SDana.Myers@Sun.COM 
1021*11225SDana.Myers@Sun.COM typedef struct acpi_table_wdat
1022*11225SDana.Myers@Sun.COM {
1023*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1024*11225SDana.Myers@Sun.COM     UINT32                  HeaderLength;       /* Watchdog Header Length */
1025*11225SDana.Myers@Sun.COM     UINT16                  PciSegment;         /* PCI Segment number */
1026*11225SDana.Myers@Sun.COM     UINT8                   PciBus;             /* PCI Bus number */
1027*11225SDana.Myers@Sun.COM     UINT8                   PciDevice;          /* PCI Device number */
1028*11225SDana.Myers@Sun.COM     UINT8                   PciFunction;        /* PCI Function number */
1029*11225SDana.Myers@Sun.COM     UINT8                   Reserved[3];
1030*11225SDana.Myers@Sun.COM     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
1031*11225SDana.Myers@Sun.COM     UINT32                  MaxCount;           /* Maximum counter value supported */
1032*11225SDana.Myers@Sun.COM     UINT32                  MinCount;           /* Minimum counter value */
1033*11225SDana.Myers@Sun.COM     UINT8                   Flags;
1034*11225SDana.Myers@Sun.COM     UINT8                   Reserved2[3];
1035*11225SDana.Myers@Sun.COM     UINT32                  Entries;            /* Number of watchdog entries that follow */
1036*11225SDana.Myers@Sun.COM 
1037*11225SDana.Myers@Sun.COM } ACPI_TABLE_WDAT;
1038*11225SDana.Myers@Sun.COM 
1039*11225SDana.Myers@Sun.COM /* Masks for Flags field above */
1040*11225SDana.Myers@Sun.COM 
1041*11225SDana.Myers@Sun.COM #define ACPI_WDAT_ENABLED           (1)
1042*11225SDana.Myers@Sun.COM #define ACPI_WDAT_STOPPED           0x80
1043*11225SDana.Myers@Sun.COM 
1044*11225SDana.Myers@Sun.COM 
1045*11225SDana.Myers@Sun.COM /* WDAT Instruction Entries (actions) */
1046*11225SDana.Myers@Sun.COM 
1047*11225SDana.Myers@Sun.COM typedef struct acpi_wdat_entry
1048*11225SDana.Myers@Sun.COM {
1049*11225SDana.Myers@Sun.COM     UINT8                   Action;
1050*11225SDana.Myers@Sun.COM     UINT8                   Instruction;
1051*11225SDana.Myers@Sun.COM     UINT16                  Reserved;
1052*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    RegisterRegion;
1053*11225SDana.Myers@Sun.COM     UINT32                  Value;              /* Value used with Read/Write register */
1054*11225SDana.Myers@Sun.COM     UINT32                  Mask;               /* Bitmask required for this register instruction */
1055*11225SDana.Myers@Sun.COM 
1056*11225SDana.Myers@Sun.COM } ACPI_WDAT_ENTRY;
1057*11225SDana.Myers@Sun.COM 
1058*11225SDana.Myers@Sun.COM /* Values for Action field above */
1059*11225SDana.Myers@Sun.COM 
1060*11225SDana.Myers@Sun.COM enum AcpiWdatActions
1061*11225SDana.Myers@Sun.COM {
1062*11225SDana.Myers@Sun.COM     ACPI_WDAT_RESET                 = 1,
1063*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1064*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_COUNTDOWN         = 5,
1065*11225SDana.Myers@Sun.COM     ACPI_WDAT_SET_COUNTDOWN         = 6,
1066*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_RUNNING_STATE     = 8,
1067*11225SDana.Myers@Sun.COM     ACPI_WDAT_SET_RUNNING_STATE     = 9,
1068*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_STOPPED_STATE     = 10,
1069*11225SDana.Myers@Sun.COM     ACPI_WDAT_SET_STOPPED_STATE     = 11,
1070*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_REBOOT            = 16,
1071*11225SDana.Myers@Sun.COM     ACPI_WDAT_SET_REBOOT            = 17,
1072*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_SHUTDOWN          = 18,
1073*11225SDana.Myers@Sun.COM     ACPI_WDAT_SET_SHUTDOWN          = 19,
1074*11225SDana.Myers@Sun.COM     ACPI_WDAT_GET_STATUS            = 32,
1075*11225SDana.Myers@Sun.COM     ACPI_WDAT_SET_STATUS            = 33,
1076*11225SDana.Myers@Sun.COM     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
1077*11225SDana.Myers@Sun.COM };
1078*11225SDana.Myers@Sun.COM 
1079*11225SDana.Myers@Sun.COM /* Values for Instruction field above */
1080*11225SDana.Myers@Sun.COM 
1081*11225SDana.Myers@Sun.COM enum AcpiWdatInstructions
1082*11225SDana.Myers@Sun.COM {
1083*11225SDana.Myers@Sun.COM     ACPI_WDAT_READ_VALUE            = 0,
1084*11225SDana.Myers@Sun.COM     ACPI_WDAT_READ_COUNTDOWN        = 1,
1085*11225SDana.Myers@Sun.COM     ACPI_WDAT_WRITE_VALUE           = 2,
1086*11225SDana.Myers@Sun.COM     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
1087*11225SDana.Myers@Sun.COM     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
1088*11225SDana.Myers@Sun.COM     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
1089*11225SDana.Myers@Sun.COM };
1090*11225SDana.Myers@Sun.COM 
1091*11225SDana.Myers@Sun.COM 
1092*11225SDana.Myers@Sun.COM /*******************************************************************************
1093*11225SDana.Myers@Sun.COM  *
1094*11225SDana.Myers@Sun.COM  * WDRT - Watchdog Resource Table
1095*11225SDana.Myers@Sun.COM  *        Version 1
1096*11225SDana.Myers@Sun.COM  *
1097*11225SDana.Myers@Sun.COM  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1098*11225SDana.Myers@Sun.COM  * Version 1.01, August 28, 2006
1099*11225SDana.Myers@Sun.COM  *
1100*11225SDana.Myers@Sun.COM  ******************************************************************************/
1101*11225SDana.Myers@Sun.COM 
1102*11225SDana.Myers@Sun.COM typedef struct acpi_table_wdrt
1103*11225SDana.Myers@Sun.COM {
1104*11225SDana.Myers@Sun.COM     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1105*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    ControlRegister;
1106*11225SDana.Myers@Sun.COM     ACPI_GENERIC_ADDRESS    CountRegister;
1107*11225SDana.Myers@Sun.COM     UINT16                  PciDeviceId;
1108*11225SDana.Myers@Sun.COM     UINT16                  PciVendorId;
1109*11225SDana.Myers@Sun.COM     UINT8                   PciBus;             /* PCI Bus number */
1110*11225SDana.Myers@Sun.COM     UINT8                   PciDevice;          /* PCI Device number */
1111*11225SDana.Myers@Sun.COM     UINT8                   PciFunction;        /* PCI Function number */
1112*11225SDana.Myers@Sun.COM     UINT8                   PciSegment;         /* PCI Segment number */
1113*11225SDana.Myers@Sun.COM     UINT16                  MaxCount;           /* Maximum counter value supported */
1114*11225SDana.Myers@Sun.COM     UINT8                   Units;
1115*11225SDana.Myers@Sun.COM 
1116*11225SDana.Myers@Sun.COM } ACPI_TABLE_WDRT;
1117*11225SDana.Myers@Sun.COM 
1118*11225SDana.Myers@Sun.COM 
1119*11225SDana.Myers@Sun.COM /* Reset to default packing */
1120*11225SDana.Myers@Sun.COM 
1121*11225SDana.Myers@Sun.COM #pragma pack()
11220Sstevel@tonic-gate 
11230Sstevel@tonic-gate #endif /* __ACTBL2_H__ */
11240Sstevel@tonic-gate 
1125