1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44#ifndef __ACLOCAL_H__
45#define __ACLOCAL_H__
46
47
48
49#define ACPI_WAIT_FOREVER 0xFFFF
50#define ACPI_DO_NOT_WAIT 0
51#define ACPI_SERIALIZED 0xFF
52
53typedef u32 acpi_mutex_handle;
54#define ACPI_GLOBAL_LOCK (acpi_semaphore) (-1)
55
56
57
58#define AML_NUM_OPCODES 0x7F
59
60
61
62struct acpi_walk_state;
63struct acpi_obj_mutex;
64union acpi_parse_object;
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82#define ACPI_MTX_INTERPRETER 0
83#define ACPI_MTX_NAMESPACE 1
84#define ACPI_MTX_TABLES 2
85#define ACPI_MTX_EVENTS 3
86#define ACPI_MTX_CACHES 4
87#define ACPI_MTX_MEMORY 5
88#define ACPI_MTX_DEBUG_CMD_COMPLETE 6
89#define ACPI_MTX_DEBUG_CMD_READY 7
90
91#define ACPI_MAX_MUTEX 7
92#define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1
93
94#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
95#ifdef DEFINE_ACPI_GLOBALS
96
97
98
99static char *acpi_gbl_mutex_names[ACPI_NUM_MUTEX] = {
100 "ACPI_MTX_Interpreter",
101 "ACPI_MTX_Namespace",
102 "ACPI_MTX_Tables",
103 "ACPI_MTX_Events",
104 "ACPI_MTX_Caches",
105 "ACPI_MTX_Memory",
106 "ACPI_MTX_CommandComplete",
107 "ACPI_MTX_CommandReady"
108};
109
110#endif
111#endif
112
113
114
115
116
117#define ACPI_LOCK_GPES 0
118#define ACPI_LOCK_HARDWARE 1
119
120#define ACPI_MAX_LOCK 1
121#define ACPI_NUM_LOCK ACPI_MAX_LOCK+1
122
123
124
125typedef u8 acpi_owner_id;
126#define ACPI_OWNER_ID_MAX 0xFF
127
128
129
130#define ACPI_MUTEX_NOT_ACQUIRED (acpi_thread_id) 0
131
132
133
134struct acpi_mutex_info {
135 acpi_mutex mutex;
136 u32 use_count;
137 acpi_thread_id thread_id;
138};
139
140
141
142#define ACPI_MTX_DO_NOT_LOCK 0
143#define ACPI_MTX_LOCK 1
144
145
146
147#define ACPI_FIELD_BYTE_GRANULARITY 1
148#define ACPI_FIELD_WORD_GRANULARITY 2
149#define ACPI_FIELD_DWORD_GRANULARITY 4
150#define ACPI_FIELD_QWORD_GRANULARITY 8
151
152#define ACPI_ENTRY_NOT_FOUND NULL
153
154
155
156
157
158
159
160
161
162typedef enum {
163 ACPI_IMODE_LOAD_PASS1 = 0x01,
164 ACPI_IMODE_LOAD_PASS2 = 0x02,
165 ACPI_IMODE_EXECUTE = 0x03
166} acpi_interpreter_mode;
167
168union acpi_name_union {
169 u32 integer;
170 char ascii[4];
171};
172
173
174
175
176
177
178
179
180
181
182
183
184struct acpi_namespace_node {
185 union acpi_operand_object *object;
186 u8 descriptor_type;
187 u8 type;
188 u8 flags;
189 acpi_owner_id owner_id;
190 union acpi_name_union name;
191 struct acpi_namespace_node *child;
192 struct acpi_namespace_node *peer;
193
194
195
196
197#ifdef ACPI_LARGE_NAMESPACE_NODE
198 union acpi_parse_object *op;
199 u32 value;
200 u32 length;
201#endif
202};
203
204
205
206#define ANOBJ_END_OF_PEER_LIST 0x01
207#define ANOBJ_TEMPORARY 0x02
208#define ANOBJ_METHOD_ARG 0x04
209#define ANOBJ_METHOD_LOCAL 0x08
210#define ANOBJ_SUBTREE_HAS_INI 0x10
211#define ANOBJ_EVALUATED 0x20
212
213#define ANOBJ_IS_EXTERNAL 0x08
214#define ANOBJ_METHOD_NO_RETVAL 0x10
215#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20
216#define ANOBJ_IS_BIT_OFFSET 0x40
217#define ANOBJ_IS_REFERENCED 0x80
218
219
220
221
222struct acpi_table_desc {
223 acpi_physical_address address;
224 struct acpi_table_header *pointer;
225 u32 length;
226 union acpi_name_union signature;
227 acpi_owner_id owner_id;
228 u8 flags;
229};
230
231
232
233#define ACPI_TABLE_ORIGIN_UNKNOWN (0)
234#define ACPI_TABLE_ORIGIN_MAPPED (1)
235#define ACPI_TABLE_ORIGIN_ALLOCATED (2)
236#define ACPI_TABLE_ORIGIN_MASK (3)
237#define ACPI_TABLE_IS_LOADED (4)
238
239
240
241struct acpi_internal_rsdt {
242 struct acpi_table_desc *tables;
243 u32 count;
244 u32 size;
245 u8 flags;
246};
247
248
249
250#define ACPI_ROOT_ORIGIN_UNKNOWN (0)
251#define ACPI_ROOT_ORIGIN_ALLOCATED (1)
252#define ACPI_ROOT_ALLOW_RESIZE (2)
253
254
255
256#define ACPI_TABLE_INDEX_DSDT (0)
257#define ACPI_TABLE_INDEX_FACS (1)
258
259struct acpi_find_context {
260 char *search_for;
261 acpi_handle *list;
262 u32 *count;
263};
264
265struct acpi_ns_search_data {
266 struct acpi_namespace_node *node;
267};
268
269
270
271
272struct acpi_predefined_names {
273 char *name;
274 u8 type;
275 char *val;
276};
277
278
279
280#define ACPI_COPY_TYPE_SIMPLE 0
281#define ACPI_COPY_TYPE_PACKAGE 1
282
283
284
285struct acpi_namestring_info {
286 const char *external_name;
287 const char *next_external_char;
288 char *internal_name;
289 u32 length;
290 u32 num_segments;
291 u32 num_carats;
292 u8 fully_qualified;
293};
294
295
296
297struct acpi_create_field_info {
298 struct acpi_namespace_node *region_node;
299 struct acpi_namespace_node *field_node;
300 struct acpi_namespace_node *register_node;
301 struct acpi_namespace_node *data_register_node;
302 u32 bank_value;
303 u32 field_bit_position;
304 u32 field_bit_length;
305 u8 field_flags;
306 u8 attribute;
307 u8 field_type;
308};
309
310typedef
311acpi_status(*ACPI_INTERNAL_METHOD) (struct acpi_walk_state * walk_state);
312
313
314
315
316#define ACPI_BTYPE_ANY 0x00000000
317#define ACPI_BTYPE_INTEGER 0x00000001
318#define ACPI_BTYPE_STRING 0x00000002
319#define ACPI_BTYPE_BUFFER 0x00000004
320#define ACPI_BTYPE_PACKAGE 0x00000008
321#define ACPI_BTYPE_FIELD_UNIT 0x00000010
322#define ACPI_BTYPE_DEVICE 0x00000020
323#define ACPI_BTYPE_EVENT 0x00000040
324#define ACPI_BTYPE_METHOD 0x00000080
325#define ACPI_BTYPE_MUTEX 0x00000100
326#define ACPI_BTYPE_REGION 0x00000200
327#define ACPI_BTYPE_POWER 0x00000400
328#define ACPI_BTYPE_PROCESSOR 0x00000800
329#define ACPI_BTYPE_THERMAL 0x00001000
330#define ACPI_BTYPE_BUFFER_FIELD 0x00002000
331#define ACPI_BTYPE_DDB_HANDLE 0x00004000
332#define ACPI_BTYPE_DEBUG_OBJECT 0x00008000
333#define ACPI_BTYPE_REFERENCE 0x00010000
334#define ACPI_BTYPE_RESOURCE 0x00020000
335
336#define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
337
338#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE)
339#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
340#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
341#define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF
342#define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF
343
344
345
346
347
348
349
350
351
352struct acpi_name_info {
353 char name[ACPI_NAME_SIZE];
354 u8 param_count;
355 u8 expected_btypes;
356};
357
358
359
360
361
362
363
364
365
366
367
368
369
370struct acpi_package_info {
371 u8 type;
372 u8 object_type1;
373 u8 count1;
374 u8 object_type2;
375 u8 count2;
376 u8 reserved;
377};
378
379
380
381struct acpi_package_info2 {
382 u8 type;
383 u8 count;
384 u8 object_type[4];
385};
386
387
388
389struct acpi_package_info3 {
390 u8 type;
391 u8 count;
392 u8 object_type[2];
393 u8 tail_object_type;
394 u8 reserved;
395};
396
397union acpi_predefined_info {
398 struct acpi_name_info info;
399 struct acpi_package_info ret_info;
400 struct acpi_package_info2 ret_info2;
401 struct acpi_package_info3 ret_info3;
402};
403
404
405
406
407
408
409#define ACPI_RTYPE_ANY 0x00
410#define ACPI_RTYPE_NONE 0x01
411#define ACPI_RTYPE_INTEGER 0x02
412#define ACPI_RTYPE_STRING 0x04
413#define ACPI_RTYPE_BUFFER 0x08
414#define ACPI_RTYPE_PACKAGE 0x10
415#define ACPI_RTYPE_REFERENCE 0x20
416#define ACPI_RTYPE_ALL 0x3F
417
418#define ACPI_NUM_RTYPES 5
419
420
421
422
423
424
425
426
427
428struct acpi_handler_info {
429 acpi_event_handler address;
430 void *context;
431 struct acpi_namespace_node *method_node;
432};
433
434union acpi_gpe_dispatch_info {
435 struct acpi_namespace_node *method_node;
436 struct acpi_handler_info *handler;
437};
438
439
440
441
442
443struct acpi_gpe_event_info {
444 union acpi_gpe_dispatch_info dispatch;
445 struct acpi_gpe_register_info *register_info;
446 u8 flags;
447 u8 gpe_number;
448};
449
450
451
452struct acpi_gpe_register_info {
453 struct acpi_generic_address status_address;
454 struct acpi_generic_address enable_address;
455 u8 enable_for_wake;
456 u8 enable_for_run;
457 u8 base_gpe_number;
458};
459
460
461
462
463
464struct acpi_gpe_block_info {
465 struct acpi_namespace_node *node;
466 struct acpi_gpe_block_info *previous;
467 struct acpi_gpe_block_info *next;
468 struct acpi_gpe_xrupt_info *xrupt_block;
469 struct acpi_gpe_register_info *register_info;
470 struct acpi_gpe_event_info *event_info;
471 struct acpi_generic_address block_address;
472 u32 register_count;
473 u8 block_base_number;
474};
475
476
477
478struct acpi_gpe_xrupt_info {
479 struct acpi_gpe_xrupt_info *previous;
480 struct acpi_gpe_xrupt_info *next;
481 struct acpi_gpe_block_info *gpe_block_list_head;
482 u32 interrupt_number;
483};
484
485struct acpi_gpe_walk_info {
486 struct acpi_namespace_node *gpe_device;
487 struct acpi_gpe_block_info *gpe_block;
488};
489
490typedef acpi_status(*acpi_gpe_callback) (struct acpi_gpe_xrupt_info *
491 gpe_xrupt_info,
492 struct acpi_gpe_block_info *
493 gpe_block);
494
495
496
497struct acpi_fixed_event_handler {
498 acpi_event_handler handler;
499 void *context;
500};
501
502struct acpi_fixed_event_info {
503 u8 status_register_id;
504 u8 enable_register_id;
505 u16 status_bit_mask;
506 u16 enable_bit_mask;
507};
508
509
510
511struct acpi_field_info {
512 u8 skip_field;
513 u8 field_flag;
514 u32 pkg_length;
515};
516
517
518
519
520
521
522
523#define ACPI_CONTROL_NORMAL 0xC0
524#define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1
525#define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2
526#define ACPI_CONTROL_PREDICATE_FALSE 0xC3
527#define ACPI_CONTROL_PREDICATE_TRUE 0xC4
528
529#define ACPI_STATE_COMMON \
530 void *next; \
531 u8 descriptor_type; \
532 u8 flags; \
533 u16 value; \
534 u16 state;
535
536
537
538struct acpi_common_state {
539ACPI_STATE_COMMON};
540
541
542
543
544struct acpi_update_state {
545 ACPI_STATE_COMMON union acpi_operand_object *object;
546};
547
548
549
550
551struct acpi_pkg_state {
552 ACPI_STATE_COMMON u16 index;
553 union acpi_operand_object *source_object;
554 union acpi_operand_object *dest_object;
555 struct acpi_walk_state *walk_state;
556 void *this_target_obj;
557 u32 num_packages;
558};
559
560
561
562
563
564struct acpi_control_state {
565 ACPI_STATE_COMMON u16 opcode;
566 union acpi_parse_object *predicate_op;
567 u8 *aml_predicate_start;
568 u8 *package_end;
569};
570
571
572
573
574struct acpi_scope_state {
575 ACPI_STATE_COMMON struct acpi_namespace_node *node;
576};
577
578struct acpi_pscope_state {
579 ACPI_STATE_COMMON u32 arg_count;
580 union acpi_parse_object *op;
581 u8 *arg_end;
582 u8 *pkg_end;
583 u32 arg_list;
584};
585
586
587
588
589
590struct acpi_thread_state {
591 ACPI_STATE_COMMON u8 current_sync_level;
592 struct acpi_walk_state *walk_state_list;
593 union acpi_operand_object *acquired_mutex_list;
594 acpi_thread_id thread_id;
595};
596
597
598
599
600
601struct acpi_result_values {
602 ACPI_STATE_COMMON
603 union acpi_operand_object *obj_desc[ACPI_RESULTS_FRAME_OBJ_NUM];
604};
605
606typedef
607acpi_status(*acpi_parse_downwards) (struct acpi_walk_state * walk_state,
608 union acpi_parse_object ** out_op);
609
610typedef acpi_status(*acpi_parse_upwards) (struct acpi_walk_state * walk_state);
611
612
613
614
615
616struct acpi_notify_info {
617 ACPI_STATE_COMMON struct acpi_namespace_node *node;
618 union acpi_operand_object *handler_obj;
619};
620
621
622
623union acpi_generic_state {
624 struct acpi_common_state common;
625 struct acpi_control_state control;
626 struct acpi_update_state update;
627 struct acpi_scope_state scope;
628 struct acpi_pscope_state parse_scope;
629 struct acpi_pkg_state pkg;
630 struct acpi_thread_state thread;
631 struct acpi_result_values results;
632 struct acpi_notify_info notify;
633};
634
635
636
637
638
639
640
641typedef acpi_status(*ACPI_EXECUTE_OP) (struct acpi_walk_state * walk_state);
642
643
644
645
646
647
648
649
650
651
652struct acpi_opcode_info {
653#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
654 char *name;
655#endif
656 u32 parse_args;
657 u32 runtime_args;
658 u16 flags;
659 u8 object_type;
660 u8 class;
661 u8 type;
662};
663
664union acpi_parse_value {
665 acpi_integer integer;
666 struct uint64_struct integer64;
667 u32 size;
668 char *string;
669 u8 *buffer;
670 char *name;
671 union acpi_parse_object *arg;
672};
673
674#define ACPI_PARSE_COMMON \
675 union acpi_parse_object *parent; \
676 u8 descriptor_type; \
677 u8 flags; \
678 u16 aml_opcode; \
679 u32 aml_offset; \
680 union acpi_parse_object *next; \
681 struct acpi_namespace_node *node; \
682 union acpi_parse_value value; \
683 u8 arg_list_length; \
684 ACPI_DISASM_ONLY_MEMBERS (\
685 u8 disasm_flags; \
686 u8 disasm_opcode; \
687 char aml_op_name[16])
688
689#define ACPI_DASM_BUFFER 0x00
690#define ACPI_DASM_RESOURCE 0x01
691#define ACPI_DASM_STRING 0x02
692#define ACPI_DASM_UNICODE 0x03
693#define ACPI_DASM_EISAID 0x04
694#define ACPI_DASM_MATCHOP 0x05
695#define ACPI_DASM_LNOT_PREFIX 0x06
696#define ACPI_DASM_LNOT_SUFFIX 0x07
697#define ACPI_DASM_IGNORE 0x08
698
699
700
701
702struct acpi_parse_obj_common {
703ACPI_PARSE_COMMON};
704
705
706
707
708
709struct acpi_parse_obj_named {
710 ACPI_PARSE_COMMON u8 *path;
711 u8 *data;
712 u32 length;
713 u32 name;
714};
715
716
717
718#define ACPI_MAX_PARSEOP_NAME 20
719
720struct acpi_parse_obj_asl {
721 ACPI_PARSE_COMMON union acpi_parse_object *child;
722 union acpi_parse_object *parent_method;
723 char *filename;
724 char *external_name;
725 char *namepath;
726 char name_seg[4];
727 u32 extra_value;
728 u32 column;
729 u32 line_number;
730 u32 logical_line_number;
731 u32 logical_byte_offset;
732 u32 end_line;
733 u32 end_logical_line;
734 u32 acpi_btype;
735 u32 aml_length;
736 u32 aml_subtree_length;
737 u32 final_aml_length;
738 u32 final_aml_offset;
739 u32 compile_flags;
740 u16 parse_opcode;
741 u8 aml_opcode_length;
742 u8 aml_pkg_len_bytes;
743 u8 extra;
744 char parse_op_name[ACPI_MAX_PARSEOP_NAME];
745};
746
747union acpi_parse_object {
748 struct acpi_parse_obj_common common;
749 struct acpi_parse_obj_named named;
750 struct acpi_parse_obj_asl asl;
751};
752
753
754
755
756
757struct acpi_parse_state {
758 u8 *aml_start;
759 u8 *aml;
760 u8 *aml_end;
761 u8 *pkg_start;
762 u8 *pkg_end;
763 union acpi_parse_object *start_op;
764 struct acpi_namespace_node *start_node;
765 union acpi_generic_state *scope;
766 union acpi_parse_object *start_scope;
767 u32 aml_size;
768};
769
770
771
772#define ACPI_PARSEOP_GENERIC 0x01
773#define ACPI_PARSEOP_NAMED 0x02
774#define ACPI_PARSEOP_DEFERRED 0x04
775#define ACPI_PARSEOP_BYTELIST 0x08
776#define ACPI_PARSEOP_IN_STACK 0x10
777#define ACPI_PARSEOP_TARGET 0x20
778#define ACPI_PARSEOP_IN_CACHE 0x80
779
780
781
782#define ACPI_PARSEOP_IGNORE 0x01
783#define ACPI_PARSEOP_PARAMLIST 0x02
784#define ACPI_PARSEOP_EMPTY_TERMLIST 0x04
785#define ACPI_PARSEOP_SPECIAL 0x10
786
787
788
789
790
791
792
793#define PCI_ROOT_HID_STRING "PNP0A03"
794#define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08"
795
796struct acpi_bit_register_info {
797 u8 parent_register;
798 u8 bit_position;
799 u16 access_bit_mask;
800};
801
802
803
804
805
806#define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800
807#define ACPI_PM1_CONTROL_PRESERVED_BITS 0x0200
808
809
810
811
812
813#define ACPI_REGISTER_PM1_STATUS 0x01
814#define ACPI_REGISTER_PM1_ENABLE 0x02
815#define ACPI_REGISTER_PM1_CONTROL 0x03
816#define ACPI_REGISTER_PM1A_CONTROL 0x04
817#define ACPI_REGISTER_PM1B_CONTROL 0x05
818#define ACPI_REGISTER_PM2_CONTROL 0x06
819#define ACPI_REGISTER_PM_TIMER 0x07
820#define ACPI_REGISTER_PROCESSOR_BLOCK 0x08
821#define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x09
822
823
824
825#define ACPI_BITMASK_TIMER_STATUS 0x0001
826#define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010
827#define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020
828#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100
829#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200
830#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400
831#define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000
832#define ACPI_BITMASK_WAKE_STATUS 0x8000
833
834#define ACPI_BITMASK_ALL_FIXED_STATUS (\
835 ACPI_BITMASK_TIMER_STATUS | \
836 ACPI_BITMASK_BUS_MASTER_STATUS | \
837 ACPI_BITMASK_GLOBAL_LOCK_STATUS | \
838 ACPI_BITMASK_POWER_BUTTON_STATUS | \
839 ACPI_BITMASK_SLEEP_BUTTON_STATUS | \
840 ACPI_BITMASK_RT_CLOCK_STATUS | \
841 ACPI_BITMASK_WAKE_STATUS)
842
843#define ACPI_BITMASK_TIMER_ENABLE 0x0001
844#define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020
845#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100
846#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200
847#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400
848#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000
849
850#define ACPI_BITMASK_SCI_ENABLE 0x0001
851#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002
852#define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004
853#define ACPI_BITMASK_SLEEP_TYPE_X 0x1C00
854#define ACPI_BITMASK_SLEEP_ENABLE 0x2000
855
856#define ACPI_BITMASK_ARB_DISABLE 0x0001
857
858
859
860#define ACPI_BITPOSITION_TIMER_STATUS 0x00
861#define ACPI_BITPOSITION_BUS_MASTER_STATUS 0x04
862#define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS 0x05
863#define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08
864#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09
865#define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A
866#define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E
867#define ACPI_BITPOSITION_WAKE_STATUS 0x0F
868
869#define ACPI_BITPOSITION_TIMER_ENABLE 0x00
870#define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE 0x05
871#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08
872#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09
873#define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A
874#define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E
875
876#define ACPI_BITPOSITION_SCI_ENABLE 0x00
877#define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01
878#define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE 0x02
879#define ACPI_BITPOSITION_SLEEP_TYPE_X 0x0A
880#define ACPI_BITPOSITION_SLEEP_ENABLE 0x0D
881
882#define ACPI_BITPOSITION_ARB_DISABLE 0x00
883
884
885
886
887
888
889
890
891
892#define ACPI_ADDRESS_TYPE_MEMORY_RANGE 0
893#define ACPI_ADDRESS_TYPE_IO_RANGE 1
894#define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2
895
896
897
898#define ACPI_RESOURCE_NAME_LARGE 0x80
899#define ACPI_RESOURCE_NAME_SMALL 0x00
900
901#define ACPI_RESOURCE_NAME_SMALL_MASK 0x78
902#define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK 0x07
903#define ACPI_RESOURCE_NAME_LARGE_MASK 0x7F
904
905
906
907
908
909#define ACPI_RESOURCE_NAME_IRQ 0x20
910#define ACPI_RESOURCE_NAME_DMA 0x28
911#define ACPI_RESOURCE_NAME_START_DEPENDENT 0x30
912#define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38
913#define ACPI_RESOURCE_NAME_IO 0x40
914#define ACPI_RESOURCE_NAME_FIXED_IO 0x48
915#define ACPI_RESOURCE_NAME_RESERVED_S1 0x50
916#define ACPI_RESOURCE_NAME_RESERVED_S2 0x58
917#define ACPI_RESOURCE_NAME_RESERVED_S3 0x60
918#define ACPI_RESOURCE_NAME_RESERVED_S4 0x68
919#define ACPI_RESOURCE_NAME_VENDOR_SMALL 0x70
920#define ACPI_RESOURCE_NAME_END_TAG 0x78
921
922
923
924
925
926#define ACPI_RESOURCE_NAME_MEMORY24 0x81
927#define ACPI_RESOURCE_NAME_GENERIC_REGISTER 0x82
928#define ACPI_RESOURCE_NAME_RESERVED_L1 0x83
929#define ACPI_RESOURCE_NAME_VENDOR_LARGE 0x84
930#define ACPI_RESOURCE_NAME_MEMORY32 0x85
931#define ACPI_RESOURCE_NAME_FIXED_MEMORY32 0x86
932#define ACPI_RESOURCE_NAME_ADDRESS32 0x87
933#define ACPI_RESOURCE_NAME_ADDRESS16 0x88
934#define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89
935#define ACPI_RESOURCE_NAME_ADDRESS64 0x8A
936#define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B
937#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8B
938
939
940
941
942
943
944
945#define ACPI_ASCII_ZERO 0x30
946
947
948
949
950
951
952
953struct acpi_db_method_info {
954 acpi_handle main_thread_gate;
955 acpi_handle thread_complete_gate;
956 u32 *threads;
957 u32 num_threads;
958 u32 num_created;
959 u32 num_completed;
960
961 char *name;
962 u32 flags;
963 u32 num_loops;
964 char pathname[128];
965 char **args;
966
967
968
969
970
971
972
973 char init_args;
974 char *arguments[4];
975 char num_threads_str[11];
976 char id_of_thread_str[11];
977 char index_of_thread_str[11];
978};
979
980struct acpi_integrity_info {
981 u32 nodes;
982 u32 objects;
983};
984
985#define ACPI_DB_REDIRECTABLE_OUTPUT 0x01
986#define ACPI_DB_CONSOLE_OUTPUT 0x02
987#define ACPI_DB_DUPLICATE_OUTPUT 0x03
988
989
990
991
992
993
994
995
996
997#define ACPI_MEM_MALLOC 0
998#define ACPI_MEM_CALLOC 1
999#define ACPI_MAX_MODULE_NAME 16
1000
1001#define ACPI_COMMON_DEBUG_MEM_HEADER \
1002 struct acpi_debug_mem_block *previous; \
1003 struct acpi_debug_mem_block *next; \
1004 u32 size; \
1005 u32 component; \
1006 u32 line; \
1007 char module[ACPI_MAX_MODULE_NAME]; \
1008 u8 alloc_type;
1009
1010struct acpi_debug_mem_header {
1011ACPI_COMMON_DEBUG_MEM_HEADER};
1012
1013struct acpi_debug_mem_block {
1014 ACPI_COMMON_DEBUG_MEM_HEADER u64 user_space;
1015};
1016
1017#define ACPI_MEM_LIST_GLOBAL 0
1018#define ACPI_MEM_LIST_NSNODE 1
1019#define ACPI_MEM_LIST_MAX 1
1020#define ACPI_NUM_MEM_LISTS 2
1021
1022struct acpi_memory_list {
1023 char *list_name;
1024 void *list_head;
1025 u16 object_size;
1026 u16 max_depth;
1027 u16 current_depth;
1028 u16 link_offset;
1029
1030#ifdef ACPI_DBG_TRACK_ALLOCATIONS
1031
1032
1033
1034 u32 total_allocated;
1035 u32 total_freed;
1036 u32 max_occupied;
1037 u32 total_size;
1038 u32 current_total_size;
1039 u32 requests;
1040 u32 hits;
1041#endif
1042};
1043
1044#endif
1045