1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef _DEV_ACPI_ACPIREG_H_
20 #define _DEV_ACPI_ACPIREG_H_
21
22
23 struct acpi_rsdp1 {
24 u_int8_t signature[8];
25 #define RSDP_SIG "RSD PTR "
26 #define rsdp_signaturee rsdp1.signature
27 u_int8_t checksum;
28 #define rsdp_checksum rsdp1.checksum
29 u_int8_t oemid[6];
30 #define rsdp_oemid rsdp1.oemid
31 u_int8_t revision;
32 #define rsdp_revision rsdp1.revision
33 u_int32_t rsdt;
34 #define rsdp_rsdt rsdp1.rsdt
35 } __packed;
36
37 struct acpi_rsdp {
38 struct acpi_rsdp1 rsdp1;
39
40
41
42
43 u_int32_t rsdp_length;
44 u_int64_t rsdp_xsdt;
45 u_int8_t rsdp_extchecksum;
46 u_int8_t rsdp_reserved[3];
47 } __packed;
48
49 struct acpi_table_header {
50 u_int8_t signature[4];
51 #define hdr_signature hdr.signature
52 u_int32_t length;
53 #define hdr_length hdr.length
54 u_int8_t revision;
55 #define hdr_revision hdr.revision
56 u_int8_t checksum;
57 #define hdr_checksum hdr.checksum
58 u_int8_t oemid[6];
59 #define hdr_oemid hdr.oemid
60 u_int8_t oemtableid[8];
61 #define hdr_oemtableid hdr.oemtableid
62 u_int32_t oemrevision;
63 #define hdr_oemrevision hdr.oemrevision
64 u_int8_t aslcompilerid[4];
65 #define hdr_aslcompilerid hdr.aslcompilerid
66 u_int32_t aslcompilerrevision;
67 #define hdr_aslcompilerrevision hdr.aslcompilerrevision
68 } __packed;
69
70 struct acpi_rsdt {
71 struct acpi_table_header hdr;
72 #define RSDT_SIG "RSDT"
73 u_int32_t table_offsets[1];
74 } __packed;
75
76 struct acpi_xsdt {
77 struct acpi_table_header hdr;
78 #define XSDT_SIG "XSDT"
79 u_int64_t table_offsets[1];
80 } __packed;
81
82 struct acpi_gas {
83 u_int8_t address_space_id;
84 #define GAS_SYSTEM_MEMORY 0
85 #define GAS_SYSTEM_IOSPACE 1
86 #define GAS_PCI_CFG_SPACE 2
87 #define GAS_EMBEDDED 3
88 #define GAS_SMBUS 4
89 #define GAS_FUNCTIONAL_FIXED 127
90 u_int8_t register_bit_width;
91 u_int8_t register_bit_offset;
92 u_int8_t access_size;
93 #define GAS_ACCESS_UNDEFINED 0
94 #define GAS_ACCESS_BYTE 1
95 #define GAS_ACCESS_WORD 2
96 #define GAS_ACCESS_DWORD 3
97 #define GAS_ACCESS_QWORD 4
98 u_int64_t address;
99 } __packed;
100
101 struct acpi_fadt {
102 struct acpi_table_header hdr;
103 #define FADT_SIG "FACP"
104 u_int32_t firmware_ctl;
105 u_int32_t dsdt;
106 u_int8_t int_model;
107 #define FADT_INT_DUAL_PIC 0
108 #define FADT_INT_MULTI_APIC 1
109 u_int8_t pm_profile;
110 #define FADT_PM_UNSPEC 0
111 #define FADT_PM_DESKTOP 1
112 #define FADT_PM_MOBILE 2
113 #define FADT_PM_WORKSTATION 3
114 #define FADT_PM_ENT_SERVER 4
115 #define FADT_PM_SOHO_SERVER 5
116 #define FADT_PM_APPLIANCE 6
117 #define FADT_PM_PERF_SERVER 7
118 u_int16_t sci_int;
119 u_int32_t smi_cmd;
120 u_int8_t acpi_enable;
121 u_int8_t acpi_disable;
122 u_int8_t s4bios_req;
123 u_int8_t pstate_cnt;
124 u_int32_t pm1a_evt_blk;
125 u_int32_t pm1b_evt_blk;
126 u_int32_t pm1a_cnt_blk;
127 u_int32_t pm1b_cnt_blk;
128 u_int32_t pm2_cnt_blk;
129 u_int32_t pm_tmr_blk;
130 u_int32_t gpe0_blk;
131 u_int32_t gpe1_blk;
132 u_int8_t pm1_evt_len;
133 u_int8_t pm1_cnt_len;
134 u_int8_t pm2_cnt_len;
135 u_int8_t pm_tmr_len;
136 u_int8_t gpe0_blk_len;
137 u_int8_t gpe1_blk_len;
138 u_int8_t gpe1_base;
139 u_int8_t cst_cnt;
140 u_int16_t p_lvl2_lat;
141 u_int16_t p_lvl3_lat;
142 u_int16_t flush_size;
143 u_int16_t flush_stride;
144 u_int8_t duty_offset;
145 u_int8_t duty_width;
146 u_int8_t day_alrm;
147 u_int8_t mon_alrm;
148 u_int8_t century;
149 u_int16_t iapc_boot_arch;
150 #define FADT_LEGACY_DEVICES 0x0001
151 #define FADT_i8042 0x0002
152 #define FADT_NO_VGA 0x0004
153 u_int8_t reserved1;
154 u_int32_t flags;
155 #define FADT_WBINVD 0x00000001
156 #define FADT_WBINVD_FLUSH 0x00000002
157 #define FADT_PROC_C1 0x00000004
158 #define FADT_P_LVL2_UP 0x00000008
159 #define FADT_PWR_BUTTON 0x00000010
160 #define FADT_SLP_BUTTON 0x00000020
161 #define FADT_FIX_RTC 0x00000040
162 #define FADT_RTC_S4 0x00000080
163 #define FADT_TMR_VAL_EXT 0x00000100
164 #define FADT_DCK_CAP 0x00000200
165 #define FADT_RESET_REG_SUP 0x00000400
166 #define FADT_SEALED_CASE 0x00000800
167 #define FADT_HEADLESS 0x00001000
168 #define FADT_CPU_SW_SLP 0x00002000
169 #define FADT_PCI_EXP_WAK 0x00004000
170 #define FADT_USE_PLATFORM_CLOCK 0x00008000
171 #define FADT_S4_RTC_STS_VALID 0x00010000
172 #define FADT_REMOTE_POWER_ON_CAPABLE 0x00020000
173 #define FADT_FORCE_APIC_CLUSTER_MODEL 0x00040000
174 #define FADT_FORCE_APIC_PHYS_DEST_MODE 0x00080000
175
176
177
178
179
180
181 struct acpi_gas reset_reg;
182 u_int8_t reset_value;
183 u_int8_t reserved2a;
184 u_int8_t reserved2b;
185 u_int8_t reserved2c;
186 u_int64_t x_firmware_ctl;
187 u_int64_t x_dsdt;
188 struct acpi_gas x_pm1a_evt_blk;
189 struct acpi_gas x_pm1b_evt_blk;
190 struct acpi_gas x_pm1a_cnt_blk;
191 struct acpi_gas x_pm1b_cnt_blk;
192 struct acpi_gas x_pm2_cnt_blk;
193 struct acpi_gas x_pm_tmr_blk;
194 struct acpi_gas x_gpe0_blk;
195 struct acpi_gas x_gpe1_blk;
196 } __packed;
197
198 struct acpi_dsdt {
199 struct acpi_table_header hdr;
200 #define DSDT_SIG "DSDT"
201 u_int8_t aml[1];
202 } __packed;
203
204 struct acpi_ssdt {
205 struct acpi_table_header hdr;
206 #define SSDT_SIG "SSDT"
207 u_int8_t aml[1];
208 } __packed;
209
210
211
212
213 struct acpi_psdt {
214 struct acpi_table_header hdr;
215 #define PSDT_SIG "PSDT"
216 } __packed;
217
218 struct acpi_madt {
219 struct acpi_table_header hdr;
220 #define MADT_SIG "APIC"
221 u_int32_t local_apic_address;
222 u_int32_t flags;
223 #define ACPI_APIC_PCAT_COMPAT 0x00000001
224 } __packed;
225
226 struct acpi_madt_lapic {
227 u_int8_t apic_type;
228 #define ACPI_MADT_LAPIC 0
229 u_int8_t length;
230 u_int8_t acpi_proc_id;
231 u_int8_t apic_id;
232 u_int32_t flags;
233 #define ACPI_PROC_ENABLE 0x00000001
234 } __packed;
235
236 struct acpi_madt_ioapic {
237 u_int8_t apic_type;
238 #define ACPI_MADT_IOAPIC 1
239 u_int8_t length;
240 u_int8_t acpi_ioapic_id;
241 u_int8_t reserved;
242 u_int32_t address;
243 u_int32_t global_int_base;
244 } __packed;
245
246 struct acpi_madt_override {
247 u_int8_t apic_type;
248 #define ACPI_MADT_OVERRIDE 2
249 u_int8_t length;
250 u_int8_t bus;
251 #define ACPI_OVERRIDE_BUS_ISA 0
252 u_int8_t source;
253 u_int32_t global_int;
254 u_int16_t flags;
255 #define ACPI_OVERRIDE_POLARITY_BITS 0x3
256 #define ACPI_OVERRIDE_POLARITY_BUS 0x0
257 #define ACPI_OVERRIDE_POLARITY_HIGH 0x1
258 #define ACPI_OVERRIDE_POLARITY_LOW 0x3
259 #define ACPI_OVERRIDE_TRIGGER_BITS 0xc
260 #define ACPI_OVERRIDE_TRIGGER_BUS 0x0
261 #define ACPI_OVERRIDE_TRIGGER_EDGE 0x4
262 #define ACPI_OVERRIDE_TRIGGER_LEVEL 0xc
263 } __packed;
264
265 struct acpi_madt_nmi {
266 u_int8_t apic_type;
267 #define ACPI_MADT_NMI 3
268 u_int8_t length;
269 u_int16_t flags;
270 u_int32_t global_int;
271 } __packed;
272
273 struct acpi_madt_lapic_nmi {
274 u_int8_t apic_type;
275 #define ACPI_MADT_LAPIC_NMI 4
276 u_int8_t length;
277 u_int8_t acpi_proc_id;
278 u_int16_t flags;
279 u_int8_t local_apic_lint;
280 } __packed;
281
282 struct acpi_madt_lapic_override {
283 u_int8_t apic_type;
284 #define ACPI_MADT_LAPIC_OVERRIDE 5
285 u_int8_t length;
286 u_int16_t reserved;
287 u_int64_t lapic_address;
288 } __packed;
289
290 struct acpi_madt_io_sapic {
291 u_int8_t apic_type;
292 #define ACPI_MADT_IO_SAPIC 6
293 u_int8_t length;
294 u_int8_t iosapic_id;
295 u_int8_t reserved;
296 u_int32_t global_int_base;
297 u_int64_t iosapic_address;
298 } __packed;
299
300 struct acpi_madt_local_sapic {
301 u_int8_t apic_type;
302 #define ACPI_MADT_LOCAL_SAPIC 7
303 u_int8_t length;
304 u_int8_t acpi_proc_id;
305 u_int8_t local_sapic_id;
306 u_int8_t local_sapic_eid;
307 u_int8_t reserved[3];
308 u_int32_t flags;
309 u_int32_t acpi_proc_uid;
310 u_int8_t acpi_proc_uid_string[1];
311 } __packed;
312
313 struct acpi_madt_platform_int {
314 u_int8_t apic_type;
315 #define ACPI_MADT_PLATFORM_INT 8
316 u_int8_t length;
317 u_int16_t flags;
318 u_int8_t int_type;
319 #define ACPI_MADT_PLATFORM_PMI 1
320 #define ACPI_MADT_PLATFORM_INIT 2
321 #define ACPI_MADT_PLATFORM_CORR_ERROR 3
322 u_int8_t proc_id;
323 u_int8_t proc_eid;
324 u_int8_t io_sapic_vec;
325 u_int32_t global_int;
326 u_int32_t platform_int_flags;
327 #define ACPI_MADT_PLATFORM_CPEI 0x00000001
328 } __packed;
329
330 union acpi_madt_entry {
331 struct acpi_madt_lapic madt_lapic;
332 struct acpi_madt_ioapic madt_ioapic;
333 struct acpi_madt_override madt_override;
334 struct acpi_madt_nmi madt_nmi;
335 struct acpi_madt_lapic_nmi madt_lapic_nmi;
336 struct acpi_madt_lapic_override madt_lapic_override;
337 struct acpi_madt_io_sapic madt_io_sapic;
338 struct acpi_madt_local_sapic madt_local_sapic;
339 struct acpi_madt_platform_int madt_platform_int;
340 } __packed;
341
342 struct acpi_sbst {
343 struct acpi_table_header hdr;
344 #define SBST_SIG "SBST"
345 u_int32_t warning_energy_level;
346 u_int32_t low_energy_level;
347 u_int32_t critical_energy_level;
348 } __packed;
349
350 struct acpi_ecdt {
351 struct acpi_table_header hdr;
352 #define ECDT_SIG "ECDT"
353 struct acpi_gas ec_control;
354 struct acpi_gas ec_data;
355 u_int32_t uid;
356 u_int8_t gpe_bit;
357 u_int8_t ec_id[1];
358 } __packed;
359
360 struct acpi_srat {
361 struct acpi_table_header hdr;
362 #define SRAT_SIG "SRAT"
363 u_int32_t reserved1;
364 u_int64_t reserved2;
365 } __packed;
366
367 struct acpi_slit {
368 struct acpi_table_header hdr;
369 #define SLIT_SIG "SLIT"
370 u_int64_t number_of_localities;
371 } __packed;
372
373 struct acpi_hpet {
374 struct acpi_table_header hdr;
375 #define HPET_SIG "HPET"
376 u_int32_t event_timer_block_id;
377 struct acpi_gas base_address;
378 u_int8_t hpet_number;
379 u_int16_t main_counter_min_clock_tick;
380 u_int8_t page_protection;
381 } __packed;
382
383 struct acpi_facs {
384 u_int8_t signature[4];
385 #define FACS_SIG "FACS"
386 u_int32_t length;
387 u_int32_t hardware_signature;
388 u_int32_t wakeup_vector;
389 u_int32_t global_lock;
390 #define FACS_LOCK_PENDING 0x00000001
391 #define FACS_LOCK_OWNED 0x00000002
392 u_int32_t flags;
393 #define FACS_S4BIOS_F 0x00000001
394 struct acpi_gas x_wakeup_vector;
395 u_int8_t version;
396 u_int8_t reserved[31];
397 } __packed;
398
399 #define ACPI_FREQUENCY 3579545
400
401
402
403
404 #define ACPI_PCI_BUS(addr) (u_int16_t)((addr) >> 48)
405 #define ACPI_PCI_DEV(addr) (u_int16_t)((addr) >> 32)
406 #define ACPI_PCI_FN(addr) (u_int16_t)((addr) >> 16)
407 #define ACPI_PCI_REG(addr) (u_int16_t)(addr)
408 #define ACPI_PCI_ADDR(b,d,f,r) ((u_int64_t)(b)<<48LL | (u_int64_t)(d)<<32LL | (f)<<16LL | (r))
409
410
411
412
413 #define ACPI_PM1_STATUS 0x00
414 #define ACPI_PM1_TMR_STS 0x0001
415 #define ACPI_PM1_BM_STS 0x0010
416 #define ACPI_PM1_GBL_STS 0x0020
417 #define ACPI_PM1_PWRBTN_STS 0x0100
418 #define ACPI_PM1_SLPBTN_STS 0x0200
419 #define ACPI_PM1_RTC_STS 0x0400
420 #define ACPI_PM1_PCIEXP_WAKE_STS 0x4000
421 #define ACPI_PM1_WAK_STS 0x8000
422
423
424
425
426 #define ACPI_PM1_ENABLE 0x02
427 #define ACPI_PM1_TMR_EN 0x0001
428 #define ACPI_PM1_GBL_EN 0x0020
429 #define ACPI_PM1_PWRBTN_EN 0x0100
430 #define ACPI_PM1_SLPBTN_EN 0x0200
431 #define ACPI_PM1_RTC_EN 0x0400
432 #define ACPI_PM1_PCIEXP_WAKE_DIS 0x4000
433
434
435
436
437 #define ACPI_PM1_CONTROL 0x00
438 #define ACPI_PM1_SCI_EN 0x0001
439 #define ACPI_PM1_BM_RLD 0x0002
440 #define ACPI_PM1_GBL_RLS 0x0004
441 #define ACPI_PM1_SLP_TYPX(x) ((x) << 10)
442 #define ACPI_PM1_SLP_TYPX_MASK 0x1c00
443 #define ACPI_PM1_SLP_EN 0x2000
444
445
446
447
448 #define ACPI_STATE_S0 0
449 #define ACPI_STATE_S1 1
450 #define ACPI_STATE_S2 2
451 #define ACPI_STATE_S3 3
452 #define ACPI_STATE_S4 4
453 #define ACPI_STATE_S5 5
454
455
456
457
458 #define ACPI_DEV_TIM "PNP0100"
459 #define ACPI_DEV_ACPI "PNP0C08"
460 #define ACPI_DEV_PCIB "PNP0A03"
461 #define ACPI_DEV_GISAB "PNP0A05"
462 #define ACPI_DEV_EIOB "PNP0A06"
463 #define ACPI_DEV_MR "PNP0C02"
464 #define ACPI_DEV_NPROC "PNP0C04"
465 #define ACPI_DEV_CS "PNP0C08"
466 #define ACPI_DEV_ECD "PNP0C09"
467 #define ACPI_DEV_CMB "PNP0C0A"
468 #define ACPI_DEV_FAN "PNP0C0B"
469 #define ACPI_DEV_PBD "PNP0C0C"
470 #define ACPI_DEV_LD "PNP0C0D"
471 #define ACPI_DEV_SBD "PNP0C0E"
472 #define ACPI_DEV_PILD "PNP0C0F"
473 #define ACPI_DEV_MEMD "PNP0C80"
474 #define ACPI_DEV_SHC "ACPI0001"
475 #define ACPI_DEV_SMS1 "ACPI0002"
476 #define ACPI_DEV_AC "ACPI0003"
477 #define ACPI_DEV_MD "ACPI0004"
478 #define ACPI_DEV_SMS2 "ACPI0005"
479 #define ACPI_DEV_GBD "ACPI0006"
480 #define ACPI_DEV_PD "ACPI0007"
481 #define ACPI_DEV_ALSD "ACPI0008"
482 #define ACPI_DEV_IOXA "ACPI0009"
483 #define ACPI_DEV_IOA "ACPI000A"
484 #define ACPI_DEV_IOSA "ACPI000B"
485 #define ACPI_DEV_THZ "THERMALZONE"
486 #define ACPI_DEV_FFB "FIXEDBUTTON"
487
488 #endif