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 __ACTYPES_H__
45#define __ACTYPES_H__
46
47
48
49
50
51
52
53
54#ifndef ACPI_MACHINE_WIDTH
55#error ACPI_MACHINE_WIDTH not defined
56#endif
57
58
59
60
61
62
63
64
65
66#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0))
67#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0))
68#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0))
69#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0))
70#define ACPI_ASCII_MAX 0x7F
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127typedef unsigned char BOOLEAN;
128typedef unsigned char UINT8;
129typedef unsigned short UINT16;
130typedef COMPILER_DEPENDENT_UINT64 UINT64;
131typedef COMPILER_DEPENDENT_INT64 INT64;
132
133
134
135
136
137
138
139
140
141#if ACPI_MACHINE_WIDTH == 64
142
143
144
145typedef unsigned int UINT32;
146typedef int INT32;
147
148
149
150typedef s64 acpi_native_int;
151
152typedef u64 acpi_size;
153typedef u64 acpi_io_address;
154typedef u64 acpi_physical_address;
155
156#define ACPI_MAX_PTR ACPI_UINT64_MAX
157#define ACPI_SIZE_MAX ACPI_UINT64_MAX
158
159#define ACPI_USE_NATIVE_DIVIDE
160
161
162
163
164
165
166
167
168
169
170#if defined (__IA64__) || defined (__ia64__)
171#define ACPI_MISALIGNMENT_NOT_SUPPORTED
172#endif
173
174
175
176
177
178
179
180#elif ACPI_MACHINE_WIDTH == 32
181
182
183
184typedef unsigned int UINT32;
185typedef int INT32;
186
187
188
189typedef s32 acpi_native_int;
190
191typedef u32 acpi_size;
192typedef u32 acpi_io_address;
193typedef u32 acpi_physical_address;
194
195#define ACPI_MAX_PTR ACPI_UINT32_MAX
196#define ACPI_SIZE_MAX ACPI_UINT32_MAX
197
198#else
199
200
201
202#error unknown ACPI_MACHINE_WIDTH
203#endif
204
205
206
207
208
209
210
211
212
213
214
215
216
217#ifndef acpi_thread_id
218#define acpi_thread_id acpi_size
219#endif
220
221
222
223#ifndef acpi_spinlock
224#define acpi_spinlock void *
225#endif
226
227
228
229#ifndef acpi_cpu_flags
230#define acpi_cpu_flags acpi_size
231#endif
232
233
234
235#ifndef acpi_cache_t
236#define acpi_cache_t struct acpi_memory_list
237#endif
238
239
240
241#ifndef acpi_uintptr_t
242#define acpi_uintptr_t void *
243#endif
244
245
246
247
248
249#ifndef ACPI_PRINTF_LIKE
250#define ACPI_PRINTF_LIKE(c)
251#endif
252
253
254
255
256
257
258
259#ifndef ACPI_UNUSED_VAR
260#define ACPI_UNUSED_VAR
261#endif
262
263
264
265
266
267#ifndef ACPI_EXPORT_SYMBOL
268#define ACPI_EXPORT_SYMBOL(symbol)
269#endif
270
271
272
273
274
275
276
277
278
279#ifdef FALSE
280#undef FALSE
281#endif
282#define FALSE (1 == 0)
283
284#ifdef TRUE
285#undef TRUE
286#endif
287#define TRUE (1 == 1)
288
289#ifndef NULL
290#define NULL (void *) 0
291#endif
292
293
294
295
296typedef u32 acpi_status;
297typedef u32 acpi_name;
298typedef char *acpi_string;
299typedef void *acpi_handle;
300
301struct uint64_struct {
302 u32 lo;
303 u32 hi;
304};
305
306union uint64_overlay {
307 u64 full;
308 struct uint64_struct part;
309};
310
311struct uint32_struct {
312 u32 lo;
313 u32 hi;
314};
315
316
317
318#define acpi_mutex void *
319#define acpi_semaphore void *
320
321
322
323
324
325
326
327typedef unsigned long long acpi_integer;
328#define ACPI_INTEGER_MAX ACPI_UINT64_MAX
329#define ACPI_INTEGER_BIT_SIZE 64
330#define ACPI_MAX_DECIMAL_DIGITS 20
331
332#if ACPI_MACHINE_WIDTH == 64
333#define ACPI_USE_NATIVE_DIVIDE
334#endif
335
336#define ACPI_MAX64_DECIMAL_DIGITS 20
337#define ACPI_MAX32_DECIMAL_DIGITS 10
338#define ACPI_MAX16_DECIMAL_DIGITS 5
339#define ACPI_MAX8_DECIMAL_DIGITS 3
340
341
342
343
344#define ACPI_ROOT_OBJECT ACPI_ADD_PTR (acpi_handle, NULL, ACPI_MAX_PTR)
345
346
347
348
349#define ACPI_FULL_INITIALIZATION 0x00
350#define ACPI_NO_ADDRESS_SPACE_INIT 0x01
351#define ACPI_NO_HARDWARE_INIT 0x02
352#define ACPI_NO_EVENT_INIT 0x04
353#define ACPI_NO_HANDLER_INIT 0x08
354#define ACPI_NO_ACPI_ENABLE 0x10
355#define ACPI_NO_DEVICE_INIT 0x20
356#define ACPI_NO_OBJECT_INIT 0x40
357
358
359
360
361#define ACPI_SUBSYSTEM_INITIALIZE 0x01
362#define ACPI_INITIALIZED_OK 0x02
363
364
365
366
367#define ACPI_STATE_UNKNOWN (u8) 0xFF
368
369#define ACPI_STATE_S0 (u8) 0
370#define ACPI_STATE_S1 (u8) 1
371#define ACPI_STATE_S2 (u8) 2
372#define ACPI_STATE_S3 (u8) 3
373#define ACPI_STATE_S4 (u8) 4
374#define ACPI_STATE_S5 (u8) 5
375#define ACPI_S_STATES_MAX ACPI_STATE_S5
376#define ACPI_S_STATE_COUNT 6
377
378#define ACPI_STATE_D0 (u8) 0
379#define ACPI_STATE_D1 (u8) 1
380#define ACPI_STATE_D2 (u8) 2
381#define ACPI_STATE_D3 (u8) 3
382#define ACPI_D_STATES_MAX ACPI_STATE_D3
383#define ACPI_D_STATE_COUNT 4
384
385#define ACPI_STATE_C0 (u8) 0
386#define ACPI_STATE_C1 (u8) 1
387#define ACPI_STATE_C2 (u8) 2
388#define ACPI_STATE_C3 (u8) 3
389#define ACPI_C_STATES_MAX ACPI_STATE_C3
390#define ACPI_C_STATE_COUNT 4
391
392
393
394
395#define ACPI_SLEEP_TYPE_MAX 0x7
396#define ACPI_SLEEP_TYPE_INVALID 0xFF
397
398
399
400
401#define ACPI_NOTIFY_BUS_CHECK (u8) 0x00
402#define ACPI_NOTIFY_DEVICE_CHECK (u8) 0x01
403#define ACPI_NOTIFY_DEVICE_WAKE (u8) 0x02
404#define ACPI_NOTIFY_EJECT_REQUEST (u8) 0x03
405#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (u8) 0x04
406#define ACPI_NOTIFY_FREQUENCY_MISMATCH (u8) 0x05
407#define ACPI_NOTIFY_BUS_MODE_MISMATCH (u8) 0x06
408#define ACPI_NOTIFY_POWER_FAULT (u8) 0x07
409#define ACPI_NOTIFY_CAPABILITIES_CHECK (u8) 0x08
410#define ACPI_NOTIFY_DEVICE_PLD_CHECK (u8) 0x09
411#define ACPI_NOTIFY_RESERVED (u8) 0x0A
412#define ACPI_NOTIFY_LOCALITY_UPDATE (u8) 0x0B
413
414#define ACPI_NOTIFY_MAX 0x0B
415
416
417
418
419
420
421
422
423
424
425typedef u32 acpi_object_type;
426
427#define ACPI_TYPE_ANY 0x00
428#define ACPI_TYPE_INTEGER 0x01
429#define ACPI_TYPE_STRING 0x02
430#define ACPI_TYPE_BUFFER 0x03
431#define ACPI_TYPE_PACKAGE 0x04
432#define ACPI_TYPE_FIELD_UNIT 0x05
433#define ACPI_TYPE_DEVICE 0x06
434#define ACPI_TYPE_EVENT 0x07
435#define ACPI_TYPE_METHOD 0x08
436#define ACPI_TYPE_MUTEX 0x09
437#define ACPI_TYPE_REGION 0x0A
438#define ACPI_TYPE_POWER 0x0B
439#define ACPI_TYPE_PROCESSOR 0x0C
440#define ACPI_TYPE_THERMAL 0x0D
441#define ACPI_TYPE_BUFFER_FIELD 0x0E
442#define ACPI_TYPE_DDB_HANDLE 0x0F
443#define ACPI_TYPE_DEBUG_OBJECT 0x10
444
445#define ACPI_TYPE_EXTERNAL_MAX 0x10
446
447
448
449
450
451
452
453
454#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11
455#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12
456#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13
457#define ACPI_TYPE_LOCAL_REFERENCE 0x14
458#define ACPI_TYPE_LOCAL_ALIAS 0x15
459#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16
460#define ACPI_TYPE_LOCAL_NOTIFY 0x17
461#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18
462#define ACPI_TYPE_LOCAL_RESOURCE 0x19
463#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A
464#define ACPI_TYPE_LOCAL_SCOPE 0x1B
465
466#define ACPI_TYPE_NS_NODE_MAX 0x1B
467
468
469
470
471
472#define ACPI_TYPE_LOCAL_EXTRA 0x1C
473#define ACPI_TYPE_LOCAL_DATA 0x1D
474
475#define ACPI_TYPE_LOCAL_MAX 0x1D
476
477
478
479#define ACPI_TYPE_INVALID 0x1E
480#define ACPI_TYPE_NOT_FOUND 0xFF
481
482#define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1)
483
484
485
486
487#define ACPI_READ 0
488#define ACPI_WRITE 1
489#define ACPI_IO_MASK 1
490
491
492
493
494typedef u32 acpi_event_type;
495
496
497
498
499#define ACPI_EVENT_PMTIMER 0
500#define ACPI_EVENT_GLOBAL 1
501#define ACPI_EVENT_POWER_BUTTON 2
502#define ACPI_EVENT_SLEEP_BUTTON 3
503#define ACPI_EVENT_RTC 4
504#define ACPI_EVENT_MAX 4
505#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522typedef u32 acpi_event_status;
523
524#define ACPI_EVENT_FLAG_DISABLED (acpi_event_status) 0x00
525#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01
526#define ACPI_EVENT_FLAG_WAKE_ENABLED (acpi_event_status) 0x02
527#define ACPI_EVENT_FLAG_SET (acpi_event_status) 0x04
528#define ACPI_EVENT_FLAG_HANDLE (acpi_event_status) 0x08
529
530
531
532
533#define ACPI_GPE_INVALID 0xFF
534#define ACPI_GPE_MAX 0xFF
535#define ACPI_NUM_GPE 256
536
537#define ACPI_GPE_ENABLE 0
538#define ACPI_GPE_DISABLE 1
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553#define ACPI_GPE_XRUPT_TYPE_MASK (u8) 0x01
554#define ACPI_GPE_LEVEL_TRIGGERED (u8) 0x01
555#define ACPI_GPE_EDGE_TRIGGERED (u8) 0x00
556
557#define ACPI_GPE_TYPE_MASK (u8) 0x06
558#define ACPI_GPE_TYPE_WAKE_RUN (u8) 0x06
559#define ACPI_GPE_TYPE_WAKE (u8) 0x02
560#define ACPI_GPE_TYPE_RUNTIME (u8) 0x04
561
562#define ACPI_GPE_DISPATCH_MASK (u8) 0x18
563#define ACPI_GPE_DISPATCH_HANDLER (u8) 0x08
564#define ACPI_GPE_DISPATCH_METHOD (u8) 0x10
565#define ACPI_GPE_DISPATCH_NOT_USED (u8) 0x00
566
567#define ACPI_GPE_RUN_ENABLE_MASK (u8) 0x20
568#define ACPI_GPE_RUN_ENABLED (u8) 0x20
569#define ACPI_GPE_RUN_DISABLED (u8) 0x00
570
571#define ACPI_GPE_WAKE_ENABLE_MASK (u8) 0x40
572#define ACPI_GPE_WAKE_ENABLED (u8) 0x40
573#define ACPI_GPE_WAKE_DISABLED (u8) 0x00
574
575#define ACPI_GPE_ENABLE_MASK (u8) 0x60
576
577
578
579
580#define ACPI_EVENT_WAKE_ENABLE 0x2
581#define ACPI_EVENT_WAKE_DISABLE 0x2
582
583#define ACPI_NOT_ISR 0x1
584#define ACPI_ISR 0x0
585
586
587
588#define ACPI_SYSTEM_NOTIFY 0x1
589#define ACPI_DEVICE_NOTIFY 0x2
590#define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY)
591#define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3
592
593#define ACPI_MAX_SYS_NOTIFY 0x7f
594
595
596
597typedef u8 acpi_adr_space_type;
598
599#define ACPI_ADR_SPACE_SYSTEM_MEMORY (acpi_adr_space_type) 0
600#define ACPI_ADR_SPACE_SYSTEM_IO (acpi_adr_space_type) 1
601#define ACPI_ADR_SPACE_PCI_CONFIG (acpi_adr_space_type) 2
602#define ACPI_ADR_SPACE_EC (acpi_adr_space_type) 3
603#define ACPI_ADR_SPACE_SMBUS (acpi_adr_space_type) 4
604#define ACPI_ADR_SPACE_CMOS (acpi_adr_space_type) 5
605#define ACPI_ADR_SPACE_PCI_BAR_TARGET (acpi_adr_space_type) 6
606#define ACPI_ADR_SPACE_DATA_TABLE (acpi_adr_space_type) 7
607#define ACPI_ADR_SPACE_FIXED_HARDWARE (acpi_adr_space_type) 127
608
609
610
611
612
613
614
615
616
617
618
619
620#define ACPI_BITREG_TIMER_STATUS 0x00
621#define ACPI_BITREG_BUS_MASTER_STATUS 0x01
622#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02
623#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03
624#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04
625#define ACPI_BITREG_RT_CLOCK_STATUS 0x05
626#define ACPI_BITREG_WAKE_STATUS 0x06
627#define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07
628
629
630
631#define ACPI_BITREG_TIMER_ENABLE 0x08
632#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09
633#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A
634#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B
635#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C
636#define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D
637
638
639
640#define ACPI_BITREG_SCI_ENABLE 0x0E
641#define ACPI_BITREG_BUS_MASTER_RLD 0x0F
642#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10
643#define ACPI_BITREG_SLEEP_TYPE_A 0x11
644#define ACPI_BITREG_SLEEP_TYPE_B 0x12
645#define ACPI_BITREG_SLEEP_ENABLE 0x13
646
647
648
649#define ACPI_BITREG_ARB_DISABLE 0x14
650
651#define ACPI_BITREG_MAX 0x14
652#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1
653
654
655
656
657
658
659
660
661
662union acpi_object {
663 acpi_object_type type;
664 struct {
665 acpi_object_type type;
666 acpi_integer value;
667 } integer;
668
669 struct {
670 acpi_object_type type;
671 u32 length;
672 char *pointer;
673 } string;
674
675 struct {
676 acpi_object_type type;
677 u32 length;
678 u8 *pointer;
679 } buffer;
680
681 struct {
682 acpi_object_type type;
683 u32 count;
684 union acpi_object *elements;
685 } package;
686
687 struct {
688 acpi_object_type type;
689 acpi_object_type actual_type;
690 acpi_handle handle;
691 } reference;
692
693 struct {
694 acpi_object_type type;
695 u32 proc_id;
696 acpi_io_address pblk_address;
697 u32 pblk_length;
698 } processor;
699
700 struct {
701 acpi_object_type type;
702 u32 system_level;
703 u32 resource_order;
704 } power_resource;
705};
706
707
708
709
710struct acpi_object_list {
711 u32 count;
712 union acpi_object *pointer;
713};
714
715
716
717
718#define ACPI_NO_BUFFER 0
719#define ACPI_ALLOCATE_BUFFER (acpi_size) (-1)
720#define ACPI_ALLOCATE_LOCAL_BUFFER (acpi_size) (-2)
721
722struct acpi_buffer {
723 acpi_size length;
724 void *pointer;
725};
726
727
728
729
730#define ACPI_FULL_PATHNAME 0
731#define ACPI_SINGLE_NAME 1
732#define ACPI_NAME_TYPE_MAX 1
733
734
735
736
737#define ACPI_SYS_MODE_UNKNOWN 0x0000
738#define ACPI_SYS_MODE_ACPI 0x0001
739#define ACPI_SYS_MODE_LEGACY 0x0002
740#define ACPI_SYS_MODES_MASK 0x0003
741
742
743
744
745struct acpi_system_info {
746 u32 acpi_ca_version;
747 u32 flags;
748 u32 timer_resolution;
749 u32 reserved1;
750 u32 reserved2;
751 u32 debug_level;
752 u32 debug_layer;
753};
754
755
756
757#define ACPI_TABLE_EVENT_LOAD 0x0
758#define ACPI_TABLE_EVENT_UNLOAD 0x1
759#define ACPI_NUM_TABLE_EVENTS 2
760
761
762
763
764typedef u32(ACPI_SYSTEM_XFACE * acpi_osd_handler) (void *context);
765
766typedef void
767 (ACPI_SYSTEM_XFACE * acpi_osd_exec_callback) (void *context);
768
769
770
771
772typedef u32(*acpi_event_handler) (void *context);
773
774typedef
775void (*acpi_notify_handler) (acpi_handle device, u32 value, void *context);
776
777typedef
778void (*acpi_object_handler) (acpi_handle object, u32 function, void *data);
779
780typedef acpi_status(*acpi_init_handler) (acpi_handle object, u32 function);
781
782#define ACPI_INIT_DEVICE_INI 1
783
784typedef
785acpi_status(*acpi_exception_handler) (acpi_status aml_status,
786 acpi_name name,
787 u16 opcode,
788 u32 aml_offset, void *context);
789
790
791
792typedef
793acpi_status(*acpi_tbl_handler) (u32 event, void *table, void *context);
794
795
796
797typedef
798acpi_status(*acpi_adr_space_handler) (u32 function,
799 acpi_physical_address address,
800 u32 bit_width,
801 acpi_integer * value,
802 void *handler_context,
803 void *region_context);
804
805#define ACPI_DEFAULT_HANDLER NULL
806
807typedef
808acpi_status(*acpi_adr_space_setup) (acpi_handle region_handle,
809 u32 function,
810 void *handler_context,
811 void **region_context);
812
813#define ACPI_REGION_ACTIVATE 0
814#define ACPI_REGION_DEACTIVATE 1
815
816typedef
817acpi_status(*acpi_walk_callback) (acpi_handle obj_handle,
818 u32 nesting_level,
819 void *context, void **return_value);
820
821
822
823#define ACPI_INTERRUPT_NOT_HANDLED 0x00
824#define ACPI_INTERRUPT_HANDLED 0x01
825
826
827
828struct acpica_device_id {
829 char value[ACPI_DEVICE_ID_LENGTH];
830};
831
832
833
834struct acpi_compatible_id {
835 char value[ACPI_MAX_CID_LENGTH];
836};
837
838struct acpi_compatible_id_list {
839 u32 count;
840 u32 size;
841 struct acpi_compatible_id id[1];
842};
843
844
845
846#define ACPI_VALID_STA 0x0001
847#define ACPI_VALID_ADR 0x0002
848#define ACPI_VALID_HID 0x0004
849#define ACPI_VALID_UID 0x0008
850#define ACPI_VALID_CID 0x0010
851#define ACPI_VALID_SXDS 0x0020
852
853
854
855#define ACPI_STA_DEVICE_PRESENT 0x01
856#define ACPI_STA_DEVICE_ENABLED 0x02
857#define ACPI_STA_DEVICE_UI 0x04
858#define ACPI_STA_DEVICE_FUNCTIONING 0x08
859#define ACPI_STA_DEVICE_OK 0x08
860#define ACPI_STA_BATTERY_PRESENT 0x10
861
862#define ACPI_COMMON_OBJ_INFO \
863 acpi_object_type type; \
864 acpi_name name
865
866struct acpi_obj_info_header {
867 ACPI_COMMON_OBJ_INFO;
868};
869
870
871
872struct acpi_device_info {
873 ACPI_COMMON_OBJ_INFO;
874
875 u32 param_count;
876 u32 valid;
877 u32 current_status;
878 acpi_integer address;
879 struct acpica_device_id hardware_id;
880 struct acpica_device_id unique_id;
881 u8 highest_dstates[4];
882 struct acpi_compatible_id_list compatibility_id;
883};
884
885
886
887struct acpi_pci_id {
888 u16 segment;
889 u16 bus;
890 u16 device;
891 u16 function;
892};
893
894struct acpi_mem_space_context {
895 u32 length;
896 acpi_physical_address address;
897 acpi_physical_address mapped_physical_address;
898 u8 *mapped_logical_address;
899 acpi_size mapped_length;
900};
901
902
903
904
905typedef u16 acpi_rs_length;
906typedef u32 acpi_rsdesc_size;
907
908
909
910
911#define ACPI_READ_ONLY_MEMORY (u8) 0x00
912#define ACPI_READ_WRITE_MEMORY (u8) 0x01
913
914#define ACPI_NON_CACHEABLE_MEMORY (u8) 0x00
915#define ACPI_CACHABLE_MEMORY (u8) 0x01
916#define ACPI_WRITE_COMBINING_MEMORY (u8) 0x02
917#define ACPI_PREFETCHABLE_MEMORY (u8) 0x03
918
919
920
921
922
923
924#define ACPI_NON_ISA_ONLY_RANGES (u8) 0x01
925#define ACPI_ISA_ONLY_RANGES (u8) 0x02
926#define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES)
927
928
929
930#define ACPI_SPARSE_TRANSLATION (u8) 0x01
931
932
933
934
935#define ACPI_DECODE_10 (u8) 0x00
936#define ACPI_DECODE_16 (u8) 0x01
937
938
939
940
941#define ACPI_LEVEL_SENSITIVE (u8) 0x00
942#define ACPI_EDGE_SENSITIVE (u8) 0x01
943
944#define ACPI_ACTIVE_HIGH (u8) 0x00
945#define ACPI_ACTIVE_LOW (u8) 0x01
946
947#define ACPI_EXCLUSIVE (u8) 0x00
948#define ACPI_SHARED (u8) 0x01
949
950
951
952
953#define ACPI_COMPATIBILITY (u8) 0x00
954#define ACPI_TYPE_A (u8) 0x01
955#define ACPI_TYPE_B (u8) 0x02
956#define ACPI_TYPE_F (u8) 0x03
957
958#define ACPI_NOT_BUS_MASTER (u8) 0x00
959#define ACPI_BUS_MASTER (u8) 0x01
960
961#define ACPI_TRANSFER_8 (u8) 0x00
962#define ACPI_TRANSFER_8_16 (u8) 0x01
963#define ACPI_TRANSFER_16 (u8) 0x02
964
965
966
967
968#define ACPI_GOOD_CONFIGURATION (u8) 0x00
969#define ACPI_ACCEPTABLE_CONFIGURATION (u8) 0x01
970#define ACPI_SUB_OPTIMAL_CONFIGURATION (u8) 0x02
971
972
973
974
975#define ACPI_MEMORY_RANGE (u8) 0x00
976#define ACPI_IO_RANGE (u8) 0x01
977#define ACPI_BUS_NUMBER_RANGE (u8) 0x02
978
979#define ACPI_ADDRESS_NOT_FIXED (u8) 0x00
980#define ACPI_ADDRESS_FIXED (u8) 0x01
981
982#define ACPI_POS_DECODE (u8) 0x00
983#define ACPI_SUB_DECODE (u8) 0x01
984
985#define ACPI_PRODUCER (u8) 0x00
986#define ACPI_CONSUMER (u8) 0x01
987
988
989
990
991#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
992#pragma pack(1)
993#endif
994
995
996
997struct acpi_uuid {
998 u8 data[ACPI_UUID_LENGTH];
999};
1000
1001struct acpi_vendor_uuid {
1002 u8 subtype;
1003 u8 data[ACPI_UUID_LENGTH];
1004};
1005
1006
1007
1008
1009struct acpi_resource_irq {
1010 u8 descriptor_length;
1011 u8 triggering;
1012 u8 polarity;
1013 u8 sharable;
1014 u8 interrupt_count;
1015 u8 interrupts[1];
1016};
1017
1018struct acpi_resource_dma {
1019 u8 type;
1020 u8 bus_master;
1021 u8 transfer;
1022 u8 channel_count;
1023 u8 channels[1];
1024};
1025
1026struct acpi_resource_start_dependent {
1027 u8 descriptor_length;
1028 u8 compatibility_priority;
1029 u8 performance_robustness;
1030};
1031
1032
1033
1034
1035
1036
1037struct acpi_resource_io {
1038 u8 io_decode;
1039 u8 alignment;
1040 u8 address_length;
1041 u16 minimum;
1042 u16 maximum;
1043};
1044
1045struct acpi_resource_fixed_io {
1046 u16 address;
1047 u8 address_length;
1048};
1049
1050struct acpi_resource_vendor {
1051 u16 byte_length;
1052 u8 byte_data[1];
1053};
1054
1055
1056
1057struct acpi_resource_vendor_typed {
1058 u16 byte_length;
1059 u8 uuid_subtype;
1060 u8 uuid[ACPI_UUID_LENGTH];
1061 u8 byte_data[1];
1062};
1063
1064struct acpi_resource_end_tag {
1065 u8 checksum;
1066};
1067
1068struct acpi_resource_memory24 {
1069 u8 write_protect;
1070 u16 minimum;
1071 u16 maximum;
1072 u16 alignment;
1073 u16 address_length;
1074};
1075
1076struct acpi_resource_memory32 {
1077 u8 write_protect;
1078 u32 minimum;
1079 u32 maximum;
1080 u32 alignment;
1081 u32 address_length;
1082};
1083
1084struct acpi_resource_fixed_memory32 {
1085 u8 write_protect;
1086 u32 address;
1087 u32 address_length;
1088};
1089
1090struct acpi_memory_attribute {
1091 u8 write_protect;
1092 u8 caching;
1093 u8 range_type;
1094 u8 translation;
1095};
1096
1097struct acpi_io_attribute {
1098 u8 range_type;
1099 u8 translation;
1100 u8 translation_type;
1101 u8 reserved1;
1102};
1103
1104union acpi_resource_attribute {
1105 struct acpi_memory_attribute mem;
1106 struct acpi_io_attribute io;
1107
1108
1109
1110 u8 type_specific;
1111};
1112
1113struct acpi_resource_source {
1114 u8 index;
1115 u16 string_length;
1116 char *string_ptr;
1117};
1118
1119
1120
1121#define ACPI_RESOURCE_ADDRESS_COMMON \
1122 u8 resource_type; \
1123 u8 producer_consumer; \
1124 u8 decode; \
1125 u8 min_address_fixed; \
1126 u8 max_address_fixed; \
1127 union acpi_resource_attribute info;
1128
1129struct acpi_resource_address {
1130ACPI_RESOURCE_ADDRESS_COMMON};
1131
1132struct acpi_resource_address16 {
1133 ACPI_RESOURCE_ADDRESS_COMMON u16 granularity;
1134 u16 minimum;
1135 u16 maximum;
1136 u16 translation_offset;
1137 u16 address_length;
1138 struct acpi_resource_source resource_source;
1139};
1140
1141struct acpi_resource_address32 {
1142 ACPI_RESOURCE_ADDRESS_COMMON u32 granularity;
1143 u32 minimum;
1144 u32 maximum;
1145 u32 translation_offset;
1146 u32 address_length;
1147 struct acpi_resource_source resource_source;
1148};
1149
1150struct acpi_resource_address64 {
1151 ACPI_RESOURCE_ADDRESS_COMMON u64 granularity;
1152 u64 minimum;
1153 u64 maximum;
1154 u64 translation_offset;
1155 u64 address_length;
1156 struct acpi_resource_source resource_source;
1157};
1158
1159struct acpi_resource_extended_address64 {
1160 ACPI_RESOURCE_ADDRESS_COMMON u8 revision_iD;
1161 u64 granularity;
1162 u64 minimum;
1163 u64 maximum;
1164 u64 translation_offset;
1165 u64 address_length;
1166 u64 type_specific;
1167};
1168
1169struct acpi_resource_extended_irq {
1170 u8 producer_consumer;
1171 u8 triggering;
1172 u8 polarity;
1173 u8 sharable;
1174 u8 interrupt_count;
1175 struct acpi_resource_source resource_source;
1176 u32 interrupts[1];
1177};
1178
1179struct acpi_resource_generic_register {
1180 u8 space_id;
1181 u8 bit_width;
1182 u8 bit_offset;
1183 u8 access_size;
1184 u64 address;
1185};
1186
1187
1188
1189#define ACPI_RESOURCE_TYPE_IRQ 0
1190#define ACPI_RESOURCE_TYPE_DMA 1
1191#define ACPI_RESOURCE_TYPE_START_DEPENDENT 2
1192#define ACPI_RESOURCE_TYPE_END_DEPENDENT 3
1193#define ACPI_RESOURCE_TYPE_IO 4
1194#define ACPI_RESOURCE_TYPE_FIXED_IO 5
1195#define ACPI_RESOURCE_TYPE_VENDOR 6
1196#define ACPI_RESOURCE_TYPE_END_TAG 7
1197#define ACPI_RESOURCE_TYPE_MEMORY24 8
1198#define ACPI_RESOURCE_TYPE_MEMORY32 9
1199#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10
1200#define ACPI_RESOURCE_TYPE_ADDRESS16 11
1201#define ACPI_RESOURCE_TYPE_ADDRESS32 12
1202#define ACPI_RESOURCE_TYPE_ADDRESS64 13
1203#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14
1204#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15
1205#define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16
1206#define ACPI_RESOURCE_TYPE_MAX 16
1207
1208union acpi_resource_data {
1209 struct acpi_resource_irq irq;
1210 struct acpi_resource_dma dma;
1211 struct acpi_resource_start_dependent start_dpf;
1212 struct acpi_resource_io io;
1213 struct acpi_resource_fixed_io fixed_io;
1214 struct acpi_resource_vendor vendor;
1215 struct acpi_resource_vendor_typed vendor_typed;
1216 struct acpi_resource_end_tag end_tag;
1217 struct acpi_resource_memory24 memory24;
1218 struct acpi_resource_memory32 memory32;
1219 struct acpi_resource_fixed_memory32 fixed_memory32;
1220 struct acpi_resource_address16 address16;
1221 struct acpi_resource_address32 address32;
1222 struct acpi_resource_address64 address64;
1223 struct acpi_resource_extended_address64 ext_address64;
1224 struct acpi_resource_extended_irq extended_irq;
1225 struct acpi_resource_generic_register generic_reg;
1226
1227
1228
1229 struct acpi_resource_address address;
1230};
1231
1232struct acpi_resource {
1233 u32 type;
1234 u32 length;
1235 union acpi_resource_data data;
1236};
1237
1238
1239
1240#pragma pack()
1241
1242#define ACPI_RS_SIZE_NO_DATA 8
1243#define ACPI_RS_SIZE_MIN (u32) ACPI_ROUND_UP_TO_NATIVE_WORD (12)
1244#define ACPI_RS_SIZE(type) (u32) (ACPI_RS_SIZE_NO_DATA + sizeof (type))
1245
1246#define ACPI_NEXT_RESOURCE(res) (struct acpi_resource *)((u8 *) res + res->length)
1247
1248struct acpi_pci_routing_table {
1249 u32 length;
1250 u32 pin;
1251 acpi_integer address;
1252 u32 source_index;
1253 char source[4];
1254};
1255
1256#endif
1257