aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/actbl.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/acpi/actbl.h')
-rw-r--r--include/acpi/actbl.h282
1 files changed, 120 insertions, 162 deletions
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index b5cdcca444c8..a46f406e1c94 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -44,27 +44,24 @@
44#ifndef __ACTBL_H__ 44#ifndef __ACTBL_H__
45#define __ACTBL_H__ 45#define __ACTBL_H__
46 46
47
48/* 47/*
49 * Values for description table header signatures 48 * Values for description table header signatures
50 */ 49 */
51#define RSDP_NAME "RSDP" 50#define RSDP_NAME "RSDP"
52#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ 51#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */
53#define APIC_SIG "APIC" /* Multiple APIC Description Table */ 52#define APIC_SIG "APIC" /* Multiple APIC Description Table */
54#define DSDT_SIG "DSDT" /* Differentiated System Description Table */ 53#define DSDT_SIG "DSDT" /* Differentiated System Description Table */
55#define FADT_SIG "FACP" /* Fixed ACPI Description Table */ 54#define FADT_SIG "FACP" /* Fixed ACPI Description Table */
56#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */ 55#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */
57#define PSDT_SIG "PSDT" /* Persistent System Description Table */ 56#define PSDT_SIG "PSDT" /* Persistent System Description Table */
58#define RSDT_SIG "RSDT" /* Root System Description Table */ 57#define RSDT_SIG "RSDT" /* Root System Description Table */
59#define XSDT_SIG "XSDT" /* Extended System Description Table */ 58#define XSDT_SIG "XSDT" /* Extended System Description Table */
60#define SSDT_SIG "SSDT" /* Secondary System Description Table */ 59#define SSDT_SIG "SSDT" /* Secondary System Description Table */
61#define SBST_SIG "SBST" /* Smart Battery Specification Table */ 60#define SBST_SIG "SBST" /* Smart Battery Specification Table */
62#define SPIC_SIG "SPIC" /* IOSAPIC table */ 61#define SPIC_SIG "SPIC" /* IOSAPIC table */
63#define BOOT_SIG "BOOT" /* Boot table */ 62#define BOOT_SIG "BOOT" /* Boot table */
64 63
65 64#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
66#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
67
68 65
69/* 66/*
70 * Common table types. The base code can remain 67 * Common table types. The base code can remain
@@ -75,7 +72,6 @@
75#define FACS_DESCRIPTOR struct facs_descriptor_rev2 72#define FACS_DESCRIPTOR struct facs_descriptor_rev2
76#define FADT_DESCRIPTOR struct fadt_descriptor_rev2 73#define FADT_DESCRIPTOR struct fadt_descriptor_rev2
77 74
78
79#pragma pack(1) 75#pragma pack(1)
80 76
81/* 77/*
@@ -84,45 +80,37 @@
84 * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.) 80 * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
85 * are in separate files. 81 * are in separate files.
86 */ 82 */
87struct rsdp_descriptor /* Root System Descriptor Pointer */ 83struct rsdp_descriptor { /* Root System Descriptor Pointer */
88{ 84 char signature[8]; /* ACPI signature, contains "RSD PTR " */
89 char signature [8]; /* ACPI signature, contains "RSD PTR " */ 85 u8 checksum; /* ACPI 1.0 checksum */
90 u8 checksum; /* To make sum of struct == 0 */ 86 char oem_id[6]; /* OEM identification */
91 char oem_id [6]; /* OEM identification */ 87 u8 revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */
92 u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */ 88 u32 rsdt_physical_address; /* 32-bit physical address of the RSDT */
93 u32 rsdt_physical_address; /* 32-bit physical address of RSDT */ 89 u32 length; /* XSDT Length in bytes, including header */
94 u32 length; /* XSDT Length in bytes including hdr */ 90 u64 xsdt_physical_address; /* 64-bit physical address of the XSDT */
95 u64 xsdt_physical_address; /* 64-bit physical address of XSDT */ 91 u8 extended_checksum; /* Checksum of entire table (ACPI 2.0) */
96 u8 extended_checksum; /* Checksum of entire table */ 92 char reserved[3]; /* Reserved, must be zero */
97 char reserved [3]; /* Reserved field must be 0 */
98}; 93};
99 94
100 95struct acpi_common_facs { /* Common FACS for internal use */
101struct acpi_common_facs /* Common FACS for internal use */ 96 u32 *global_lock;
102{ 97 u64 *firmware_waking_vector;
103 u32 *global_lock; 98 u8 vector_width;
104 u64 *firmware_waking_vector;
105 u8 vector_width;
106}; 99};
107 100
108
109#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \ 101#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
110 char signature [4]; /* ACPI signature (4 ASCII characters) */\ 102 char signature[4]; /* ASCII table signature */\
111 u32 length; /* Length of table, in bytes, including header */\ 103 u32 length; /* Length of table in bytes, including this header */\
112 u8 revision; /* ACPI Specification minor version # */\ 104 u8 revision; /* ACPI Specification minor version # */\
113 u8 checksum; /* To make sum of entire table == 0 */\ 105 u8 checksum; /* To make sum of entire table == 0 */\
114 char oem_id [6]; /* OEM identification */\ 106 char oem_id[6]; /* ASCII OEM identification */\
115 char oem_table_id [8]; /* OEM table identification */\ 107 char oem_table_id[8]; /* ASCII OEM table identification */\
116 u32 oem_revision; /* OEM revision number */\ 108 u32 oem_revision; /* OEM revision number */\
117 char asl_compiler_id [4]; /* ASL compiler vendor ID */\ 109 char asl_compiler_id [4]; /* ASCII ASL compiler vendor ID */\
118 u32 asl_compiler_revision; /* ASL compiler revision number */ 110 u32 asl_compiler_revision; /* ASL compiler version */
119
120
121struct acpi_table_header /* ACPI common table header */
122{
123 ACPI_TABLE_HEADER_DEF
124};
125 111
112struct acpi_table_header { /* ACPI common table header */
113ACPI_TABLE_HEADER_DEF};
126 114
127/* 115/*
128 * MADT values and structures 116 * MADT values and structures
@@ -135,12 +123,15 @@ struct acpi_table_header /* ACPI common table header */
135 123
136/* Master MADT */ 124/* Master MADT */
137 125
138struct multiple_apic_table 126struct multiple_apic_table {
139{ 127 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
140 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 128 u32 local_apic_address; /* Physical address of local APIC */
141 u32 local_apic_address; /* Physical address of local APIC */ 129
142 u32 PCATcompat : 1; /* A one indicates system also has dual 8259s */ 130 /* Flags (32 bits) */
143 u32 reserved1 : 31; 131
132 u8 PCATcompat:1; /* 00: System also has dual 8259s */
133 u8:7; /* 01-07: Reserved, must be zero */
134 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
144}; 135};
145 136
146/* Values for Type in APIC_HEADER_DEF */ 137/* Values for Type in APIC_HEADER_DEF */
@@ -154,7 +145,7 @@ struct multiple_apic_table
154#define APIC_IO_SAPIC 6 145#define APIC_IO_SAPIC 6
155#define APIC_LOCAL_SAPIC 7 146#define APIC_LOCAL_SAPIC 7
156#define APIC_XRUPT_SOURCE 8 147#define APIC_XRUPT_SOURCE 8
157#define APIC_RESERVED 9 /* 9 and greater are reserved */ 148#define APIC_RESERVED 9 /* 9 and greater are reserved */
158 149
159/* 150/*
160 * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) 151 * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
@@ -163,10 +154,8 @@ struct multiple_apic_table
163 u8 type; \ 154 u8 type; \
164 u8 length; 155 u8 length;
165 156
166struct apic_header 157struct apic_header {
167{ 158APIC_HEADER_DEF};
168 APIC_HEADER_DEF
169};
170 159
171/* Values for MPS INTI flags */ 160/* Values for MPS INTI flags */
172 161
@@ -180,117 +169,90 @@ struct apic_header
180#define TRIGGER_RESERVED 2 169#define TRIGGER_RESERVED 2
181#define TRIGGER_LEVEL 3 170#define TRIGGER_LEVEL 3
182 171
183/* Common flag definitions */ 172/* Common flag definitions (16 bits each) */
184 173
185#define MPS_INTI_FLAGS \ 174#define MPS_INTI_FLAGS \
186 u16 polarity : 2; /* Polarity of APIC I/O input signals */\ 175 u8 polarity : 2; /* 00-01: Polarity of APIC I/O input signals */\
187 u16 trigger_mode : 2; /* Trigger mode of APIC input signals */\ 176 u8 trigger_mode : 2; /* 02-03: Trigger mode of APIC input signals */\
188 u16 reserved1 : 12; /* Reserved, must be zero */ 177 u8 : 4; /* 04-07: Reserved, must be zero */\
178 u8 reserved1; /* 08-15: Reserved, must be zero */
189 179
190#define LOCAL_APIC_FLAGS \ 180#define LOCAL_APIC_FLAGS \
191 u32 processor_enabled: 1; /* Processor is usable if set */\ 181 u8 processor_enabled: 1; /* 00: Processor is usable if set */\
192 u32 reserved2 : 31; /* Reserved, must be zero */ 182 u8 : 7; /* 01-07: Reserved, must be zero */\
183 u8 reserved2; /* 08-15: Reserved, must be zero */
193 184
194/* Sub-structures for MADT */ 185/* Sub-structures for MADT */
195 186
196struct madt_processor_apic 187struct madt_processor_apic {
197{ 188 APIC_HEADER_DEF u8 processor_id; /* ACPI processor id */
198 APIC_HEADER_DEF 189 u8 local_apic_id; /* Processor's local APIC id */
199 u8 processor_id; /* ACPI processor id */ 190 LOCAL_APIC_FLAGS};
200 u8 local_apic_id; /* Processor's local APIC id */ 191
201 LOCAL_APIC_FLAGS 192struct madt_io_apic {
202}; 193 APIC_HEADER_DEF u8 io_apic_id; /* I/O APIC ID */
203 194 u8 reserved; /* Reserved - must be zero */
204struct madt_io_apic 195 u32 address; /* APIC physical address */
205{ 196 u32 interrupt; /* Global system interrupt where INTI
206 APIC_HEADER_DEF 197 * lines start */
207 u8 io_apic_id; /* I/O APIC ID */
208 u8 reserved; /* Reserved - must be zero */
209 u32 address; /* APIC physical address */
210 u32 interrupt; /* Global system interrupt where INTI
211 * lines start */
212}; 198};
213 199
214struct madt_interrupt_override 200struct madt_interrupt_override {
215{ 201 APIC_HEADER_DEF u8 bus; /* 0 - ISA */
216 APIC_HEADER_DEF 202 u8 source; /* Interrupt source (IRQ) */
217 u8 bus; /* 0 - ISA */ 203 u32 interrupt; /* Global system interrupt */
218 u8 source; /* Interrupt source (IRQ) */ 204 MPS_INTI_FLAGS};
219 u32 interrupt; /* Global system interrupt */
220 MPS_INTI_FLAGS
221};
222 205
223struct madt_nmi_source 206struct madt_nmi_source {
224{ 207 APIC_HEADER_DEF MPS_INTI_FLAGS u32 interrupt; /* Global system interrupt */
225 APIC_HEADER_DEF
226 MPS_INTI_FLAGS
227 u32 interrupt; /* Global system interrupt */
228}; 208};
229 209
230struct madt_local_apic_nmi 210struct madt_local_apic_nmi {
231{ 211 APIC_HEADER_DEF u8 processor_id; /* ACPI processor id */
232 APIC_HEADER_DEF 212 MPS_INTI_FLAGS u8 lint; /* LINTn to which NMI is connected */
233 u8 processor_id; /* ACPI processor id */
234 MPS_INTI_FLAGS
235 u8 lint; /* LINTn to which NMI is connected */
236}; 213};
237 214
238struct madt_address_override 215struct madt_address_override {
239{ 216 APIC_HEADER_DEF u16 reserved; /* Reserved, must be zero */
240 APIC_HEADER_DEF 217 u64 address; /* APIC physical address */
241 u16 reserved; /* Reserved - must be zero */
242 u64 address; /* APIC physical address */
243}; 218};
244 219
245struct madt_io_sapic 220struct madt_io_sapic {
246{ 221 APIC_HEADER_DEF u8 io_sapic_id; /* I/O SAPIC ID */
247 APIC_HEADER_DEF 222 u8 reserved; /* Reserved, must be zero */
248 u8 io_sapic_id; /* I/O SAPIC ID */ 223 u32 interrupt_base; /* Glocal interrupt for SAPIC start */
249 u8 reserved; /* Reserved - must be zero */ 224 u64 address; /* SAPIC physical address */
250 u32 interrupt_base; /* Glocal interrupt for SAPIC start */
251 u64 address; /* SAPIC physical address */
252}; 225};
253 226
254struct madt_local_sapic 227struct madt_local_sapic {
255{ 228 APIC_HEADER_DEF u8 processor_id; /* ACPI processor id */
256 APIC_HEADER_DEF 229 u8 local_sapic_id; /* SAPIC ID */
257 u8 processor_id; /* ACPI processor id */ 230 u8 local_sapic_eid; /* SAPIC EID */
258 u8 local_sapic_id; /* SAPIC ID */ 231 u8 reserved[3]; /* Reserved, must be zero */
259 u8 local_sapic_eid; /* SAPIC EID */ 232 LOCAL_APIC_FLAGS u32 processor_uID; /* Numeric UID - ACPI 3.0 */
260 u8 reserved [3]; /* Reserved - must be zero */ 233 char processor_uIDstring[1]; /* String UID - ACPI 3.0 */
261 LOCAL_APIC_FLAGS
262 u32 processor_uID; /* Numeric UID - ACPI 3.0 */
263 char processor_uIDstring[1]; /* String UID - ACPI 3.0 */
264}; 234};
265 235
266struct madt_interrupt_source 236struct madt_interrupt_source {
267{ 237 APIC_HEADER_DEF MPS_INTI_FLAGS u8 interrupt_type; /* 1=PMI, 2=INIT, 3=corrected */
268 APIC_HEADER_DEF 238 u8 processor_id; /* Processor ID */
269 MPS_INTI_FLAGS 239 u8 processor_eid; /* Processor EID */
270 u8 interrupt_type; /* 1=PMI, 2=INIT, 3=corrected */ 240 u8 io_sapic_vector; /* Vector value for PMI interrupts */
271 u8 processor_id; /* Processor ID */ 241 u32 interrupt; /* Global system interrupt */
272 u8 processor_eid; /* Processor EID */ 242 u32 flags; /* Interrupt Source Flags */
273 u8 io_sapic_vector; /* Vector value for PMI interrupts */
274 u32 interrupt; /* Global system interrupt */
275 u32 flags; /* Interrupt Source Flags */
276}; 243};
277 244
278
279/* 245/*
280 * Smart Battery 246 * Smart Battery
281 */ 247 */
282struct smart_battery_table 248struct smart_battery_table {
283{ 249 ACPI_TABLE_HEADER_DEF u32 warning_level;
284 ACPI_TABLE_HEADER_DEF 250 u32 low_level;
285 u32 warning_level; 251 u32 critical_level;
286 u32 low_level;
287 u32 critical_level;
288}; 252};
289 253
290
291#pragma pack() 254#pragma pack()
292 255
293
294/* 256/*
295 * ACPI Table information. We save the table address, length, 257 * ACPI Table information. We save the table address, length,
296 * and type of memory allocation (mapped or allocated) for each 258 * and type of memory allocation (mapped or allocated) for each
@@ -314,39 +276,35 @@ struct smart_battery_table
314 276
315/* Data about each known table type */ 277/* Data about each known table type */
316 278
317struct acpi_table_support 279struct acpi_table_support {
318{ 280 char *name;
319 char *name; 281 char *signature;
320 char *signature; 282 void **global_ptr;
321 void **global_ptr; 283 u8 sig_length;
322 u8 sig_length; 284 u8 flags;
323 u8 flags;
324}; 285};
325 286
326
327/* 287/*
328 * Get the ACPI version-specific tables 288 * Get the ACPI version-specific tables
329 */ 289 */
330#include "actbl1.h" /* Acpi 1.0 table definitions */ 290#include "actbl1.h" /* Acpi 1.0 table definitions */
331#include "actbl2.h" /* Acpi 2.0 table definitions */ 291#include "actbl2.h" /* Acpi 2.0 table definitions */
332 292
333extern u8 acpi_fadt_is_v1; /* is set to 1 if FADT is revision 1, 293extern u8 acpi_fadt_is_v1; /* is set to 1 if FADT is revision 1,
334 * needed for certain workarounds */ 294 * needed for certain workarounds */
335 295
336#pragma pack(1) 296#pragma pack(1)
337/* 297/*
338 * High performance timer 298 * High performance timer
339 */ 299 */
340struct hpet_table 300struct hpet_table {
341{ 301 ACPI_TABLE_HEADER_DEF u32 hardware_id;
342 ACPI_TABLE_HEADER_DEF 302 struct acpi_generic_address base_address;
343 u32 hardware_id; 303 u8 hpet_number;
344 struct acpi_generic_address base_address; 304 u16 clock_tick;
345 u8 hpet_number; 305 u8 attributes;
346 u16 clock_tick;
347 u8 attributes;
348}; 306};
349 307
350#pragma pack() 308#pragma pack()
351 309
352#endif /* __ACTBL_H__ */ 310#endif /* __ACTBL_H__ */