1 /******************************************************************************
3 * Name: actypes.h - Common data types for the entire ACPI subsystem
6 *****************************************************************************/
9 * Copyright (C) 2000, 2001 R. Byron Moore
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29 /*! [Begin] no source code translation (keep the typedefs) */
32 * Data types - Fixed across all compilation models
34 * BOOLEAN Logical Boolean.
35 * 1 byte value containing a 0 for FALSE or a 1 for TRUE.
36 * Other values are undefined.
38 * INT8 8-bit (1 byte) signed value
39 * UINT8 8-bit (1 byte) unsigned value
40 * INT16 16-bit (2 byte) signed value
41 * UINT16 16-bit (2 byte) unsigned value
42 * INT32 32-bit (4 byte) signed value
43 * UINT32 32-bit (4 byte) unsigned value
44 * INT64 64-bit (8 byte) signed value
45 * UINT64 64-bit (8 byte) unsigned value
46 * NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value
47 * NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value
48 * UCHAR Character. 1 byte unsigned value.
54 * 64-bit type definitions
56 typedef unsigned char UINT8;
57 typedef unsigned char BOOLEAN;
58 typedef unsigned char UCHAR;
59 typedef unsigned short UINT16;
61 typedef unsigned int UINT32;
62 typedef COMPILER_DEPENDENT_UINT64 UINT64;
64 typedef UINT64 NATIVE_UINT;
65 typedef INT64 NATIVE_INT;
67 typedef NATIVE_UINT ACPI_TBLPTR;
68 typedef UINT64 ACPI_IO_ADDRESS;
69 typedef UINT64 ACPI_PHYSICAL_ADDRESS;
71 #define ALIGNED_ADDRESS_BOUNDARY 0x00000008
73 /* (No hardware alignment support in IA64) */
78 * 16-bit type definitions
80 typedef unsigned char UINT8;
81 typedef unsigned char BOOLEAN;
82 typedef unsigned char UCHAR;
83 typedef unsigned int UINT16;
86 typedef unsigned long UINT32;
95 typedef UINT16 NATIVE_UINT;
96 typedef INT16 NATIVE_INT;
98 typedef UINT32 ACPI_TBLPTR;
99 typedef UINT32 ACPI_IO_ADDRESS;
100 typedef char *ACPI_PHYSICAL_ADDRESS;
102 #define ALIGNED_ADDRESS_BOUNDARY 0x00000002
103 #define _HW_ALIGNMENT_SUPPORT
106 * (16-bit only) internal integers must be 32-bits, so
107 * 64-bit integers cannot be supported
109 #define ACPI_NO_INTEGER64_SUPPORT
114 * 32-bit type definitions (default)
116 //typedef unsigned char UINT8;
117 //typedef unsigned char BOOLEAN;
118 //typedef unsigned char UCHAR;
119 //typedef unsigned short UINT16;
121 //typedef unsigned int UINT32;
122 //typedef COMPILER_DEPENDENT_UINT64 UINT64;
124 typedef UINT32 NATIVE_UINT;
125 typedef INT32 NATIVE_INT;
127 typedef NATIVE_UINT ACPI_TBLPTR;
128 typedef UINT32 ACPI_IO_ADDRESS;
129 typedef UINT64 ACPI_PHYSICAL_ADDRESS;
131 #define ALIGNED_ADDRESS_BOUNDARY 0x00000004
132 #define _HW_ALIGNMENT_SUPPORT
138 * Miscellaneous common types
141 typedef UINT32 UINT32_BIT;
142 typedef NATIVE_UINT ACPI_PTRDIFF;
143 typedef char NATIVE_CHAR;
150 #define ACPI_UINT8_MAX (UINT8) 0xFF
151 #define ACPI_UINT16_MAX (UINT16) 0xFFFF
152 #define ACPI_UINT32_MAX (UINT32) 0xFFFFFFFF
153 #define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFF
156 #ifdef DEFINE_ALTERNATE_TYPES
158 * Types used only in translated source
166 /*! [End] no source code translation !*/
176 #define FALSE (1 == 0)
181 #define TRUE (1 == 1)
184 #define NULL (void *) 0
192 typedef u32 ACPI_STATUS; /* All ACPI Exceptions */
193 typedef u32 ACPI_NAME; /* 4-s8 ACPI name */
194 typedef char* ACPI_STRING; /* Null terminated ASCII string */
195 typedef void* ACPI_HANDLE; /* Actually a ptr to an Node */
199 * Acpi integer width. In ACPI version 1, integers are
200 * 32 bits. In ACPI version 2, integers are 64 bits.
201 * Note that this pertains to the ACPI integer type only, not
202 * other integers used in the implementation of the ACPI CA
205 #ifdef ACPI_NO_INTEGER64_SUPPORT
207 /* 32-bit integers only, no 64-bit support */
209 typedef u32 ACPI_INTEGER;
210 #define ACPI_INTEGER_MAX ACPI_UINT32_MAX
211 #define ACPI_INTEGER_BIT_SIZE 32
212 #define ACPI_MAX_BCD_VALUE 99999999
213 #define ACPI_MAX_BCD_DIGITS 8
217 /* 64-bit integers */
219 typedef UINT64 ACPI_INTEGER;
220 #define ACPI_INTEGER_MAX ACPI_UINT64_MAX
221 #define ACPI_INTEGER_BIT_SIZE 64
222 #define ACPI_MAX_BCD_VALUE 9999999999999999
223 #define ACPI_MAX_BCD_DIGITS 16
229 * Constants with special meanings
232 #define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1)
234 #define ACPI_FULL_INITIALIZATION 0x00
235 #define ACPI_NO_ADDRESS_SPACE_INIT 0x01
236 #define ACPI_NO_HARDWARE_INIT 0x02
237 #define ACPI_NO_EVENT_INIT 0x04
238 #define ACPI_NO_ACPI_ENABLE 0x08
239 #define ACPI_NO_DEVICE_INIT 0x10
240 #define ACPI_NO_OBJECT_INIT 0x20
246 #define ACPI_STATE_S0 (u8) 0
247 #define ACPI_STATE_S1 (u8) 1
248 #define ACPI_STATE_S2 (u8) 2
249 #define ACPI_STATE_S3 (u8) 3
250 #define ACPI_STATE_S4 (u8) 4
251 #define ACPI_STATE_S5 (u8) 5
252 /* let's pretend S4_bIOS didn't exist for now. ASG */
253 #define ACPI_STATE_S4_bIOS (u8) 6
254 #define ACPI_S_STATES_MAX ACPI_STATE_S5
255 #define ACPI_S_STATE_COUNT 6
258 * Device power states
260 #define ACPI_STATE_D0 (u8) 0
261 #define ACPI_STATE_D1 (u8) 1
262 #define ACPI_STATE_D2 (u8) 2
263 #define ACPI_STATE_D3 (u8) 3
264 #define ACPI_D_STATES_MAX ACPI_STATE_D3
265 #define ACPI_D_STATE_COUNT 4
267 #define ACPI_STATE_UNKNOWN (u8) 0xFF
271 * Table types. These values are passed to the table related APIs
274 typedef u32 ACPI_TABLE_TYPE;
276 #define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0
277 #define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1
278 #define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2
279 #define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3
280 #define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4
281 #define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5
282 #define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6
283 #define ACPI_TABLE_MAX 6
284 #define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1)
288 * Types associated with names. The first group of
289 * values correspond to the definition of the ACPI
290 * Object_type operator (See the ACPI Spec). Therefore,
291 * only add to the first group if the spec changes!
293 * Types must be kept in sync with the Acpi_ns_properties
294 * and Acpi_ns_type_names arrays
297 typedef u32 ACPI_OBJECT_TYPE;
298 typedef u8 OBJECT_TYPE_INTERNAL;
300 #define ACPI_BTYPE_ANY 0x00000000
301 #define ACPI_BTYPE_INTEGER 0x00000001
302 #define ACPI_BTYPE_STRING 0x00000002
303 #define ACPI_BTYPE_BUFFER 0x00000004
304 #define ACPI_BTYPE_PACKAGE 0x00000008
305 #define ACPI_BTYPE_FIELD_UNIT 0x00000010
306 #define ACPI_BTYPE_DEVICE 0x00000020
307 #define ACPI_BTYPE_EVENT 0x00000040
308 #define ACPI_BTYPE_METHOD 0x00000080
309 #define ACPI_BTYPE_MUTEX 0x00000100
310 #define ACPI_BTYPE_REGION 0x00000200
311 #define ACPI_BTYPE_POWER 0x00000400
312 #define ACPI_BTYPE_PROCESSOR 0x00000800
313 #define ACPI_BTYPE_THERMAL 0x00001000
314 #define ACPI_BTYPE_BUFFER_FIELD 0x00002000
315 #define ACPI_BTYPE_DDB_HANDLE 0x00004000
316 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000
317 #define ACPI_BTYPE_REFERENCE 0x00010000
318 #define ACPI_BTYPE_RESOURCE 0x00020000
320 #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
322 #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE)
323 #define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
324 #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
325 #define ACPI_BTYPE_OBJECTS_AND_REFS 0x00017FFF /* ARG or LOCAL */
326 #define ACPI_BTYPE_ALL_OBJECTS 0x00007FFF
329 #define ACPI_TYPE_ANY 0 /* 0x00 */
330 #define ACPI_TYPE_INTEGER 1 /* 0x01 Byte/Word/Dword/Zero/One/Ones */
331 #define ACPI_TYPE_STRING 2 /* 0x02 */
332 #define ACPI_TYPE_BUFFER 3 /* 0x03 */
333 #define ACPI_TYPE_PACKAGE 4 /* 0x04 Byte_const, multiple Data_term/Constant/Super_name */
334 #define ACPI_TYPE_FIELD_UNIT 5 /* 0x05 */
335 #define ACPI_TYPE_DEVICE 6 /* 0x06 Name, multiple Node */
336 #define ACPI_TYPE_EVENT 7 /* 0x07 */
337 #define ACPI_TYPE_METHOD 8 /* 0x08 Name, Byte_const, multiple Code */
338 #define ACPI_TYPE_MUTEX 9 /* 0x09 */
339 #define ACPI_TYPE_REGION 10 /* 0x0A */
340 #define ACPI_TYPE_POWER 11 /* 0x0B Name,Byte_const,Word_const,multi Node */
341 #define ACPI_TYPE_PROCESSOR 12 /* 0x0C Name,Byte_const,DWord_const,Byte_const,multi Nm_o */
342 #define ACPI_TYPE_THERMAL 13 /* 0x0D Name, multiple Node */
343 #define ACPI_TYPE_BUFFER_FIELD 14 /* 0x0E */
344 #define ACPI_TYPE_DDB_HANDLE 15 /* 0x0F */
345 #define ACPI_TYPE_DEBUG_OBJECT 16 /* 0x10 */
347 #define ACPI_TYPE_MAX 16
350 * This section contains object types that do not relate to the ACPI Object_type operator.
351 * They are used for various internal purposes only. If new predefined ACPI_TYPEs are
352 * added (via the ACPI specification), these internal types must move upwards.
353 * Also, values exceeding the largest official ACPI Object_type must not overlap with
354 * defined AML opcodes.
356 #define INTERNAL_TYPE_BEGIN 17
358 #define INTERNAL_TYPE_DEF_FIELD 17 /* 0x11 */
359 #define INTERNAL_TYPE_BANK_FIELD 18 /* 0x12 */
360 #define INTERNAL_TYPE_INDEX_FIELD 19 /* 0x13 */
361 #define INTERNAL_TYPE_REFERENCE 20 /* 0x14 Arg#, Local#, Name, Debug; used only in descriptors */
362 #define INTERNAL_TYPE_ALIAS 21 /* 0x15 */
363 #define INTERNAL_TYPE_NOTIFY 22 /* 0x16 */
364 #define INTERNAL_TYPE_ADDRESS_HANDLER 23 /* 0x17 */
365 #define INTERNAL_TYPE_RESOURCE 24 /* 0x18 */
368 #define INTERNAL_TYPE_NODE_MAX 24
370 /* These are pseudo-types because there are never any namespace nodes with these types */
372 #define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, Byte_const, multiple Field_element */
373 #define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWord_const,Byte_const,multi Field_element */
374 #define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, Byte_const, multiple Field_element */
375 #define INTERNAL_TYPE_IF 28 /* 0x1C */
376 #define INTERNAL_TYPE_ELSE 29 /* 0x1D */
377 #define INTERNAL_TYPE_WHILE 30 /* 0x1E */
378 #define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */
379 #define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */
380 #define INTERNAL_TYPE_EXTRA 33 /* 0x21 */
382 #define INTERNAL_TYPE_MAX 33
384 #define INTERNAL_TYPE_INVALID 34
385 #define ACPI_TYPE_NOT_FOUND 0xFF
390 * Fixed & general purpose...
393 typedef u32 ACPI_EVENT_TYPE;
395 #define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0
396 #define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1
402 #define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0
404 * There's no bus master event so index 1 is used for IRQ's that are not
405 * handled by the SCI handler
407 #define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1
408 #define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2
409 #define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3
410 #define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4
411 #define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5
412 #define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6
413 #define ACPI_EVENT_MAX 6
414 #define NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7
416 #define ACPI_GPE_INVALID 0xFF
417 #define ACPI_GPE_MAX 0xFF
420 #define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1
421 #define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2
426 * The encoding of ACPI_EVENT_STATUS is illustrated below.
427 * Note that a set bit (1) indicates the property is TRUE
428 * (e.g. if bit 0 is set then the event is enabled).
429 * +---------------+-+-+
431 * +---------------+-+-+
435 * +----------- <Reserved>
437 typedef u32 ACPI_EVENT_STATUS;
439 #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00
440 #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01
441 #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02
446 #define ACPI_SYSTEM_NOTIFY 0
447 #define ACPI_DEVICE_NOTIFY 1
448 #define ACPI_MAX_NOTIFY_HANDLER_TYPE 1
450 #define MAX_SYS_NOTIFY 0x7f
453 /* Address Space (Operation Region) Types */
455 typedef u8 ACPI_ADDRESS_SPACE_TYPE;
457 #define ADDRESS_SPACE_SYSTEM_MEMORY (ACPI_ADDRESS_SPACE_TYPE) 0
458 #define ADDRESS_SPACE_SYSTEM_IO (ACPI_ADDRESS_SPACE_TYPE) 1
459 #define ADDRESS_SPACE_PCI_CONFIG (ACPI_ADDRESS_SPACE_TYPE) 2
460 #define ADDRESS_SPACE_EC (ACPI_ADDRESS_SPACE_TYPE) 3
461 #define ADDRESS_SPACE_SMBUS (ACPI_ADDRESS_SPACE_TYPE) 4
462 #define ADDRESS_SPACE_CMOS (ACPI_ADDRESS_SPACE_TYPE) 5
463 #define ADDRESS_SPACE_PCI_BAR_TARGET (ACPI_ADDRESS_SPACE_TYPE) 6
467 * External ACPI object definition
470 typedef union acpi_obj
472 ACPI_OBJECT_TYPE type; /* See definition of Acpi_ns_type for values */
475 ACPI_OBJECT_TYPE type;
476 ACPI_INTEGER value; /* The actual number */
481 ACPI_OBJECT_TYPE type;
482 u32 length; /* # of bytes in string, excluding trailing null */
483 NATIVE_CHAR *pointer; /* points to the string value */
488 ACPI_OBJECT_TYPE type;
489 u32 length; /* # of bytes in buffer */
490 u8 *pointer; /* points to the buffer */
495 ACPI_OBJECT_TYPE type;
497 ACPI_HANDLE handle; /* object reference */
502 ACPI_OBJECT_TYPE type;
503 u32 count; /* # of elements in package */
504 union acpi_obj *elements; /* Pointer to an array of ACPI_OBJECTs */
509 ACPI_OBJECT_TYPE type;
511 ACPI_IO_ADDRESS pblk_address;
517 ACPI_OBJECT_TYPE type;
522 } ACPI_OBJECT, *PACPI_OBJECT;
526 * List of objects, used as a parameter list for control method evaluation
529 typedef struct acpi_obj_list
532 ACPI_OBJECT *pointer;
534 } ACPI_OBJECT_LIST, *PACPI_OBJECT_LIST;
538 * Miscellaneous common Data Structures used by the interfaces
543 u32 length; /* Length in bytes of the buffer */
544 void *pointer; /* pointer to buffer */
550 * Name_type for Acpi_get_name
553 #define ACPI_FULL_PATHNAME 0
554 #define ACPI_SINGLE_NAME 1
555 #define ACPI_NAME_TYPE_MAX 1
559 * Structure and flags for Acpi_get_system_info
562 #define SYS_MODE_UNKNOWN 0x0000
563 #define SYS_MODE_ACPI 0x0001
564 #define SYS_MODE_LEGACY 0x0002
565 #define SYS_MODES_MASK 0x0003
568 * ACPI CPU Cx state handler
571 ACPI_STATUS (*ACPI_SET_C_STATE_HANDLER) (
572 NATIVE_UINT pblk_address);
584 * ACPI CPU throttling info
589 u32 percent_of_clock;
590 } ACPI_CPU_THROTTLING_STATE;
593 * ACPI Table Info. One per ACPI table _type_
595 typedef struct acpi_table_info
603 * System info returned by Acpi_get_system_info()
606 typedef struct _acpi_sys_info
610 u32 timer_resolution;
616 ACPI_TABLE_INFO table_info [NUM_ACPI_TABLES];
622 * System Initiailization data. This data is passed to ACPIInitialize
623 * copyied to global data and retained by ACPI CA
626 typedef struct _acpi_init_data
628 void *RSDP_physical_address; /* Address of RSDP, needed it it is */
629 /* not found in the IA32 manner */
633 * Various handlers and callback procedures
637 u32 (*FIXED_EVENT_HANDLER) (
641 void (*GPE_HANDLER) (
645 void (*NOTIFY_HANDLER) (
650 #define ADDRESS_SPACE_READ 1
651 #define ADDRESS_SPACE_WRITE 2
654 ACPI_STATUS (*ADDRESS_SPACE_HANDLER) (
656 ACPI_PHYSICAL_ADDRESS address,
659 void *handler_context,
660 void *region_context);
662 #define ACPI_DEFAULT_HANDLER ((ADDRESS_SPACE_HANDLER) NULL)
666 ACPI_STATUS (*ADDRESS_SPACE_SETUP) (
667 ACPI_HANDLE region_handle,
669 void *handler_context,
670 void **region_context);
672 #define ACPI_REGION_ACTIVATE 0
673 #define ACPI_REGION_DEACTIVATE 1
676 ACPI_STATUS (*WALK_CALLBACK) (
677 ACPI_HANDLE obj_handle,
680 void **return_value);
683 /* Interrupt handler return values */
685 #define INTERRUPT_NOT_HANDLED 0x00
686 #define INTERRUPT_HANDLED 0x01
689 /* Structure and flags for Acpi_get_device_info */
691 #define ACPI_VALID_HID 0x1
692 #define ACPI_VALID_UID 0x2
693 #define ACPI_VALID_ADR 0x4
694 #define ACPI_VALID_STA 0x8
697 #define ACPI_COMMON_OBJ_INFO \
698 ACPI_OBJECT_TYPE type; /* ACPI object type */ \
699 ACPI_NAME name /* ACPI object Name */
704 ACPI_COMMON_OBJ_INFO;
705 } ACPI_OBJ_INFO_HEADER;
710 ACPI_COMMON_OBJ_INFO;
712 u32 valid; /* Are the next bits legit? */
713 NATIVE_CHAR hardware_id [9]; /* _HID value if any */
714 NATIVE_CHAR unique_id[9]; /* _UID value if any */
715 ACPI_INTEGER address; /* _ADR value if any */
716 u32 current_status; /* _STA value */
720 /* Context structs for address space handlers */
727 } PCI_HANDLER_CONTEXT;
732 ACPI_PHYSICAL_ADDRESS mapped_physical_address;
733 u8 *mapped_logical_address;
735 } MEM_HANDLER_CONTEXT;
742 typedef ACPI_STATUS (*ACPI_C_STATE_HANDLER) (ACPI_IO_ADDRESS, u32*);
746 * Definitions for Resource Attributes
752 #define READ_ONLY_MEMORY (u8) 0x00
753 #define READ_WRITE_MEMORY (u8) 0x01
755 #define NON_CACHEABLE_MEMORY (u8) 0x00
756 #define CACHABLE_MEMORY (u8) 0x01
757 #define WRITE_COMBINING_MEMORY (u8) 0x02
758 #define PREFETCHABLE_MEMORY (u8) 0x03
762 * The ISA IO ranges are: n000-n0FFh, n400-n4_fFh, n800-n8_fFh, n_c00-n_cFFh.
763 * The non-ISA IO ranges are: n100-n3_fFh, n500-n7_fFh, n900-n_bFFh, n_cD0-n_fFFh.
765 #define NON_ISA_ONLY_RANGES (u8) 0x01
766 #define ISA_ONLY_RANGES (u8) 0x02
767 #define ENTIRE_RANGE (NON_ISA_ONLY_RANGES | ISA_ONLY_RANGES)
770 * IO Port Descriptor Decode
772 #define DECODE_10 (u8) 0x00 /* 10-bit IO address decode */
773 #define DECODE_16 (u8) 0x01 /* 16-bit IO address decode */
778 #define EDGE_SENSITIVE (u8) 0x00
779 #define LEVEL_SENSITIVE (u8) 0x01
781 #define ACTIVE_HIGH (u8) 0x00
782 #define ACTIVE_LOW (u8) 0x01
784 #define EXCLUSIVE (u8) 0x00
785 #define SHARED (u8) 0x01
790 #define COMPATIBILITY (u8) 0x00
791 #define TYPE_A (u8) 0x01
792 #define TYPE_B (u8) 0x02
793 #define TYPE_F (u8) 0x03
795 #define NOT_BUS_MASTER (u8) 0x00
796 #define BUS_MASTER (u8) 0x01
798 #define TRANSFER_8 (u8) 0x00
799 #define TRANSFER_8_16 (u8) 0x01
800 #define TRANSFER_16 (u8) 0x02
803 * Start Dependent Functions Priority definitions
805 #define GOOD_CONFIGURATION (u8) 0x00
806 #define ACCEPTABLE_CONFIGURATION (u8) 0x01
807 #define SUB_OPTIMAL_CONFIGURATION (u8) 0x02
810 * 16, 32 and 64-bit Address Descriptor resource types
812 #define MEMORY_RANGE (u8) 0x00
813 #define IO_RANGE (u8) 0x01
814 #define BUS_NUMBER_RANGE (u8) 0x02
816 #define ADDRESS_NOT_FIXED (u8) 0x00
817 #define ADDRESS_FIXED (u8) 0x01
819 #define POS_DECODE (u8) 0x00
820 #define SUB_DECODE (u8) 0x01
822 #define PRODUCER (u8) 0x00
823 #define CONSUMER (u8) 0x01
827 * Structures used to describe device resources
833 u32 shared_exclusive;
834 u32 number_of_interrupts;
844 u32 number_of_channels;
851 u32 compatibility_priority;
852 u32 performance_robustness;
854 } START_DEPENDENT_FUNCTIONS_RESOURCE;
857 * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
858 * needed because it has no fields
864 u32 min_base_address;
865 u32 max_base_address;
887 u32 read_write_attribute;
888 u32 min_base_address;
889 u32 max_base_address;
897 u32 read_write_attribute;
898 u32 min_base_address;
899 u32 max_base_address;
907 u32 read_write_attribute;
908 u32 range_base_address;
911 } FIXED_MEMORY32_RESOURCE;
916 u16 read_write_attribute;
936 MEMORY_ATTRIBUTE memory;
945 u32 producer_consumer;
947 u32 min_address_fixed;
948 u32 max_address_fixed;
949 ATTRIBUTE_DATA attribute;
951 u32 min_address_range;
952 u32 max_address_range;
953 u32 address_translation_offset;
955 u32 resource_source_index;
956 u32 resource_source_string_length;
957 NATIVE_CHAR resource_source[1];
959 } ADDRESS16_RESOURCE;
964 u32 producer_consumer;
966 u32 min_address_fixed;
967 u32 max_address_fixed;
968 ATTRIBUTE_DATA attribute;
970 u32 min_address_range;
971 u32 max_address_range;
972 u32 address_translation_offset;
974 u32 resource_source_index;
975 u32 resource_source_string_length;
976 NATIVE_CHAR resource_source[1];
978 } ADDRESS32_RESOURCE;
982 u32 producer_consumer;
985 u32 shared_exclusive;
986 u32 number_of_interrupts;
988 u32 resource_source_index;
989 u32 resource_source_string_length;
990 NATIVE_CHAR resource_source[1];
992 } EXTENDED_IRQ_RESOURCE;
998 start_dependent_functions,
999 end_dependent_functions,
1016 START_DEPENDENT_FUNCTIONS_RESOURCE start_dependent_functions;
1018 FIXED_IO_RESOURCE fixed_io;
1019 VENDOR_RESOURCE vendor_specific;
1020 MEMORY24_RESOURCE memory24;
1021 MEMORY32_RESOURCE memory32;
1022 FIXED_MEMORY32_RESOURCE fixed_memory32;
1023 ADDRESS16_RESOURCE address16;
1024 ADDRESS32_RESOURCE address32;
1025 EXTENDED_IRQ_RESOURCE extended_irq;
1028 typedef struct _resource_tag
1035 #define RESOURCE_LENGTH 12
1036 #define RESOURCE_LENGTH_NO_DATA 8
1038 #define NEXT_RESOURCE(res) (RESOURCE*)((u8*) res + res->length)
1041 * END: Definitions for Resource Attributes
1045 typedef struct pci_routing_table
1049 ACPI_INTEGER address; /* here for 64-bit alignment */
1051 NATIVE_CHAR source[4]; /* pad to 64 bits so sizeof() works in all cases */
1053 } PCI_ROUTING_TABLE;
1057 * END: Definitions for PCI Routing tables
1060 #endif /* __ACTYPES_H__ */