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
154 #define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFFULL
156 #define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFF
159 #ifdef DEFINE_ALTERNATE_TYPES
161 * Types used only in translated source
169 /*! [End] no source code translation !*/
179 #define FALSE (1 == 0)
184 #define TRUE (1 == 1)
187 #define NULL (void *) 0
195 typedef ULONGLONG u64
;
199 typedef LONGLONG s64
;
205 typedef u32 ACPI_STATUS
; /* All ACPI Exceptions */
206 typedef u32 ACPI_NAME
; /* 4-s8 ACPI name */
207 typedef char* ACPI_STRING
; /* Null terminated ASCII string */
208 typedef void* ACPI_HANDLE
; /* Actually a ptr to an Node */
212 * Acpi integer width. In ACPI version 1, integers are
213 * 32 bits. In ACPI version 2, integers are 64 bits.
214 * Note that this pertains to the ACPI integer type only, not
215 * other integers used in the implementation of the ACPI CA
218 #ifdef ACPI_NO_INTEGER64_SUPPORT
220 /* 32-bit integers only, no 64-bit support */
222 typedef u32 ACPI_INTEGER
;
223 #define ACPI_INTEGER_MAX ACPI_UINT32_MAX
224 #define ACPI_INTEGER_BIT_SIZE 32
225 #define ACPI_MAX_BCD_VALUE 99999999
226 #define ACPI_MAX_BCD_DIGITS 8
230 /* 64-bit integers */
232 typedef UINT64 ACPI_INTEGER
;
233 #define ACPI_INTEGER_MAX ACPI_UINT64_MAX
234 #define ACPI_INTEGER_BIT_SIZE 64
236 #define ACPI_MAX_BCD_VALUE 9999999999999999ULL
238 #define ACPI_MAX_BCD_VALUE 9999999999999999
240 #define ACPI_MAX_BCD_DIGITS 16
246 * Constants with special meanings
249 #define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1)
251 #define ACPI_FULL_INITIALIZATION 0x00
252 #define ACPI_NO_ADDRESS_SPACE_INIT 0x01
253 #define ACPI_NO_HARDWARE_INIT 0x02
254 #define ACPI_NO_EVENT_INIT 0x04
255 #define ACPI_NO_ACPI_ENABLE 0x08
256 #define ACPI_NO_DEVICE_INIT 0x10
257 #define ACPI_NO_OBJECT_INIT 0x20
263 #define ACPI_STATE_S0 (u8) 0
264 #define ACPI_STATE_S1 (u8) 1
265 #define ACPI_STATE_S2 (u8) 2
266 #define ACPI_STATE_S3 (u8) 3
267 #define ACPI_STATE_S4 (u8) 4
268 #define ACPI_STATE_S5 (u8) 5
269 /* let's pretend S4_bIOS didn't exist for now. ASG */
270 #define ACPI_STATE_S4_bIOS (u8) 6
271 #define ACPI_S_STATES_MAX ACPI_STATE_S5
272 #define ACPI_S_STATE_COUNT 6
275 * Device power states
277 #define ACPI_STATE_D0 (u8) 0
278 #define ACPI_STATE_D1 (u8) 1
279 #define ACPI_STATE_D2 (u8) 2
280 #define ACPI_STATE_D3 (u8) 3
281 #define ACPI_D_STATES_MAX ACPI_STATE_D3
282 #define ACPI_D_STATE_COUNT 4
284 #define ACPI_STATE_UNKNOWN (u8) 0xFF
288 * Table types. These values are passed to the table related APIs
291 typedef u32 ACPI_TABLE_TYPE
;
293 #define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0
294 #define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1
295 #define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2
296 #define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3
297 #define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4
298 #define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5
299 #define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6
300 #define ACPI_TABLE_MAX 6
301 #define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1)
305 * Types associated with names. The first group of
306 * values correspond to the definition of the ACPI
307 * Object_type operator (See the ACPI Spec). Therefore,
308 * only add to the first group if the spec changes!
310 * Types must be kept in sync with the Acpi_ns_properties
311 * and Acpi_ns_type_names arrays
314 typedef u32 ACPI_OBJECT_TYPE
;
315 typedef u8 OBJECT_TYPE_INTERNAL
;
317 #define ACPI_BTYPE_ANY 0x00000000
318 #define ACPI_BTYPE_INTEGER 0x00000001
319 #define ACPI_BTYPE_STRING 0x00000002
320 #define ACPI_BTYPE_BUFFER 0x00000004
321 #define ACPI_BTYPE_PACKAGE 0x00000008
322 #define ACPI_BTYPE_FIELD_UNIT 0x00000010
323 #define ACPI_BTYPE_DEVICE 0x00000020
324 #define ACPI_BTYPE_EVENT 0x00000040
325 #define ACPI_BTYPE_METHOD 0x00000080
326 #define ACPI_BTYPE_MUTEX 0x00000100
327 #define ACPI_BTYPE_REGION 0x00000200
328 #define ACPI_BTYPE_POWER 0x00000400
329 #define ACPI_BTYPE_PROCESSOR 0x00000800
330 #define ACPI_BTYPE_THERMAL 0x00001000
331 #define ACPI_BTYPE_BUFFER_FIELD 0x00002000
332 #define ACPI_BTYPE_DDB_HANDLE 0x00004000
333 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000
334 #define ACPI_BTYPE_REFERENCE 0x00010000
335 #define ACPI_BTYPE_RESOURCE 0x00020000
337 #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
339 #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE)
340 #define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
341 #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
342 #define ACPI_BTYPE_OBJECTS_AND_REFS 0x00017FFF /* ARG or LOCAL */
343 #define ACPI_BTYPE_ALL_OBJECTS 0x00007FFF
346 #define ACPI_TYPE_ANY 0 /* 0x00 */
347 #define ACPI_TYPE_INTEGER 1 /* 0x01 Byte/Word/Dword/Zero/One/Ones */
348 #define ACPI_TYPE_STRING 2 /* 0x02 */
349 #define ACPI_TYPE_BUFFER 3 /* 0x03 */
350 #define ACPI_TYPE_PACKAGE 4 /* 0x04 Byte_const, multiple Data_term/Constant/Super_name */
351 #define ACPI_TYPE_FIELD_UNIT 5 /* 0x05 */
352 #define ACPI_TYPE_DEVICE 6 /* 0x06 Name, multiple Node */
353 #define ACPI_TYPE_EVENT 7 /* 0x07 */
354 #define ACPI_TYPE_METHOD 8 /* 0x08 Name, Byte_const, multiple Code */
355 #define ACPI_TYPE_MUTEX 9 /* 0x09 */
356 #define ACPI_TYPE_REGION 10 /* 0x0A */
357 #define ACPI_TYPE_POWER 11 /* 0x0B Name,Byte_const,Word_const,multi Node */
358 #define ACPI_TYPE_PROCESSOR 12 /* 0x0C Name,Byte_const,DWord_const,Byte_const,multi Nm_o */
359 #define ACPI_TYPE_THERMAL 13 /* 0x0D Name, multiple Node */
360 #define ACPI_TYPE_BUFFER_FIELD 14 /* 0x0E */
361 #define ACPI_TYPE_DDB_HANDLE 15 /* 0x0F */
362 #define ACPI_TYPE_DEBUG_OBJECT 16 /* 0x10 */
364 #define ACPI_TYPE_MAX 16
367 * This section contains object types that do not relate to the ACPI Object_type operator.
368 * They are used for various internal purposes only. If new predefined ACPI_TYPEs are
369 * added (via the ACPI specification), these internal types must move upwards.
370 * Also, values exceeding the largest official ACPI Object_type must not overlap with
371 * defined AML opcodes.
373 #define INTERNAL_TYPE_BEGIN 17
375 #define INTERNAL_TYPE_DEF_FIELD 17 /* 0x11 */
376 #define INTERNAL_TYPE_BANK_FIELD 18 /* 0x12 */
377 #define INTERNAL_TYPE_INDEX_FIELD 19 /* 0x13 */
378 #define INTERNAL_TYPE_REFERENCE 20 /* 0x14 Arg#, Local#, Name, Debug; used only in descriptors */
379 #define INTERNAL_TYPE_ALIAS 21 /* 0x15 */
380 #define INTERNAL_TYPE_NOTIFY 22 /* 0x16 */
381 #define INTERNAL_TYPE_ADDRESS_HANDLER 23 /* 0x17 */
382 #define INTERNAL_TYPE_RESOURCE 24 /* 0x18 */
385 #define INTERNAL_TYPE_NODE_MAX 24
387 /* These are pseudo-types because there are never any namespace nodes with these types */
389 #define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, Byte_const, multiple Field_element */
390 #define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWord_const,Byte_const,multi Field_element */
391 #define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, Byte_const, multiple Field_element */
392 #define INTERNAL_TYPE_IF 28 /* 0x1C */
393 #define INTERNAL_TYPE_ELSE 29 /* 0x1D */
394 #define INTERNAL_TYPE_WHILE 30 /* 0x1E */
395 #define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */
396 #define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */
397 #define INTERNAL_TYPE_EXTRA 33 /* 0x21 */
399 #define INTERNAL_TYPE_MAX 33
401 #define INTERNAL_TYPE_INVALID 34
402 #define ACPI_TYPE_NOT_FOUND 0xFF
407 * Fixed & general purpose...
410 typedef u32 ACPI_EVENT_TYPE
;
412 #define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0
413 #define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1
419 #define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0
421 * There's no bus master event so index 1 is used for IRQ's that are not
422 * handled by the SCI handler
424 #define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1
425 #define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2
426 #define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3
427 #define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4
428 #define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5
429 #define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6
430 #define ACPI_EVENT_MAX 6
431 #define NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7
433 #define ACPI_GPE_INVALID 0xFF
434 #define ACPI_GPE_MAX 0xFF
437 #define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1
438 #define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2
443 * The encoding of ACPI_EVENT_STATUS is illustrated below.
444 * Note that a set bit (1) indicates the property is TRUE
445 * (e.g. if bit 0 is set then the event is enabled).
446 * +---------------+-+-+
448 * +---------------+-+-+
452 * +----------- <Reserved>
454 typedef u32 ACPI_EVENT_STATUS
;
456 #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00
457 #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01
458 #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02
463 #define ACPI_SYSTEM_NOTIFY 0
464 #define ACPI_DEVICE_NOTIFY 1
465 #define ACPI_MAX_NOTIFY_HANDLER_TYPE 1
467 #define MAX_SYS_NOTIFY 0x7f
470 /* Address Space (Operation Region) Types */
472 typedef u8 ACPI_ADDRESS_SPACE_TYPE
;
474 #define ADDRESS_SPACE_SYSTEM_MEMORY (ACPI_ADDRESS_SPACE_TYPE) 0
475 #define ADDRESS_SPACE_SYSTEM_IO (ACPI_ADDRESS_SPACE_TYPE) 1
476 #define ADDRESS_SPACE_PCI_CONFIG (ACPI_ADDRESS_SPACE_TYPE) 2
477 #define ADDRESS_SPACE_EC (ACPI_ADDRESS_SPACE_TYPE) 3
478 #define ADDRESS_SPACE_SMBUS (ACPI_ADDRESS_SPACE_TYPE) 4
479 #define ADDRESS_SPACE_CMOS (ACPI_ADDRESS_SPACE_TYPE) 5
480 #define ADDRESS_SPACE_PCI_BAR_TARGET (ACPI_ADDRESS_SPACE_TYPE) 6
484 * External ACPI object definition
487 typedef union acpi_obj
489 ACPI_OBJECT_TYPE type
; /* See definition of Acpi_ns_type for values */
492 ACPI_OBJECT_TYPE type
;
493 ACPI_INTEGER value
; /* The actual number */
498 ACPI_OBJECT_TYPE type
;
499 u32 length
; /* # of bytes in string, excluding trailing null */
500 NATIVE_CHAR
*pointer
; /* points to the string value */
505 ACPI_OBJECT_TYPE type
;
506 u32 length
; /* # of bytes in buffer */
507 u8
*pointer
; /* points to the buffer */
512 ACPI_OBJECT_TYPE type
;
514 ACPI_HANDLE handle
; /* object reference */
519 ACPI_OBJECT_TYPE type
;
520 u32 count
; /* # of elements in package */
521 union acpi_obj
*elements
; /* Pointer to an array of ACPI_OBJECTs */
526 ACPI_OBJECT_TYPE type
;
528 ACPI_IO_ADDRESS pblk_address
;
534 ACPI_OBJECT_TYPE type
;
539 } ACPI_OBJECT
, *PACPI_OBJECT
;
543 * List of objects, used as a parameter list for control method evaluation
546 typedef struct acpi_obj_list
549 ACPI_OBJECT
*pointer
;
551 } ACPI_OBJECT_LIST
, *PACPI_OBJECT_LIST
;
555 * Miscellaneous common Data Structures used by the interfaces
560 u32 length
; /* Length in bytes of the buffer */
561 void *pointer
; /* pointer to buffer */
567 * Name_type for Acpi_get_name
570 #define ACPI_FULL_PATHNAME 0
571 #define ACPI_SINGLE_NAME 1
572 #define ACPI_NAME_TYPE_MAX 1
576 * Structure and flags for Acpi_get_system_info
579 #define SYS_MODE_UNKNOWN 0x0000
580 #define SYS_MODE_ACPI 0x0001
581 #define SYS_MODE_LEGACY 0x0002
582 #define SYS_MODES_MASK 0x0003
585 * ACPI CPU Cx state handler
588 ACPI_STATUS (*ACPI_SET_C_STATE_HANDLER
) (
589 NATIVE_UINT pblk_address
);
601 * ACPI CPU throttling info
606 u32 percent_of_clock
;
607 } ACPI_CPU_THROTTLING_STATE
;
610 * ACPI Table Info. One per ACPI table _type_
612 typedef struct acpi_table_info
620 * System info returned by Acpi_get_system_info()
623 typedef struct _acpi_sys_info
627 u32 timer_resolution
;
633 ACPI_TABLE_INFO table_info
[NUM_ACPI_TABLES
];
639 * System Initiailization data. This data is passed to ACPIInitialize
640 * copyied to global data and retained by ACPI CA
643 typedef struct _acpi_init_data
645 void *RSDP_physical_address
; /* Address of RSDP, needed it it is */
646 /* not found in the IA32 manner */
650 * Various handlers and callback procedures
654 u32 (*FIXED_EVENT_HANDLER
) (
658 void (*GPE_HANDLER
) (
662 void (*NOTIFY_HANDLER
) (
667 #define ADDRESS_SPACE_READ 1
668 #define ADDRESS_SPACE_WRITE 2
671 ACPI_STATUS (*ADDRESS_SPACE_HANDLER
) (
673 ACPI_PHYSICAL_ADDRESS address
,
676 void *handler_context
,
677 void *region_context
);
679 #define ACPI_DEFAULT_HANDLER ((ADDRESS_SPACE_HANDLER) NULL)
683 ACPI_STATUS (*ADDRESS_SPACE_SETUP
) (
684 ACPI_HANDLE region_handle
,
686 void *handler_context
,
687 void **region_context
);
689 #define ACPI_REGION_ACTIVATE 0
690 #define ACPI_REGION_DEACTIVATE 1
693 ACPI_STATUS (*WALK_CALLBACK
) (
694 ACPI_HANDLE obj_handle
,
697 void **return_value
);
700 /* Interrupt handler return values */
702 #define INTERRUPT_NOT_HANDLED 0x00
703 #define INTERRUPT_HANDLED 0x01
706 /* Structure and flags for Acpi_get_device_info */
708 #define ACPI_VALID_HID 0x1
709 #define ACPI_VALID_UID 0x2
710 #define ACPI_VALID_ADR 0x4
711 #define ACPI_VALID_STA 0x8
714 #define ACPI_COMMON_OBJ_INFO \
715 ACPI_OBJECT_TYPE type; /* ACPI object type */ \
716 ACPI_NAME name /* ACPI object Name */
721 ACPI_COMMON_OBJ_INFO
;
722 } ACPI_OBJ_INFO_HEADER
;
727 ACPI_COMMON_OBJ_INFO
;
729 u32 valid
; /* Are the next bits legit? */
730 NATIVE_CHAR hardware_id
[9]; /* _HID value if any */
731 NATIVE_CHAR unique_id
[9]; /* _UID value if any */
732 ACPI_INTEGER address
; /* _ADR value if any */
733 u32 current_status
; /* _STA value */
737 /* Context structs for address space handlers */
744 } PCI_HANDLER_CONTEXT
;
749 ACPI_PHYSICAL_ADDRESS mapped_physical_address
;
750 u8
*mapped_logical_address
;
752 } MEM_HANDLER_CONTEXT
;
759 typedef ACPI_STATUS (*ACPI_C_STATE_HANDLER
) (ACPI_IO_ADDRESS
, u32
*);
763 * Definitions for Resource Attributes
769 #define READ_ONLY_MEMORY (u8) 0x00
770 #define READ_WRITE_MEMORY (u8) 0x01
772 #define NON_CACHEABLE_MEMORY (u8) 0x00
773 #define CACHABLE_MEMORY (u8) 0x01
774 #define WRITE_COMBINING_MEMORY (u8) 0x02
775 #define PREFETCHABLE_MEMORY (u8) 0x03
779 * The ISA IO ranges are: n000-n0FFh, n400-n4_fFh, n800-n8_fFh, n_c00-n_cFFh.
780 * The non-ISA IO ranges are: n100-n3_fFh, n500-n7_fFh, n900-n_bFFh, n_cD0-n_fFFh.
782 #define NON_ISA_ONLY_RANGES (u8) 0x01
783 #define ISA_ONLY_RANGES (u8) 0x02
784 #define ENTIRE_RANGE (NON_ISA_ONLY_RANGES | ISA_ONLY_RANGES)
787 * IO Port Descriptor Decode
789 #define DECODE_10 (u8) 0x00 /* 10-bit IO address decode */
790 #define DECODE_16 (u8) 0x01 /* 16-bit IO address decode */
795 #define EDGE_SENSITIVE (u8) 0x00
796 #define LEVEL_SENSITIVE (u8) 0x01
798 #define ACTIVE_HIGH (u8) 0x00
799 #define ACTIVE_LOW (u8) 0x01
801 #define EXCLUSIVE (u8) 0x00
802 #define SHARED (u8) 0x01
807 #define COMPATIBILITY (u8) 0x00
808 #define TYPE_A (u8) 0x01
809 #define TYPE_B (u8) 0x02
810 #define TYPE_F (u8) 0x03
812 #define NOT_BUS_MASTER (u8) 0x00
813 #define BUS_MASTER (u8) 0x01
815 #define TRANSFER_8 (u8) 0x00
816 #define TRANSFER_8_16 (u8) 0x01
817 #define TRANSFER_16 (u8) 0x02
820 * Start Dependent Functions Priority definitions
822 #define GOOD_CONFIGURATION (u8) 0x00
823 #define ACCEPTABLE_CONFIGURATION (u8) 0x01
824 #define SUB_OPTIMAL_CONFIGURATION (u8) 0x02
827 * 16, 32 and 64-bit Address Descriptor resource types
829 #define MEMORY_RANGE (u8) 0x00
830 #define IO_RANGE (u8) 0x01
831 #define BUS_NUMBER_RANGE (u8) 0x02
833 #define ADDRESS_NOT_FIXED (u8) 0x00
834 #define ADDRESS_FIXED (u8) 0x01
836 #define POS_DECODE (u8) 0x00
837 #define SUB_DECODE (u8) 0x01
839 #define PRODUCER (u8) 0x00
840 #define CONSUMER (u8) 0x01
844 * Structures used to describe device resources
850 u32 shared_exclusive
;
851 u32 number_of_interrupts
;
861 u32 number_of_channels
;
868 u32 compatibility_priority
;
869 u32 performance_robustness
;
871 } START_DEPENDENT_FUNCTIONS_RESOURCE
;
874 * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
875 * needed because it has no fields
881 u32 min_base_address
;
882 u32 max_base_address
;
904 u32 read_write_attribute
;
905 u32 min_base_address
;
906 u32 max_base_address
;
914 u32 read_write_attribute
;
915 u32 min_base_address
;
916 u32 max_base_address
;
924 u32 read_write_attribute
;
925 u32 range_base_address
;
928 } FIXED_MEMORY32_RESOURCE
;
933 u16 read_write_attribute
;
953 MEMORY_ATTRIBUTE memory
;
962 u32 producer_consumer
;
964 u32 min_address_fixed
;
965 u32 max_address_fixed
;
966 ATTRIBUTE_DATA attribute
;
968 u32 min_address_range
;
969 u32 max_address_range
;
970 u32 address_translation_offset
;
972 u32 resource_source_index
;
973 u32 resource_source_string_length
;
974 NATIVE_CHAR resource_source
[1];
976 } ADDRESS16_RESOURCE
;
981 u32 producer_consumer
;
983 u32 min_address_fixed
;
984 u32 max_address_fixed
;
985 ATTRIBUTE_DATA attribute
;
987 u32 min_address_range
;
988 u32 max_address_range
;
989 u32 address_translation_offset
;
991 u32 resource_source_index
;
992 u32 resource_source_string_length
;
993 NATIVE_CHAR resource_source
[1];
995 } ADDRESS32_RESOURCE
;
999 u32 producer_consumer
;
1001 u32 active_high_low
;
1002 u32 shared_exclusive
;
1003 u32 number_of_interrupts
;
1005 u32 resource_source_index
;
1006 u32 resource_source_string_length
;
1007 NATIVE_CHAR resource_source
[1];
1009 } EXTENDED_IRQ_RESOURCE
;
1015 start_dependent_functions
,
1016 end_dependent_functions
,
1033 START_DEPENDENT_FUNCTIONS_RESOURCE start_dependent_functions
;
1035 FIXED_IO_RESOURCE fixed_io
;
1036 VENDOR_RESOURCE vendor_specific
;
1037 MEMORY24_RESOURCE memory24
;
1038 MEMORY32_RESOURCE memory32
;
1039 FIXED_MEMORY32_RESOURCE fixed_memory32
;
1040 ADDRESS16_RESOURCE address16
;
1041 ADDRESS32_RESOURCE address32
;
1042 EXTENDED_IRQ_RESOURCE extended_irq
;
1045 typedef struct _resource_tag
1052 #define RESOURCE_LENGTH 12
1053 #define RESOURCE_LENGTH_NO_DATA 8
1055 #define NEXT_RESOURCE(res) (RESOURCE*)((u8*) res + res->length)
1058 * END: Definitions for Resource Attributes
1062 typedef struct pci_routing_table
1066 ACPI_INTEGER address
; /* here for 64-bit alignment */
1068 NATIVE_CHAR source
[4]; /* pad to 64 bits so sizeof() works in all cases */
1070 } PCI_ROUTING_TABLE
;
1074 * END: Definitions for PCI Routing tables
1077 #endif /* __ACTYPES_H__ */