xref: /openbmc/linux/include/acpi/actbl.h (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds /******************************************************************************
2*1da177e4SLinus Torvalds  *
3*1da177e4SLinus Torvalds  * Name: actbl.h - Table data structures defined in ACPI specification
4*1da177e4SLinus Torvalds  *
5*1da177e4SLinus Torvalds  *****************************************************************************/
6*1da177e4SLinus Torvalds 
7*1da177e4SLinus Torvalds /*
8*1da177e4SLinus Torvalds  * Copyright (C) 2000 - 2005, R. Byron Moore
9*1da177e4SLinus Torvalds  * All rights reserved.
10*1da177e4SLinus Torvalds  *
11*1da177e4SLinus Torvalds  * Redistribution and use in source and binary forms, with or without
12*1da177e4SLinus Torvalds  * modification, are permitted provided that the following conditions
13*1da177e4SLinus Torvalds  * are met:
14*1da177e4SLinus Torvalds  * 1. Redistributions of source code must retain the above copyright
15*1da177e4SLinus Torvalds  *    notice, this list of conditions, and the following disclaimer,
16*1da177e4SLinus Torvalds  *    without modification.
17*1da177e4SLinus Torvalds  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*1da177e4SLinus Torvalds  *    substantially similar to the "NO WARRANTY" disclaimer below
19*1da177e4SLinus Torvalds  *    ("Disclaimer") and any redistribution must be conditioned upon
20*1da177e4SLinus Torvalds  *    including a substantially similar Disclaimer requirement for further
21*1da177e4SLinus Torvalds  *    binary redistribution.
22*1da177e4SLinus Torvalds  * 3. Neither the names of the above-listed copyright holders nor the names
23*1da177e4SLinus Torvalds  *    of any contributors may be used to endorse or promote products derived
24*1da177e4SLinus Torvalds  *    from this software without specific prior written permission.
25*1da177e4SLinus Torvalds  *
26*1da177e4SLinus Torvalds  * Alternatively, this software may be distributed under the terms of the
27*1da177e4SLinus Torvalds  * GNU General Public License ("GPL") version 2 as published by the Free
28*1da177e4SLinus Torvalds  * Software Foundation.
29*1da177e4SLinus Torvalds  *
30*1da177e4SLinus Torvalds  * NO WARRANTY
31*1da177e4SLinus Torvalds  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32*1da177e4SLinus Torvalds  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33*1da177e4SLinus Torvalds  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34*1da177e4SLinus Torvalds  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35*1da177e4SLinus Torvalds  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36*1da177e4SLinus Torvalds  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37*1da177e4SLinus Torvalds  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*1da177e4SLinus Torvalds  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*1da177e4SLinus Torvalds  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40*1da177e4SLinus Torvalds  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41*1da177e4SLinus Torvalds  * POSSIBILITY OF SUCH DAMAGES.
42*1da177e4SLinus Torvalds  */
43*1da177e4SLinus Torvalds 
44*1da177e4SLinus Torvalds #ifndef __ACTBL_H__
45*1da177e4SLinus Torvalds #define __ACTBL_H__
46*1da177e4SLinus Torvalds 
47*1da177e4SLinus Torvalds 
48*1da177e4SLinus Torvalds /*
49*1da177e4SLinus Torvalds  *  Values for description table header signatures
50*1da177e4SLinus Torvalds  */
51*1da177e4SLinus Torvalds #define RSDP_NAME               "RSDP"
52*1da177e4SLinus Torvalds #define RSDP_SIG                "RSD PTR "  /* RSDT Pointer signature */
53*1da177e4SLinus Torvalds #define APIC_SIG                "APIC"      /* Multiple APIC Description Table */
54*1da177e4SLinus Torvalds #define DSDT_SIG                "DSDT"      /* Differentiated System Description Table */
55*1da177e4SLinus Torvalds #define FADT_SIG                "FACP"      /* Fixed ACPI Description Table */
56*1da177e4SLinus Torvalds #define FACS_SIG                "FACS"      /* Firmware ACPI Control Structure */
57*1da177e4SLinus Torvalds #define PSDT_SIG                "PSDT"      /* Persistent System Description Table */
58*1da177e4SLinus Torvalds #define RSDT_SIG                "RSDT"      /* Root System Description Table */
59*1da177e4SLinus Torvalds #define XSDT_SIG                "XSDT"      /* Extended  System Description Table */
60*1da177e4SLinus Torvalds #define SSDT_SIG                "SSDT"      /* Secondary System Description Table */
61*1da177e4SLinus Torvalds #define SBST_SIG                "SBST"      /* Smart Battery Specification Table */
62*1da177e4SLinus Torvalds #define SPIC_SIG                "SPIC"      /* IOSAPIC table */
63*1da177e4SLinus Torvalds #define BOOT_SIG                "BOOT"      /* Boot table */
64*1da177e4SLinus Torvalds 
65*1da177e4SLinus Torvalds 
66*1da177e4SLinus Torvalds #define GL_OWNED                0x02        /* Ownership of global lock is bit 1 */
67*1da177e4SLinus Torvalds 
68*1da177e4SLinus Torvalds 
69*1da177e4SLinus Torvalds /*
70*1da177e4SLinus Torvalds  * Common table types.  The base code can remain
71*1da177e4SLinus Torvalds  * constant if the underlying tables are changed
72*1da177e4SLinus Torvalds  */
73*1da177e4SLinus Torvalds #define RSDT_DESCRIPTOR         struct rsdt_descriptor_rev2
74*1da177e4SLinus Torvalds #define XSDT_DESCRIPTOR         struct xsdt_descriptor_rev2
75*1da177e4SLinus Torvalds #define FACS_DESCRIPTOR         struct facs_descriptor_rev2
76*1da177e4SLinus Torvalds #define FADT_DESCRIPTOR         struct fadt_descriptor_rev2
77*1da177e4SLinus Torvalds 
78*1da177e4SLinus Torvalds 
79*1da177e4SLinus Torvalds #pragma pack(1)
80*1da177e4SLinus Torvalds 
81*1da177e4SLinus Torvalds /*
82*1da177e4SLinus Torvalds  * ACPI Version-independent tables
83*1da177e4SLinus Torvalds  *
84*1da177e4SLinus Torvalds  * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
85*1da177e4SLinus Torvalds  * are in separate files.
86*1da177e4SLinus Torvalds  */
87*1da177e4SLinus Torvalds struct rsdp_descriptor         /* Root System Descriptor Pointer */
88*1da177e4SLinus Torvalds {
89*1da177e4SLinus Torvalds 	char                            signature [8];          /* ACPI signature, contains "RSD PTR " */
90*1da177e4SLinus Torvalds 	u8                              checksum;               /* To make sum of struct == 0 */
91*1da177e4SLinus Torvalds 	char                            oem_id [6];             /* OEM identification */
92*1da177e4SLinus Torvalds 	u8                              revision;               /* Must be 0 for 1.0, 2 for 2.0 */
93*1da177e4SLinus Torvalds 	u32                             rsdt_physical_address;  /* 32-bit physical address of RSDT */
94*1da177e4SLinus Torvalds 	u32                             length;                 /* XSDT Length in bytes including hdr */
95*1da177e4SLinus Torvalds 	u64                             xsdt_physical_address;  /* 64-bit physical address of XSDT */
96*1da177e4SLinus Torvalds 	u8                              extended_checksum;      /* Checksum of entire table */
97*1da177e4SLinus Torvalds 	char                            reserved [3];           /* Reserved field must be 0 */
98*1da177e4SLinus Torvalds };
99*1da177e4SLinus Torvalds 
100*1da177e4SLinus Torvalds 
101*1da177e4SLinus Torvalds struct acpi_common_facs          /* Common FACS for internal use */
102*1da177e4SLinus Torvalds {
103*1da177e4SLinus Torvalds 	u32                             *global_lock;
104*1da177e4SLinus Torvalds 	u64                             *firmware_waking_vector;
105*1da177e4SLinus Torvalds 	u8                              vector_width;
106*1da177e4SLinus Torvalds };
107*1da177e4SLinus Torvalds 
108*1da177e4SLinus Torvalds 
109*1da177e4SLinus Torvalds #define ACPI_TABLE_HEADER_DEF   /* ACPI common table header */ \
110*1da177e4SLinus Torvalds 	char                            signature [4];          /* ACPI signature (4 ASCII characters) */\
111*1da177e4SLinus Torvalds 	u32                             length;                 /* Length of table, in bytes, including header */\
112*1da177e4SLinus Torvalds 	u8                              revision;               /* ACPI Specification minor version # */\
113*1da177e4SLinus Torvalds 	u8                              checksum;               /* To make sum of entire table == 0 */\
114*1da177e4SLinus Torvalds 	char                            oem_id [6];             /* OEM identification */\
115*1da177e4SLinus Torvalds 	char                            oem_table_id [8];       /* OEM table identification */\
116*1da177e4SLinus Torvalds 	u32                             oem_revision;           /* OEM revision number */\
117*1da177e4SLinus Torvalds 	char                            asl_compiler_id [4];    /* ASL compiler vendor ID */\
118*1da177e4SLinus Torvalds 	u32                             asl_compiler_revision;  /* ASL compiler revision number */
119*1da177e4SLinus Torvalds 
120*1da177e4SLinus Torvalds 
121*1da177e4SLinus Torvalds struct acpi_table_header         /* ACPI common table header */
122*1da177e4SLinus Torvalds {
123*1da177e4SLinus Torvalds 	ACPI_TABLE_HEADER_DEF
124*1da177e4SLinus Torvalds };
125*1da177e4SLinus Torvalds 
126*1da177e4SLinus Torvalds 
127*1da177e4SLinus Torvalds /*
128*1da177e4SLinus Torvalds  * MADT values and structures
129*1da177e4SLinus Torvalds  */
130*1da177e4SLinus Torvalds 
131*1da177e4SLinus Torvalds /* Values for MADT PCATCompat */
132*1da177e4SLinus Torvalds 
133*1da177e4SLinus Torvalds #define DUAL_PIC                0
134*1da177e4SLinus Torvalds #define MULTIPLE_APIC           1
135*1da177e4SLinus Torvalds 
136*1da177e4SLinus Torvalds 
137*1da177e4SLinus Torvalds /* Master MADT */
138*1da177e4SLinus Torvalds 
139*1da177e4SLinus Torvalds struct multiple_apic_table
140*1da177e4SLinus Torvalds {
141*1da177e4SLinus Torvalds 	ACPI_TABLE_HEADER_DEF                           /* ACPI common table header */
142*1da177e4SLinus Torvalds 	u32                             local_apic_address;     /* Physical address of local APIC */
143*1da177e4SLinus Torvalds 	u32                             PCATcompat      : 1;    /* A one indicates system also has dual 8259s */
144*1da177e4SLinus Torvalds 	u32                             reserved1       : 31;
145*1da177e4SLinus Torvalds };
146*1da177e4SLinus Torvalds 
147*1da177e4SLinus Torvalds 
148*1da177e4SLinus Torvalds /* Values for Type in APIC_HEADER_DEF */
149*1da177e4SLinus Torvalds 
150*1da177e4SLinus Torvalds #define APIC_PROCESSOR          0
151*1da177e4SLinus Torvalds #define APIC_IO                 1
152*1da177e4SLinus Torvalds #define APIC_XRUPT_OVERRIDE     2
153*1da177e4SLinus Torvalds #define APIC_NMI                3
154*1da177e4SLinus Torvalds #define APIC_LOCAL_NMI          4
155*1da177e4SLinus Torvalds #define APIC_ADDRESS_OVERRIDE   5
156*1da177e4SLinus Torvalds #define APIC_IO_SAPIC           6
157*1da177e4SLinus Torvalds #define APIC_LOCAL_SAPIC        7
158*1da177e4SLinus Torvalds #define APIC_XRUPT_SOURCE       8
159*1da177e4SLinus Torvalds #define APIC_RESERVED           9           /* 9 and greater are reserved */
160*1da177e4SLinus Torvalds 
161*1da177e4SLinus Torvalds /*
162*1da177e4SLinus Torvalds  * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
163*1da177e4SLinus Torvalds  */
164*1da177e4SLinus Torvalds #define APIC_HEADER_DEF                     /* Common APIC sub-structure header */\
165*1da177e4SLinus Torvalds 	u8                              type; \
166*1da177e4SLinus Torvalds 	u8                              length;
167*1da177e4SLinus Torvalds 
168*1da177e4SLinus Torvalds struct apic_header
169*1da177e4SLinus Torvalds {
170*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
171*1da177e4SLinus Torvalds };
172*1da177e4SLinus Torvalds 
173*1da177e4SLinus Torvalds /* Values for MPS INTI flags */
174*1da177e4SLinus Torvalds 
175*1da177e4SLinus Torvalds #define POLARITY_CONFORMS       0
176*1da177e4SLinus Torvalds #define POLARITY_ACTIVE_HIGH    1
177*1da177e4SLinus Torvalds #define POLARITY_RESERVED       2
178*1da177e4SLinus Torvalds #define POLARITY_ACTIVE_LOW     3
179*1da177e4SLinus Torvalds 
180*1da177e4SLinus Torvalds #define TRIGGER_CONFORMS        0
181*1da177e4SLinus Torvalds #define TRIGGER_EDGE            1
182*1da177e4SLinus Torvalds #define TRIGGER_RESERVED        2
183*1da177e4SLinus Torvalds #define TRIGGER_LEVEL           3
184*1da177e4SLinus Torvalds 
185*1da177e4SLinus Torvalds /* Common flag definitions */
186*1da177e4SLinus Torvalds 
187*1da177e4SLinus Torvalds #define MPS_INTI_FLAGS \
188*1da177e4SLinus Torvalds 	u16                             polarity        : 2;    /* Polarity of APIC I/O input signals */\
189*1da177e4SLinus Torvalds 	u16                             trigger_mode    : 2;    /* Trigger mode of APIC input signals */\
190*1da177e4SLinus Torvalds 	u16                             reserved1       : 12;   /* Reserved, must be zero */
191*1da177e4SLinus Torvalds 
192*1da177e4SLinus Torvalds #define LOCAL_APIC_FLAGS \
193*1da177e4SLinus Torvalds 	u32                             processor_enabled: 1;   /* Processor is usable if set */\
194*1da177e4SLinus Torvalds 	u32                             reserved2       : 31;   /* Reserved, must be zero */
195*1da177e4SLinus Torvalds 
196*1da177e4SLinus Torvalds /* Sub-structures for MADT */
197*1da177e4SLinus Torvalds 
198*1da177e4SLinus Torvalds struct madt_processor_apic
199*1da177e4SLinus Torvalds {
200*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
201*1da177e4SLinus Torvalds 	u8                              processor_id;           /* ACPI processor id */
202*1da177e4SLinus Torvalds 	u8                              local_apic_id;          /* Processor's local APIC id */
203*1da177e4SLinus Torvalds 	LOCAL_APIC_FLAGS
204*1da177e4SLinus Torvalds };
205*1da177e4SLinus Torvalds 
206*1da177e4SLinus Torvalds struct madt_io_apic
207*1da177e4SLinus Torvalds {
208*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
209*1da177e4SLinus Torvalds 	u8                              io_apic_id;             /* I/O APIC ID */
210*1da177e4SLinus Torvalds 	u8                              reserved;               /* Reserved - must be zero */
211*1da177e4SLinus Torvalds 	u32                             address;                /* APIC physical address */
212*1da177e4SLinus Torvalds 	u32                             interrupt;              /* Global system interrupt where INTI
213*1da177e4SLinus Torvalds 			  * lines start */
214*1da177e4SLinus Torvalds };
215*1da177e4SLinus Torvalds 
216*1da177e4SLinus Torvalds struct madt_interrupt_override
217*1da177e4SLinus Torvalds {
218*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
219*1da177e4SLinus Torvalds 	u8                              bus;                    /* 0 - ISA */
220*1da177e4SLinus Torvalds 	u8                              source;                 /* Interrupt source (IRQ) */
221*1da177e4SLinus Torvalds 	u32                             interrupt;              /* Global system interrupt */
222*1da177e4SLinus Torvalds 	MPS_INTI_FLAGS
223*1da177e4SLinus Torvalds };
224*1da177e4SLinus Torvalds 
225*1da177e4SLinus Torvalds struct madt_nmi_source
226*1da177e4SLinus Torvalds {
227*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
228*1da177e4SLinus Torvalds 	MPS_INTI_FLAGS
229*1da177e4SLinus Torvalds 	u32                             interrupt;              /* Global system interrupt */
230*1da177e4SLinus Torvalds };
231*1da177e4SLinus Torvalds 
232*1da177e4SLinus Torvalds struct madt_local_apic_nmi
233*1da177e4SLinus Torvalds {
234*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
235*1da177e4SLinus Torvalds 	u8                              processor_id;           /* ACPI processor id */
236*1da177e4SLinus Torvalds 	MPS_INTI_FLAGS
237*1da177e4SLinus Torvalds 	u8                              lint;                   /* LINTn to which NMI is connected */
238*1da177e4SLinus Torvalds };
239*1da177e4SLinus Torvalds 
240*1da177e4SLinus Torvalds struct madt_address_override
241*1da177e4SLinus Torvalds {
242*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
243*1da177e4SLinus Torvalds 	u16                             reserved;               /* Reserved - must be zero */
244*1da177e4SLinus Torvalds 	u64                             address;                /* APIC physical address */
245*1da177e4SLinus Torvalds };
246*1da177e4SLinus Torvalds 
247*1da177e4SLinus Torvalds struct madt_io_sapic
248*1da177e4SLinus Torvalds {
249*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
250*1da177e4SLinus Torvalds 	u8                              io_sapic_id;            /* I/O SAPIC ID */
251*1da177e4SLinus Torvalds 	u8                              reserved;               /* Reserved - must be zero */
252*1da177e4SLinus Torvalds 	u32                             interrupt_base;         /* Glocal interrupt for SAPIC start */
253*1da177e4SLinus Torvalds 	u64                             address;                /* SAPIC physical address */
254*1da177e4SLinus Torvalds };
255*1da177e4SLinus Torvalds 
256*1da177e4SLinus Torvalds struct madt_local_sapic
257*1da177e4SLinus Torvalds {
258*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
259*1da177e4SLinus Torvalds 	u8                              processor_id;           /* ACPI processor id */
260*1da177e4SLinus Torvalds 	u8                              local_sapic_id;         /* SAPIC ID */
261*1da177e4SLinus Torvalds 	u8                              local_sapic_eid;        /* SAPIC EID */
262*1da177e4SLinus Torvalds 	u8                              reserved [3];           /* Reserved - must be zero */
263*1da177e4SLinus Torvalds 	LOCAL_APIC_FLAGS
264*1da177e4SLinus Torvalds 	u32                             processor_uID;          /* Numeric UID - ACPI 3.0 */
265*1da177e4SLinus Torvalds 	char                            processor_uIDstring[1]; /* String UID  - ACPI 3.0 */
266*1da177e4SLinus Torvalds };
267*1da177e4SLinus Torvalds 
268*1da177e4SLinus Torvalds struct madt_interrupt_source
269*1da177e4SLinus Torvalds {
270*1da177e4SLinus Torvalds 	APIC_HEADER_DEF
271*1da177e4SLinus Torvalds 	MPS_INTI_FLAGS
272*1da177e4SLinus Torvalds 	u8                              interrupt_type;         /* 1=PMI, 2=INIT, 3=corrected */
273*1da177e4SLinus Torvalds 	u8                              processor_id;           /* Processor ID */
274*1da177e4SLinus Torvalds 	u8                              processor_eid;          /* Processor EID */
275*1da177e4SLinus Torvalds 	u8                              io_sapic_vector;        /* Vector value for PMI interrupts */
276*1da177e4SLinus Torvalds 	u32                             interrupt;              /* Global system interrupt */
277*1da177e4SLinus Torvalds 	u32                             flags;                  /* Interrupt Source Flags */
278*1da177e4SLinus Torvalds };
279*1da177e4SLinus Torvalds 
280*1da177e4SLinus Torvalds 
281*1da177e4SLinus Torvalds /*
282*1da177e4SLinus Torvalds  * Smart Battery
283*1da177e4SLinus Torvalds  */
284*1da177e4SLinus Torvalds struct smart_battery_table
285*1da177e4SLinus Torvalds {
286*1da177e4SLinus Torvalds 	ACPI_TABLE_HEADER_DEF
287*1da177e4SLinus Torvalds 	u32                             warning_level;
288*1da177e4SLinus Torvalds 	u32                             low_level;
289*1da177e4SLinus Torvalds 	u32                             critical_level;
290*1da177e4SLinus Torvalds };
291*1da177e4SLinus Torvalds 
292*1da177e4SLinus Torvalds 
293*1da177e4SLinus Torvalds #pragma pack()
294*1da177e4SLinus Torvalds 
295*1da177e4SLinus Torvalds 
296*1da177e4SLinus Torvalds /*
297*1da177e4SLinus Torvalds  * ACPI Table information.  We save the table address, length,
298*1da177e4SLinus Torvalds  * and type of memory allocation (mapped or allocated) for each
299*1da177e4SLinus Torvalds  * table for 1) when we exit, and 2) if a new table is installed
300*1da177e4SLinus Torvalds  */
301*1da177e4SLinus Torvalds #define ACPI_MEM_NOT_ALLOCATED  0
302*1da177e4SLinus Torvalds #define ACPI_MEM_ALLOCATED      1
303*1da177e4SLinus Torvalds #define ACPI_MEM_MAPPED         2
304*1da177e4SLinus Torvalds 
305*1da177e4SLinus Torvalds /* Definitions for the Flags bitfield member of struct acpi_table_support */
306*1da177e4SLinus Torvalds 
307*1da177e4SLinus Torvalds #define ACPI_TABLE_SINGLE       0x00
308*1da177e4SLinus Torvalds #define ACPI_TABLE_MULTIPLE     0x01
309*1da177e4SLinus Torvalds #define ACPI_TABLE_EXECUTABLE   0x02
310*1da177e4SLinus Torvalds 
311*1da177e4SLinus Torvalds #define ACPI_TABLE_ROOT         0x00
312*1da177e4SLinus Torvalds #define ACPI_TABLE_PRIMARY      0x10
313*1da177e4SLinus Torvalds #define ACPI_TABLE_SECONDARY    0x20
314*1da177e4SLinus Torvalds #define ACPI_TABLE_ALL          0x30
315*1da177e4SLinus Torvalds #define ACPI_TABLE_TYPE_MASK    0x30
316*1da177e4SLinus Torvalds 
317*1da177e4SLinus Torvalds /* Data about each known table type */
318*1da177e4SLinus Torvalds 
319*1da177e4SLinus Torvalds struct acpi_table_support
320*1da177e4SLinus Torvalds {
321*1da177e4SLinus Torvalds 	char                            *name;
322*1da177e4SLinus Torvalds 	char                            *signature;
323*1da177e4SLinus Torvalds 	void                            **global_ptr;
324*1da177e4SLinus Torvalds 	u8                              sig_length;
325*1da177e4SLinus Torvalds 	u8                              flags;
326*1da177e4SLinus Torvalds };
327*1da177e4SLinus Torvalds 
328*1da177e4SLinus Torvalds 
329*1da177e4SLinus Torvalds /*
330*1da177e4SLinus Torvalds  * Get the ACPI version-specific tables
331*1da177e4SLinus Torvalds  */
332*1da177e4SLinus Torvalds #include "actbl1.h"   /* Acpi 1.0 table definitions */
333*1da177e4SLinus Torvalds #include "actbl2.h"   /* Acpi 2.0 table definitions */
334*1da177e4SLinus Torvalds 
335*1da177e4SLinus Torvalds extern u8 acpi_fadt_is_v1; /* is set to 1 if FADT is revision 1,
336*1da177e4SLinus Torvalds 			    * needed for certain workarounds */
337*1da177e4SLinus Torvalds 
338*1da177e4SLinus Torvalds #pragma pack(1)
339*1da177e4SLinus Torvalds /*
340*1da177e4SLinus Torvalds  * High performance timer
341*1da177e4SLinus Torvalds  */
342*1da177e4SLinus Torvalds struct hpet_table
343*1da177e4SLinus Torvalds {
344*1da177e4SLinus Torvalds 	ACPI_TABLE_HEADER_DEF
345*1da177e4SLinus Torvalds 	u32                             hardware_id;
346*1da177e4SLinus Torvalds 	struct acpi_generic_address     base_address;
347*1da177e4SLinus Torvalds 	u8                              hpet_number;
348*1da177e4SLinus Torvalds 	u16                             clock_tick;
349*1da177e4SLinus Torvalds 	u8                              attributes;
350*1da177e4SLinus Torvalds };
351*1da177e4SLinus Torvalds 
352*1da177e4SLinus Torvalds #pragma pack()
353*1da177e4SLinus Torvalds 
354*1da177e4SLinus Torvalds #endif /* __ACTBL_H__ */
355