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