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
160 #ifdef DEFINE_ALTERNATE_TYPES
162 * Types used only in translated source
170 /*! [End] no source code translation !*/
180 #define FALSE (1 == 0)
185 #define TRUE (1 == 1)
188 #define NULL (void *) 0
196 typedef u32 ACPI_STATUS
; /* All ACPI Exceptions */
197 typedef u32 ACPI_NAME
; /* 4-s8 ACPI name */
198 typedef char* ACPI_STRING
; /* Null terminated ASCII string */
199 typedef void* ACPI_HANDLE
; /* Actually a ptr to an Node */
203 * Acpi integer width. In ACPI version 1, integers are
204 * 32 bits. In ACPI version 2, integers are 64 bits.
205 * Note that this pertains to the ACPI integer type only, not
206 * other integers used in the implementation of the ACPI CA
209 #ifdef ACPI_NO_INTEGER64_SUPPORT
211 /* 32-bit integers only, no 64-bit support */
213 typedef u32 ACPI_INTEGER
;
214 #define ACPI_INTEGER_MAX ACPI_UINT32_MAX
215 #define ACPI_INTEGER_BIT_SIZE 32
216 #define ACPI_MAX_BCD_VALUE 99999999
217 #define ACPI_MAX_BCD_DIGITS 8
221 /* 64-bit integers */
223 typedef UINT64 ACPI_INTEGER
;
224 #define ACPI_INTEGER_MAX ACPI_UINT64_MAX
225 #define ACPI_INTEGER_BIT_SIZE 64
227 #define ACPI_MAX_BCD_VALUE 9999999999999999ULL
229 #define ACPI_MAX_BCD_VALUE 9999999999999999
231 #define ACPI_MAX_BCD_DIGITS 16
237 * Constants with special meanings
240 #define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1)
242 #define ACPI_FULL_INITIALIZATION 0x00
243 #define ACPI_NO_ADDRESS_SPACE_INIT 0x01
244 #define ACPI_NO_HARDWARE_INIT 0x02
245 #define ACPI_NO_EVENT_INIT 0x04
246 #define ACPI_NO_ACPI_ENABLE 0x08
247 #define ACPI_NO_DEVICE_INIT 0x10
248 #define ACPI_NO_OBJECT_INIT 0x20
254 #define ACPI_STATE_S0 (u8) 0
255 #define ACPI_STATE_S1 (u8) 1
256 #define ACPI_STATE_S2 (u8) 2
257 #define ACPI_STATE_S3 (u8) 3
258 #define ACPI_STATE_S4 (u8) 4
259 #define ACPI_STATE_S5 (u8) 5
260 /* let's pretend S4_bIOS didn't exist for now. ASG */
261 #define ACPI_STATE_S4_bIOS (u8) 6
262 #define ACPI_S_STATES_MAX ACPI_STATE_S5
263 #define ACPI_S_STATE_COUNT 6
266 * Device power states
268 #define ACPI_STATE_D0 (u8) 0
269 #define ACPI_STATE_D1 (u8) 1
270 #define ACPI_STATE_D2 (u8) 2
271 #define ACPI_STATE_D3 (u8) 3
272 #define ACPI_D_STATES_MAX ACPI_STATE_D3
273 #define ACPI_D_STATE_COUNT 4
275 #define ACPI_STATE_UNKNOWN (u8) 0xFF
279 * Table types. These values are passed to the table related APIs
282 typedef u32 ACPI_TABLE_TYPE
;
284 #define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0
285 #define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1
286 #define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2
287 #define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3
288 #define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4
289 #define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5
290 #define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6
291 #define ACPI_TABLE_MAX 6
292 #define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1)
296 * Types associated with names. The first group of
297 * values correspond to the definition of the ACPI
298 * Object_type operator (See the ACPI Spec). Therefore,
299 * only add to the first group if the spec changes!
301 * Types must be kept in sync with the Acpi_ns_properties
302 * and Acpi_ns_type_names arrays
305 typedef u32 ACPI_OBJECT_TYPE
;
306 typedef u8 OBJECT_TYPE_INTERNAL
;
308 #define ACPI_BTYPE_ANY 0x00000000
309 #define ACPI_BTYPE_INTEGER 0x00000001
310 #define ACPI_BTYPE_STRING 0x00000002
311 #define ACPI_BTYPE_BUFFER 0x00000004
312 #define ACPI_BTYPE_PACKAGE 0x00000008
313 #define ACPI_BTYPE_FIELD_UNIT 0x00000010
314 #define ACPI_BTYPE_DEVICE 0x00000020
315 #define ACPI_BTYPE_EVENT 0x00000040
316 #define ACPI_BTYPE_METHOD 0x00000080
317 #define ACPI_BTYPE_MUTEX 0x00000100
318 #define ACPI_BTYPE_REGION 0x00000200
319 #define ACPI_BTYPE_POWER 0x00000400
320 #define ACPI_BTYPE_PROCESSOR 0x00000800
321 #define ACPI_BTYPE_THERMAL 0x00001000
322 #define ACPI_BTYPE_BUFFER_FIELD 0x00002000
323 #define ACPI_BTYPE_DDB_HANDLE 0x00004000
324 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000
325 #define ACPI_BTYPE_REFERENCE 0x00010000
326 #define ACPI_BTYPE_RESOURCE 0x00020000
328 #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
330 #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE)
331 #define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
332 #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
333 #define ACPI_BTYPE_OBJECTS_AND_REFS 0x00017FFF /* ARG or LOCAL */
334 #define ACPI_BTYPE_ALL_OBJECTS 0x00007FFF
337 #define ACPI_TYPE_ANY 0 /* 0x00 */
338 #define ACPI_TYPE_INTEGER 1 /* 0x01 Byte/Word/Dword/Zero/One/Ones */
339 #define ACPI_TYPE_STRING 2 /* 0x02 */
340 #define ACPI_TYPE_BUFFER 3 /* 0x03 */
341 #define ACPI_TYPE_PACKAGE 4 /* 0x04 Byte_const, multiple Data_term/Constant/Super_name */
342 #define ACPI_TYPE_FIELD_UNIT 5 /* 0x05 */
343 #define ACPI_TYPE_DEVICE 6 /* 0x06 Name, multiple Node */
344 #define ACPI_TYPE_EVENT 7 /* 0x07 */
345 #define ACPI_TYPE_METHOD 8 /* 0x08 Name, Byte_const, multiple Code */
346 #define ACPI_TYPE_MUTEX 9 /* 0x09 */
347 #define ACPI_TYPE_REGION 10 /* 0x0A */
348 #define ACPI_TYPE_POWER 11 /* 0x0B Name,Byte_const,Word_const,multi Node */
349 #define ACPI_TYPE_PROCESSOR 12 /* 0x0C Name,Byte_const,DWord_const,Byte_const,multi Nm_o */
350 #define ACPI_TYPE_THERMAL 13 /* 0x0D Name, multiple Node */
351 #define ACPI_TYPE_BUFFER_FIELD 14 /* 0x0E */
352 #define ACPI_TYPE_DDB_HANDLE 15 /* 0x0F */
353 #define ACPI_TYPE_DEBUG_OBJECT 16 /* 0x10 */
355 #define ACPI_TYPE_MAX 16
358 * This section contains object types that do not relate to the ACPI Object_type operator.
359 * They are used for various internal purposes only. If new predefined ACPI_TYPEs are
360 * added (via the ACPI specification), these internal types must move upwards.
361 * Also, values exceeding the largest official ACPI Object_type must not overlap with
362 * defined AML opcodes.
364 #define INTERNAL_TYPE_BEGIN 17
366 #define INTERNAL_TYPE_DEF_FIELD 17 /* 0x11 */
367 #define INTERNAL_TYPE_BANK_FIELD 18 /* 0x12 */
368 #define INTERNAL_TYPE_INDEX_FIELD 19 /* 0x13 */
369 #define INTERNAL_TYPE_REFERENCE 20 /* 0x14 Arg#, Local#, Name, Debug; used only in descriptors */
370 #define INTERNAL_TYPE_ALIAS 21 /* 0x15 */
371 #define INTERNAL_TYPE_NOTIFY 22 /* 0x16 */
372 #define INTERNAL_TYPE_ADDRESS_HANDLER 23 /* 0x17 */
373 #define INTERNAL_TYPE_RESOURCE 24 /* 0x18 */
376 #define INTERNAL_TYPE_NODE_MAX 24
378 /* These are pseudo-types because there are never any namespace nodes with these types */
380 #define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, Byte_const, multiple Field_element */
381 #define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWord_const,Byte_const,multi Field_element */
382 #define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, Byte_const, multiple Field_element */
383 #define INTERNAL_TYPE_IF 28 /* 0x1C */
384 #define INTERNAL_TYPE_ELSE 29 /* 0x1D */
385 #define INTERNAL_TYPE_WHILE 30 /* 0x1E */
386 #define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */
387 #define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */
388 #define INTERNAL_TYPE_EXTRA 33 /* 0x21 */
390 #define INTERNAL_TYPE_MAX 33
392 #define INTERNAL_TYPE_INVALID 34
393 #define ACPI_TYPE_NOT_FOUND 0xFF
398 * Fixed & general purpose...
401 typedef u32 ACPI_EVENT_TYPE
;
403 #define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0
404 #define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1
410 #define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0
412 * There's no bus master event so index 1 is used for IRQ's that are not
413 * handled by the SCI handler
415 #define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1
416 #define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2
417 #define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3
418 #define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4
419 #define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5
420 #define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6
421 #define ACPI_EVENT_MAX 6
422 #define NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7
424 #define ACPI_GPE_INVALID 0xFF
425 #define ACPI_GPE_MAX 0xFF
428 #define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1
429 #define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2
434 * The encoding of ACPI_EVENT_STATUS is illustrated below.
435 * Note that a set bit (1) indicates the property is TRUE
436 * (e.g. if bit 0 is set then the event is enabled).
437 * +---------------+-+-+
439 * +---------------+-+-+
443 * +----------- <Reserved>
445 typedef u32 ACPI_EVENT_STATUS
;
447 #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00
448 #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01
449 #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02
454 #define ACPI_SYSTEM_NOTIFY 0
455 #define ACPI_DEVICE_NOTIFY 1
456 #define ACPI_MAX_NOTIFY_HANDLER_TYPE 1
458 #define MAX_SYS_NOTIFY 0x7f
461 /* Address Space (Operation Region) Types */
463 typedef u8 ACPI_ADDRESS_SPACE_TYPE
;
465 #define ADDRESS_SPACE_SYSTEM_MEMORY (ACPI_ADDRESS_SPACE_TYPE) 0
466 #define ADDRESS_SPACE_SYSTEM_IO (ACPI_ADDRESS_SPACE_TYPE) 1
467 #define ADDRESS_SPACE_PCI_CONFIG (ACPI_ADDRESS_SPACE_TYPE) 2
468 #define ADDRESS_SPACE_EC (ACPI_ADDRESS_SPACE_TYPE) 3
469 #define ADDRESS_SPACE_SMBUS (ACPI_ADDRESS_SPACE_TYPE) 4
470 #define ADDRESS_SPACE_CMOS (ACPI_ADDRESS_SPACE_TYPE) 5
471 #define ADDRESS_SPACE_PCI_BAR_TARGET (ACPI_ADDRESS_SPACE_TYPE) 6
475 * External ACPI object definition
478 typedef union acpi_obj
480 ACPI_OBJECT_TYPE type
; /* See definition of Acpi_ns_type for values */
483 ACPI_OBJECT_TYPE type
;
484 ACPI_INTEGER value
; /* The actual number */
489 ACPI_OBJECT_TYPE type
;
490 u32 length
; /* # of bytes in string, excluding trailing null */
491 NATIVE_CHAR
*pointer
; /* points to the string value */
496 ACPI_OBJECT_TYPE type
;
497 u32 length
; /* # of bytes in buffer */
498 u8
*pointer
; /* points to the buffer */
503 ACPI_OBJECT_TYPE type
;
505 ACPI_HANDLE handle
; /* object reference */
510 ACPI_OBJECT_TYPE type
;
511 u32 count
; /* # of elements in package */
512 union acpi_obj
*elements
; /* Pointer to an array of ACPI_OBJECTs */
517 ACPI_OBJECT_TYPE type
;
519 ACPI_IO_ADDRESS pblk_address
;
525 ACPI_OBJECT_TYPE type
;
530 } ACPI_OBJECT
, *PACPI_OBJECT
;
534 * List of objects, used as a parameter list for control method evaluation
537 typedef struct acpi_obj_list
540 ACPI_OBJECT
*pointer
;
542 } ACPI_OBJECT_LIST
, *PACPI_OBJECT_LIST
;
546 * Miscellaneous common Data Structures used by the interfaces
551 u32 length
; /* Length in bytes of the buffer */
552 void *pointer
; /* pointer to buffer */
558 * Name_type for Acpi_get_name
561 #define ACPI_FULL_PATHNAME 0
562 #define ACPI_SINGLE_NAME 1
563 #define ACPI_NAME_TYPE_MAX 1
567 * Structure and flags for Acpi_get_system_info
570 #define SYS_MODE_UNKNOWN 0x0000
571 #define SYS_MODE_ACPI 0x0001
572 #define SYS_MODE_LEGACY 0x0002
573 #define SYS_MODES_MASK 0x0003
576 * ACPI CPU Cx state handler
579 ACPI_STATUS (*ACPI_SET_C_STATE_HANDLER
) (
580 NATIVE_UINT pblk_address
);
592 * ACPI CPU throttling info
597 u32 percent_of_clock
;
598 } ACPI_CPU_THROTTLING_STATE
;
601 * ACPI Table Info. One per ACPI table _type_
603 typedef struct acpi_table_info
611 * System info returned by Acpi_get_system_info()
614 typedef struct _acpi_sys_info
618 u32 timer_resolution
;
624 ACPI_TABLE_INFO table_info
[NUM_ACPI_TABLES
];
630 * System Initiailization data. This data is passed to ACPIInitialize
631 * copyied to global data and retained by ACPI CA
634 typedef struct _acpi_init_data
636 void *RSDP_physical_address
; /* Address of RSDP, needed it it is */
637 /* not found in the IA32 manner */
641 * Various handlers and callback procedures
645 u32 (*FIXED_EVENT_HANDLER
) (
649 void (*GPE_HANDLER
) (
653 void (*NOTIFY_HANDLER
) (
658 #define ADDRESS_SPACE_READ 1
659 #define ADDRESS_SPACE_WRITE 2
662 ACPI_STATUS (*ADDRESS_SPACE_HANDLER
) (
664 ACPI_PHYSICAL_ADDRESS address
,
667 void *handler_context
,
668 void *region_context
);
670 #define ACPI_DEFAULT_HANDLER ((ADDRESS_SPACE_HANDLER) NULL)
674 ACPI_STATUS (*ADDRESS_SPACE_SETUP
) (
675 ACPI_HANDLE region_handle
,
677 void *handler_context
,
678 void **region_context
);
680 #define ACPI_REGION_ACTIVATE 0
681 #define ACPI_REGION_DEACTIVATE 1
684 ACPI_STATUS (*WALK_CALLBACK
) (
685 ACPI_HANDLE obj_handle
,
688 void **return_value
);
691 /* Interrupt handler return values */
693 #define INTERRUPT_NOT_HANDLED 0x00
694 #define INTERRUPT_HANDLED 0x01
697 /* Structure and flags for Acpi_get_device_info */
699 #define ACPI_VALID_HID 0x1
700 #define ACPI_VALID_UID 0x2
701 #define ACPI_VALID_ADR 0x4
702 #define ACPI_VALID_STA 0x8
705 #define ACPI_COMMON_OBJ_INFO \
706 ACPI_OBJECT_TYPE type; /* ACPI object type */ \
707 ACPI_NAME name /* ACPI object Name */
712 ACPI_COMMON_OBJ_INFO
;
713 } ACPI_OBJ_INFO_HEADER
;
718 ACPI_COMMON_OBJ_INFO
;
720 u32 valid
; /* Are the next bits legit? */
721 NATIVE_CHAR hardware_id
[9]; /* _HID value if any */
722 NATIVE_CHAR unique_id
[9]; /* _UID value if any */
723 ACPI_INTEGER address
; /* _ADR value if any */
724 u32 current_status
; /* _STA value */
728 /* Context structs for address space handlers */
735 } PCI_HANDLER_CONTEXT
;
740 ACPI_PHYSICAL_ADDRESS mapped_physical_address
;
741 u8
*mapped_logical_address
;
743 } MEM_HANDLER_CONTEXT
;
750 typedef ACPI_STATUS (*ACPI_C_STATE_HANDLER
) (ACPI_IO_ADDRESS
, u32
*);
754 * Definitions for Resource Attributes
760 #define READ_ONLY_MEMORY (u8) 0x00
761 #define READ_WRITE_MEMORY (u8) 0x01
763 #define NON_CACHEABLE_MEMORY (u8) 0x00
764 #define CACHABLE_MEMORY (u8) 0x01
765 #define WRITE_COMBINING_MEMORY (u8) 0x02
766 #define PREFETCHABLE_MEMORY (u8) 0x03
770 * The ISA IO ranges are: n000-n0FFh, n400-n4_fFh, n800-n8_fFh, n_c00-n_cFFh.
771 * The non-ISA IO ranges are: n100-n3_fFh, n500-n7_fFh, n900-n_bFFh, n_cD0-n_fFFh.
773 #define NON_ISA_ONLY_RANGES (u8) 0x01
774 #define ISA_ONLY_RANGES (u8) 0x02
775 #define ENTIRE_RANGE (NON_ISA_ONLY_RANGES | ISA_ONLY_RANGES)
778 * IO Port Descriptor Decode
780 #define DECODE_10 (u8) 0x00 /* 10-bit IO address decode */
781 #define DECODE_16 (u8) 0x01 /* 16-bit IO address decode */
786 #define EDGE_SENSITIVE (u8) 0x00
787 #define LEVEL_SENSITIVE (u8) 0x01
789 #define ACTIVE_HIGH (u8) 0x00
790 #define ACTIVE_LOW (u8) 0x01
792 #define EXCLUSIVE (u8) 0x00
793 #define SHARED (u8) 0x01
798 #define COMPATIBILITY (u8) 0x00
799 #define TYPE_A (u8) 0x01
800 #define TYPE_B (u8) 0x02
801 #define TYPE_F (u8) 0x03
803 #define NOT_BUS_MASTER (u8) 0x00
804 #define BUS_MASTER (u8) 0x01
806 #define TRANSFER_8 (u8) 0x00
807 #define TRANSFER_8_16 (u8) 0x01
808 #define TRANSFER_16 (u8) 0x02
811 * Start Dependent Functions Priority definitions
813 #define GOOD_CONFIGURATION (u8) 0x00
814 #define ACCEPTABLE_CONFIGURATION (u8) 0x01
815 #define SUB_OPTIMAL_CONFIGURATION (u8) 0x02
818 * 16, 32 and 64-bit Address Descriptor resource types
820 #define MEMORY_RANGE (u8) 0x00
821 #define IO_RANGE (u8) 0x01
822 #define BUS_NUMBER_RANGE (u8) 0x02
824 #define ADDRESS_NOT_FIXED (u8) 0x00
825 #define ADDRESS_FIXED (u8) 0x01
827 #define POS_DECODE (u8) 0x00
828 #define SUB_DECODE (u8) 0x01
830 #define PRODUCER (u8) 0x00
831 #define CONSUMER (u8) 0x01
835 * Structures used to describe device resources
841 u32 shared_exclusive
;
842 u32 number_of_interrupts
;
852 u32 number_of_channels
;
859 u32 compatibility_priority
;
860 u32 performance_robustness
;
862 } START_DEPENDENT_FUNCTIONS_RESOURCE
;
865 * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
866 * needed because it has no fields
872 u32 min_base_address
;
873 u32 max_base_address
;
895 u32 read_write_attribute
;
896 u32 min_base_address
;
897 u32 max_base_address
;
905 u32 read_write_attribute
;
906 u32 min_base_address
;
907 u32 max_base_address
;
915 u32 read_write_attribute
;
916 u32 range_base_address
;
919 } FIXED_MEMORY32_RESOURCE
;
924 u16 read_write_attribute
;
944 MEMORY_ATTRIBUTE memory
;
953 u32 producer_consumer
;
955 u32 min_address_fixed
;
956 u32 max_address_fixed
;
957 ATTRIBUTE_DATA attribute
;
959 u32 min_address_range
;
960 u32 max_address_range
;
961 u32 address_translation_offset
;
963 u32 resource_source_index
;
964 u32 resource_source_string_length
;
965 NATIVE_CHAR resource_source
[1];
967 } ADDRESS16_RESOURCE
;
972 u32 producer_consumer
;
974 u32 min_address_fixed
;
975 u32 max_address_fixed
;
976 ATTRIBUTE_DATA attribute
;
978 u32 min_address_range
;
979 u32 max_address_range
;
980 u32 address_translation_offset
;
982 u32 resource_source_index
;
983 u32 resource_source_string_length
;
984 NATIVE_CHAR resource_source
[1];
986 } ADDRESS32_RESOURCE
;
990 u32 producer_consumer
;
993 u32 shared_exclusive
;
994 u32 number_of_interrupts
;
996 u32 resource_source_index
;
997 u32 resource_source_string_length
;
998 NATIVE_CHAR resource_source
[1];
1000 } EXTENDED_IRQ_RESOURCE
;
1006 start_dependent_functions
,
1007 end_dependent_functions
,
1024 START_DEPENDENT_FUNCTIONS_RESOURCE start_dependent_functions
;
1026 FIXED_IO_RESOURCE fixed_io
;
1027 VENDOR_RESOURCE vendor_specific
;
1028 MEMORY24_RESOURCE memory24
;
1029 MEMORY32_RESOURCE memory32
;
1030 FIXED_MEMORY32_RESOURCE fixed_memory32
;
1031 ADDRESS16_RESOURCE address16
;
1032 ADDRESS32_RESOURCE address32
;
1033 EXTENDED_IRQ_RESOURCE extended_irq
;
1036 typedef struct _resource_tag
1043 #define RESOURCE_LENGTH 12
1044 #define RESOURCE_LENGTH_NO_DATA 8
1046 #define NEXT_RESOURCE(res) (RESOURCE*)((u8*) res + res->length)
1049 * END: Definitions for Resource Attributes
1053 typedef struct pci_routing_table
1057 ACPI_INTEGER address
; /* here for 64-bit alignment */
1059 NATIVE_CHAR source
[4]; /* pad to 64 bits so sizeof() works in all cases */
1061 } PCI_ROUTING_TABLE
;
1065 * END: Definitions for PCI Routing tables
1068 #endif /* __ACTYPES_H__ */