summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/acpi/acconfig.h7
-rw-r--r--include/acpi/acdebug.h17
-rw-r--r--include/acpi/acdisasm.h406
-rw-r--r--include/acpi/acevents.h2
-rw-r--r--include/acpi/acexcep.h6
-rw-r--r--include/acpi/acglobal.h20
-rw-r--r--include/acpi/achware.h6
-rw-r--r--include/acpi/aclocal.h29
-rw-r--r--include/acpi/acmacros.h20
-rw-r--r--include/acpi/acnamesp.h5
-rw-r--r--include/acpi/acobject.h12
-rw-r--r--include/acpi/acpi_bus.h1
-rw-r--r--include/acpi/acpiosxf.h4
-rw-r--r--include/acpi/acpixf.h4
-rw-r--r--include/acpi/actables.h10
-rw-r--r--include/acpi/actypes.h50
-rw-r--r--include/acpi/acutils.h2
-rw-r--r--include/acpi/amlresrc.h329
-rw-r--r--include/linux/ide.h5
-rw-r--r--include/linux/pci_ids.h4
20 files changed, 840 insertions, 99 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h
index f7532f979c7f..3fda218d6de3 100644
--- a/include/acpi/acconfig.h
+++ b/include/acpi/acconfig.h
@@ -64,7 +64,7 @@
/* Version string */
-#define ACPI_CA_VERSION 0x20030418
+#define ACPI_CA_VERSION 0x20030522
/* Maximum objects in the various object caches */
@@ -133,6 +133,11 @@
#define ACPI_MAX_STRING_CONVERSION 200
+/* Length of _HID, _UID, and _CID values */
+
+#define ACPI_DEVICE_ID_LENGTH 0x09
+#define ACPI_MAX_CID_LENGTH 48
+
/*
* Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG
*/
diff --git a/include/acpi/acdebug.h b/include/acpi/acdebug.h
index 65c18eba57a6..60cf6eac7a07 100644
--- a/include/acpi/acdebug.h
+++ b/include/acpi/acdebug.h
@@ -230,10 +230,6 @@ acpi_db_decode_and_display_object (
char *output_type);
void
-acpi_db_decode_node (
- struct acpi_namespace_node *node);
-
-void
acpi_db_display_result_object (
union acpi_operand_object *obj_desc,
struct acpi_walk_state *walk_state);
@@ -243,11 +239,6 @@ acpi_db_display_all_methods (
char *display_count_arg);
void
-acpi_db_display_internal_object (
- union acpi_operand_object *obj_desc,
- struct acpi_walk_state *walk_state);
-
-void
acpi_db_display_arguments (
void);
@@ -264,6 +255,10 @@ acpi_db_display_calling_tree (
void);
void
+acpi_db_display_object_type (
+ char *object_arg);
+
+void
acpi_db_display_argument_object (
union acpi_operand_object *obj_desc,
struct acpi_walk_state *walk_state);
@@ -276,10 +271,6 @@ void *
acpi_db_get_pointer (
void *target);
-void
-acpi_db_decode_internal_object (
- union acpi_operand_object *obj_desc);
-
/*
* dbexec - debugger control method execution
diff --git a/include/acpi/acdisasm.h b/include/acpi/acdisasm.h
new file mode 100644
index 000000000000..e2938c593e2c
--- /dev/null
+++ b/include/acpi/acdisasm.h
@@ -0,0 +1,406 @@
+/******************************************************************************
+ *
+ * Name: acdisasm.h - AML disassembler
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2003, R. Byron Moore
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#ifndef __ACDISASM_H__
+#define __ACDISASM_H__
+
+#include "amlresrc.h"
+
+
+#define BLOCK_NONE 0
+#define BLOCK_PAREN 1
+#define BLOCK_BRACE 2
+#define BLOCK_COMMA_LIST 4
+
+extern const char *acpi_gbl_io_decode[2];
+extern const char *acpi_gbl_word_decode[4];
+extern const char *acpi_gbl_consume_decode[2];
+extern const char *acpi_gbl_min_decode[2];
+extern const char *acpi_gbl_max_decode[2];
+extern const char *acpi_gbl_DECdecode[2];
+extern const char *acpi_gbl_RNGdecode[4];
+extern const char *acpi_gbl_MEMdecode[4];
+extern const char *acpi_gbl_RWdecode[2];
+extern const char *acpi_gbl_irq_decode[2];
+extern const char *acpi_gbl_HEdecode[2];
+extern const char *acpi_gbl_LLdecode[2];
+extern const char *acpi_gbl_SHRdecode[2];
+extern const char *acpi_gbl_TYPdecode[4];
+extern const char *acpi_gbl_BMdecode[2];
+extern const char *acpi_gbl_SIZdecode[4];
+extern const char *acpi_gbl_lock_rule[ACPI_NUM_LOCK_RULES];
+extern const char *acpi_gbl_access_types[ACPI_NUM_ACCESS_TYPES];
+extern const char *acpi_gbl_update_rules[ACPI_NUM_UPDATE_RULES];
+extern const char *acpi_gbl_match_ops[ACPI_NUM_MATCH_OPS];
+
+
+struct acpi_op_walk_info
+{
+ u32 level;
+ u32 bit_offset;
+};
+
+typedef
+acpi_status (*asl_walk_callback) (
+ union acpi_parse_object *op,
+ u32 level,
+ void *context);
+
+
+/*
+ * dmwalk
+ */
+
+void
+acpi_dm_walk_parse_tree (
+ union acpi_parse_object *op,
+ asl_walk_callback descending_callback,
+ asl_walk_callback ascending_callback,
+ void *context);
+
+acpi_status
+acpi_dm_descending_op (
+ union acpi_parse_object *op,
+ u32 level,
+ void *context);
+
+acpi_status
+acpi_dm_ascending_op (
+ union acpi_parse_object *op,
+ u32 level,
+ void *context);
+
+
+/*
+ * dmopcode
+ */
+
+void
+acpi_dm_validate_name (
+ char *name,
+ union acpi_parse_object *op);
+
+u32
+acpi_dm_dump_name (
+ char *name);
+
+void
+acpi_dm_unicode (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_disassemble (
+ struct acpi_walk_state *walk_state,
+ union acpi_parse_object *origin,
+ u32 num_opcodes);
+
+void
+acpi_dm_namestring (
+ char *name);
+
+void
+acpi_dm_display_path (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_disassemble_one_op (
+ struct acpi_walk_state *walk_state,
+ struct acpi_op_walk_info *info,
+ union acpi_parse_object *op);
+
+void
+acpi_dm_decode_internal_object (
+ union acpi_operand_object *obj_desc);
+
+void
+acpi_dm_decode_node (
+ struct acpi_namespace_node *node);
+
+u32
+acpi_dm_block_type (
+ union acpi_parse_object *op);
+
+u32
+acpi_dm_list_type (
+ union acpi_parse_object *op);
+
+acpi_status
+acpi_ps_display_object_pathname (
+ struct acpi_walk_state *walk_state,
+ union acpi_parse_object *op);
+
+void
+acpi_dm_method_flags (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_field_flags (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_address_space (
+ u8 space_id);
+
+void
+acpi_dm_region_flags (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_match_op (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_match_keyword (
+ union acpi_parse_object *op);
+
+u8
+acpi_dm_comma_if_list_member (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_comma_if_field_member (
+ union acpi_parse_object *op);
+
+
+/*
+ * dmobject
+ */
+
+void
+acpi_dm_decode_node (
+ struct acpi_namespace_node *node);
+
+void
+acpi_dm_display_internal_object (
+ union acpi_operand_object *obj_desc,
+ struct acpi_walk_state *walk_state);
+
+void
+acpi_dm_display_arguments (
+ struct acpi_walk_state *walk_state);
+
+void
+acpi_dm_display_locals (
+ struct acpi_walk_state *walk_state);
+
+void
+acpi_dm_dump_method_info (
+ acpi_status status,
+ struct acpi_walk_state *walk_state,
+ union acpi_parse_object *op);
+
+
+/*
+ * dmbuffer
+ */
+
+void
+acpi_is_eisa_id (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_eisa_id (
+ u32 encoded_id);
+
+u8
+acpi_dm_is_unicode_buffer (
+ union acpi_parse_object *op);
+
+u8
+acpi_dm_is_string_buffer (
+ union acpi_parse_object *op);
+
+
+/*
+ * dmresrc
+ */
+
+void
+acpi_dm_disasm_byte_list (
+ u32 level,
+ u8 *byte_data,
+ u32 byte_count);
+
+void
+acpi_dm_byte_list (
+ struct acpi_op_walk_info *info,
+ union acpi_parse_object *op);
+
+void
+acpi_dm_resource_descriptor (
+ struct acpi_op_walk_info *info,
+ u8 *byte_data,
+ u32 byte_count);
+
+u8
+acpi_dm_is_resource_descriptor (
+ union acpi_parse_object *op);
+
+void
+acpi_dm_indent (
+ u32 level);
+
+void
+acpi_dm_bit_list (
+ u16 mask);
+
+void
+acpi_dm_decode_attribute (
+ u8 attribute);
+
+/*
+ * dmresrcl
+ */
+
+void
+acpi_dm_io_flags (
+ u8 flags);
+
+void
+acpi_dm_memory_flags (
+ u8 flags,
+ u8 specific_flags);
+
+void
+acpi_dm_word_descriptor (
+ struct asl_word_address_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_dword_descriptor (
+ struct asl_dword_address_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_qword_descriptor (
+ struct asl_qword_address_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_memory24_descriptor (
+ struct asl_memory_24_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_memory32_descriptor (
+ struct asl_memory_32_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_fixed_mem32_descriptor (
+ struct asl_fixed_memory_32_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_generic_register_descriptor (
+ struct asl_general_register_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_interrupt_descriptor (
+ struct asl_extended_xrupt_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_vendor_large_descriptor (
+ struct asl_large_vendor_desc *resource,
+ u32 length,
+ u32 level);
+
+
+/*
+ * dmresrcs
+ */
+
+void
+acpi_dm_irq_descriptor (
+ struct asl_irq_format_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_dma_descriptor (
+ struct asl_dma_format_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_io_descriptor (
+ struct asl_io_port_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_fixed_io_descriptor (
+ struct asl_fixed_io_port_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_start_dependent_descriptor (
+ struct asl_start_dependent_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_end_dependent_descriptor (
+ struct asl_start_dependent_desc *resource,
+ u32 length,
+ u32 level);
+
+void
+acpi_dm_vendor_small_descriptor (
+ struct asl_small_vendor_desc *resource,
+ u32 length,
+ u32 level);
+
+
+#endif /* __ACDISASM_H__ */
diff --git a/include/acpi/acevents.h b/include/acpi/acevents.h
index f23360115e83..38664422c555 100644
--- a/include/acpi/acevents.h
+++ b/include/acpi/acevents.h
@@ -165,7 +165,7 @@ acpi_ev_address_space_dispatch (
void *value);
acpi_status
-acpi_ev_addr_handler_helper (
+acpi_ev_install_handler (
acpi_handle obj_handle,
u32 level,
void *context,
diff --git a/include/acpi/acexcep.h b/include/acpi/acexcep.h
index cc0bb192980c..d225bdd2b9b9 100644
--- a/include/acpi/acexcep.h
+++ b/include/acpi/acexcep.h
@@ -94,8 +94,9 @@
#define AE_NO_GLOBAL_LOCK (acpi_status) (0x001A | AE_CODE_ENVIRONMENTAL)
#define AE_LOGICAL_ADDRESS (acpi_status) (0x001B | AE_CODE_ENVIRONMENTAL)
#define AE_ABORT_METHOD (acpi_status) (0x001C | AE_CODE_ENVIRONMENTAL)
+#define AE_SAME_HANDLER (acpi_status) (0x001D | AE_CODE_ENVIRONMENTAL)
-#define AE_CODE_ENV_MAX 0x001C
+#define AE_CODE_ENV_MAX 0x001D
/*
* Programmer exceptions
@@ -219,7 +220,8 @@ char const *acpi_gbl_exception_names_env[] =
"AE_NO_HARDWARE_RESPONSE",
"AE_NO_GLOBAL_LOCK",
"AE_LOGICAL_ADDRESS",
- "AE_ABORT_METHOD"
+ "AE_ABORT_METHOD",
+ "AE_SAME_HANDLER"
};
char const *acpi_gbl_exception_names_pgm[] =
diff --git a/include/acpi/acglobal.h b/include/acpi/acglobal.h
index 55f7eb9b7140..254d11a7ac5e 100644
--- a/include/acpi/acglobal.h
+++ b/include/acpi/acglobal.h
@@ -105,6 +105,8 @@ ACPI_EXTERN struct acpi_common_facs acpi_gbl_common_fACS;
*/
ACPI_EXTERN u8 acpi_gbl_integer_bit_width;
ACPI_EXTERN u8 acpi_gbl_integer_byte_width;
+ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable;
+ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable;
/*
* Since there may be multiple SSDTs and PSDTS, a single pointer is not
@@ -115,15 +117,15 @@ ACPI_EXTERN u8 acpi_gbl_integer_byte_width;
/*
* ACPI Table info arrays
*/
-extern struct acpi_table_desc acpi_gbl_acpi_tables[NUM_ACPI_TABLES];
-extern struct acpi_table_support acpi_gbl_acpi_table_data[NUM_ACPI_TABLES];
+extern struct acpi_table_list acpi_gbl_table_lists[NUM_ACPI_TABLE_TYPES];
+extern struct acpi_table_support acpi_gbl_table_data[NUM_ACPI_TABLE_TYPES];
/*
* Predefined mutex objects. This array contains the
* actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs.
* (The table maps local handles to the real OS handles)
*/
-ACPI_EXTERN struct acpi_mutex_info acpi_gbl_acpi_mutex_info [NUM_MTX];
+ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[NUM_MUTEX];
/*****************************************************************************
@@ -134,8 +136,8 @@ ACPI_EXTERN struct acpi_mutex_info acpi_gbl_acpi_mutex_info [NUM_MT
ACPI_EXTERN struct acpi_memory_list acpi_gbl_memory_lists[ACPI_NUM_MEM_LISTS];
-ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_drv_notify;
-ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_sys_notify;
+ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_device_notify;
+ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_system_notify;
ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler;
ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk;
ACPI_EXTERN acpi_handle acpi_gbl_global_lock_semaphore;
@@ -200,7 +202,7 @@ ACPI_EXTERN u32 acpi_gbl_deepest_nesting;
****************************************************************************/
-ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list;
+ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list;
/* Control method single step flag */
@@ -213,7 +215,7 @@ ACPI_EXTERN u8 acpi_gbl_cm_single_step;
*
****************************************************************************/
-ACPI_EXTERN union acpi_parse_object *acpi_gbl_parsed_namespace_root;
+ACPI_EXTERN union acpi_parse_object *acpi_gbl_parsed_namespace_root;
/*****************************************************************************
*
@@ -234,8 +236,8 @@ ACPI_EXTERN u8 acpi_gbl_sleep_type_b;
extern struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS];
ACPI_EXTERN struct acpi_fixed_event_handler acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
-ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head;
-ACPI_EXTERN struct acpi_gpe_block_info *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS];
+ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head;
+ACPI_EXTERN struct acpi_gpe_block_info *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS];
ACPI_EXTERN acpi_handle acpi_gbl_gpe_lock;
diff --git a/include/acpi/achware.h b/include/acpi/achware.h
index 1d34e757d11f..4be6958950e6 100644
--- a/include/acpi/achware.h
+++ b/include/acpi/achware.h
@@ -98,15 +98,13 @@ acpi_status
acpi_hw_low_level_read (
u32 width,
u32 *value,
- struct acpi_generic_address *reg,
- u32 offset);
+ struct acpi_generic_address *reg);
acpi_status
acpi_hw_low_level_write (
u32 width,
u32 value,
- struct acpi_generic_address *reg,
- u32 offset);
+ struct acpi_generic_address *reg);
acpi_status
acpi_hw_clear_acpi_status (
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h
index fffbddc8f532..d0387af6169d 100644
--- a/include/acpi/aclocal.h
+++ b/include/acpi/aclocal.h
@@ -87,8 +87,8 @@ typedef u32 acpi_mutex_handle;
#define ACPI_MTX_DEBUG_CMD_COMPLETE 11
#define ACPI_MTX_DEBUG_CMD_READY 12
-#define MAX_MTX 12
-#define NUM_MTX MAX_MTX+1
+#define MAX_MUTEX 12
+#define NUM_MUTEX MAX_MUTEX+1
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
@@ -140,12 +140,8 @@ struct acpi_mutex_info
typedef u16 acpi_owner_id;
#define ACPI_OWNER_TYPE_TABLE 0x0
#define ACPI_OWNER_TYPE_METHOD 0x1
-#define ACPI_FIRST_METHOD_ID 0x0000
-#define ACPI_FIRST_TABLE_ID 0x8000
-
-/* TBD: [Restructure] get rid of the need for this! */
-
-#define TABLE_ID_DSDT (acpi_owner_id) 0x8000
+#define ACPI_FIRST_METHOD_ID 0x0001
+#define ACPI_FIRST_TABLE_ID 0xF000
/* Field access granularities */
@@ -232,13 +228,18 @@ struct acpi_table_desc
u64 physical_address;
u32 aml_length;
acpi_size length;
- u32 count;
acpi_owner_id table_id;
u8 type;
u8 allocation;
u8 loaded_into_namespace;
};
+struct acpi_table_list
+{
+ struct acpi_table_desc *next;
+ u32 count;
+};
+
struct acpi_find_context
{
@@ -855,16 +856,6 @@ struct acpi_bit_register_info
#define ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE 0x8A
-/* String version of device HIDs and UIDs */
-
-#define ACPI_DEVICE_ID_LENGTH 0x09
-
-struct acpi_device_id
-{
- char buffer[ACPI_DEVICE_ID_LENGTH];
-};
-
-
/*****************************************************************************
*
* Miscellaneous
diff --git a/include/acpi/acmacros.h b/include/acpi/acmacros.h
index 7b0f65b84394..7160c41972d1 100644
--- a/include/acpi/acmacros.h
+++ b/include/acpi/acmacros.h
@@ -441,26 +441,6 @@
/*
- * Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions)
- *
- * 1) Address space
- * 2) Length in bytes -- convert to length in bits
- * 3) Bit offset is zero
- * 4) Reserved field is zero
- * 5) Expand address to 64 bits
- */
-#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) do {a.address_space_id = (u8) d;\
- a.register_bit_width = (u8) ACPI_MUL_8 (b);\
- a.register_bit_offset = 0;\
- a.reserved = 0;\
- ACPI_STORE_ADDRESS (a.address,(acpi_physical_address) c);} while (0)
-
-/* ACPI V1.0 entries -- address space is always I/O */
-
-#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ACPI_ADR_SPACE_SYSTEM_IO)
-
-
-/*
* Reporting macros that are never compiled out
*/
diff --git a/include/acpi/acnamesp.h b/include/acpi/acnamesp.h
index e809068247ff..f6e52a783791 100644
--- a/include/acpi/acnamesp.h
+++ b/include/acpi/acnamesp.h
@@ -201,6 +201,11 @@ acpi_ns_compare_names (
char *name1,
char *name2);
+void
+acpi_ns_remove_reference (
+ struct acpi_namespace_node *node);
+
+
/*
* Namespace modification - nsmodify
*/
diff --git a/include/acpi/acobject.h b/include/acpi/acobject.h
index e121f26094d3..be30364c5218 100644
--- a/include/acpi/acobject.h
+++ b/include/acpi/acobject.h
@@ -112,9 +112,9 @@
* Common fields for objects that support ASL notifications
*/
#define ACPI_COMMON_NOTIFY_INFO \
- union acpi_operand_object *sys_handler; /* Handler for system notifies */\
- union acpi_operand_object *drv_handler; /* Handler for driver notifies */\
- union acpi_operand_object *addr_handler; /* Handler for Address space */
+ union acpi_operand_object *system_notify; /* Handler for system notifies */\
+ union acpi_operand_object *device_notify; /* Handler for driver notifies */\
+ union acpi_operand_object *address_space; /* Handler for Address space */
/******************************************************************************
@@ -214,7 +214,7 @@ struct acpi_object_region
ACPI_OBJECT_COMMON_HEADER
u8 space_id;
- union acpi_operand_object *addr_handler; /* Handler for system notifies */
+ union acpi_operand_object *address_space; /* Handler for region access */
struct acpi_namespace_node *node; /* containing object */
union acpi_operand_object *next;
u32 length;
@@ -446,8 +446,8 @@ union acpi_operand_object
struct acpi_object_buffer_field buffer_field;
struct acpi_object_bank_field bank_field;
struct acpi_object_index_field index_field;
- struct acpi_object_notify_handler notify_handler;
- struct acpi_object_addr_handler addr_handler;
+ struct acpi_object_notify_handler notify;
+ struct acpi_object_addr_handler address_space;
struct acpi_object_reference reference;
struct acpi_object_extra extra;
struct acpi_object_data data;
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 8acb65f9eccd..7e0f5941433a 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -186,6 +186,7 @@ struct acpi_device_pnp {
acpi_bus_id bus_id; /* Object name */
acpi_bus_address bus_address; /* _ADR */
acpi_hardware_id hardware_id; /* _HID */
+ struct acpi_compatible_id_list *cid_list; /* _CIDs */
acpi_unique_id unique_id; /* _UID */
acpi_device_name device_name; /* Driver-determined */
acpi_device_class device_class; /* " */
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h
index 928b5f49030a..bb6df66442bc 100644
--- a/include/acpi/acpiosxf.h
+++ b/include/acpi/acpiosxf.h
@@ -290,12 +290,12 @@ acpi_os_derive_pci_id(
u8
acpi_os_readable (
void *pointer,
- u32 length);
+ acpi_size length);
u8
acpi_os_writable (
void *pointer,
- u32 length);
+ acpi_size length);
u32
acpi_os_get_timer (
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index aa97e22aeb0d..cd4979869007 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -228,8 +228,8 @@ acpi_evaluate_object_typed (
acpi_status
acpi_get_object_info (
- acpi_handle device,
- struct acpi_device_info *info);
+ acpi_handle handle,
+ struct acpi_buffer *return_buffer);
acpi_status
acpi_get_next_object (
diff --git a/include/acpi/actables.h b/include/acpi/actables.h
index 32fe58c16dd7..305c2a9adf4f 100644
--- a/include/acpi/actables.h
+++ b/include/acpi/actables.h
@@ -157,7 +157,7 @@ acpi_tb_match_signature (
acpi_status
acpi_tb_recognize_table (
struct acpi_table_desc *table_info,
- u8 search_type);
+ u8 search_type);
acpi_status
acpi_tb_init_table_descriptor (
@@ -170,11 +170,11 @@ acpi_tb_init_table_descriptor (
*/
void
-acpi_tb_delete_acpi_tables (
+acpi_tb_delete_all_tables (
void);
void
-acpi_tb_delete_acpi_table (
+acpi_tb_delete_tables_by_type (
acpi_table_type type);
void
@@ -185,10 +185,6 @@ struct acpi_table_desc *
acpi_tb_uninstall_table (
struct acpi_table_desc *table_desc);
-void
-acpi_tb_free_acpi_tables_of_type (
- struct acpi_table_desc *table_info);
-
/*
* tbrsd - RSDP, RSDT utilities
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
index 7ffa0b226c31..875bee2947a8 100644
--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -407,7 +407,7 @@ typedef u32 acpi_table_type;
#define ACPI_TABLE_SSDT (acpi_table_type) 5
#define ACPI_TABLE_XSDT (acpi_table_type) 6
#define ACPI_TABLE_MAX 6
-#define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1)
+#define NUM_ACPI_TABLE_TYPES (ACPI_TABLE_MAX+1)
/*
@@ -747,7 +747,7 @@ struct acpi_system_info
u32 debug_level;
u32 debug_layer;
u32 num_table_types;
- struct acpi_table_info table_info [NUM_ACPI_TABLES];
+ struct acpi_table_info table_info [NUM_ACPI_TABLE_TYPES];
};
@@ -832,12 +832,35 @@ acpi_status (*acpi_walk_callback) (
#define ACPI_INTERRUPT_HANDLED 0x01
-/* Structure and flags for acpi_get_device_info */
+/* Common string version of device HIDs and UIDs */
-#define ACPI_VALID_HID 0x1
-#define ACPI_VALID_UID 0x2
-#define ACPI_VALID_ADR 0x4
-#define ACPI_VALID_STA 0x8
+struct acpi_device_id
+{
+ char value[ACPI_DEVICE_ID_LENGTH];
+};
+
+/* Common string version of device CIDs */
+
+struct acpi_compatible_id
+{
+ char value[ACPI_MAX_CID_LENGTH];
+};
+
+struct acpi_compatible_id_list
+{
+ u32 count;
+ u32 size;
+ struct acpi_compatible_id id[1];
+};
+
+
+/* Structure and flags for acpi_get_object_info */
+
+#define ACPI_VALID_STA 0x0001
+#define ACPI_VALID_ADR 0x0002
+#define ACPI_VALID_HID 0x0004
+#define ACPI_VALID_UID 0x0008
+#define ACPI_VALID_CID 0x0010
#define ACPI_COMMON_OBJ_INFO \
@@ -851,15 +874,18 @@ struct acpi_obj_info_header
};
+/* Structure returned from Get Object Info */
+
struct acpi_device_info
{
ACPI_COMMON_OBJ_INFO;
- u32 valid; /* Are the next bits legit? */
- char hardware_id[9]; /* _HID value if any */
- char unique_id[9]; /* _UID value if any */
- acpi_integer address; /* _ADR value if any */
- u32 current_status; /* _STA value */
+ u32 valid; /* Indicates which fields are valid */
+ u32 current_status; /* _STA value */
+ acpi_integer address; /* _ADR value if any */
+ struct acpi_device_id hardware_id; /* _HID value if any */
+ struct acpi_device_id unique_id; /* _UID value if any */
+ struct acpi_compatible_id_list compatibility_id; /* List of _CIDs if any */
};
diff --git a/include/acpi/acutils.h b/include/acpi/acutils.h
index 576ad04ca41f..6c79df2c46ac 100644
--- a/include/acpi/acutils.h
+++ b/include/acpi/acutils.h
@@ -488,7 +488,7 @@ acpi_ut_execute_HID (
acpi_status
acpi_ut_execute_CID (
struct acpi_namespace_node *device_node,
- struct acpi_device_id *cid);
+ struct acpi_compatible_id_list **return_cid_list);
acpi_status
acpi_ut_execute_STA (
diff --git a/include/acpi/amlresrc.h b/include/acpi/amlresrc.h
new file mode 100644
index 000000000000..cdaa4689f36e
--- /dev/null
+++ b/include/acpi/amlresrc.h
@@ -0,0 +1,329 @@
+
+/******************************************************************************
+ *
+ * Module Name: amlresrc.h - AML resource descriptors
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2003, R. Byron Moore
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+
+#ifndef __AMLRESRC_H
+#define __AMLRESRC_H
+
+
+#define ASL_RESNAME_ADDRESS "_ADR"
+#define ASL_RESNAME_ALIGNMENT "_ALN"
+#define ASL_RESNAME_ADDRESSSPACE "_ASI"
+#define ASL_RESNAME_BASEADDRESS "_BAS"
+#define ASL_RESNAME_BUSMASTER "_BM_" /* Master(1), Slave(0) */
+#define ASL_RESNAME_DECODE "_DEC"
+#define ASL_RESNAME_DMA "_DMA"
+#define ASL_RESNAME_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
+#define ASL_RESNAME_GRANULARITY "_GRA"
+#define ASL_RESNAME_INTERRUPT "_INT"
+#define ASL_RESNAME_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */
+#define ASL_RESNAME_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */
+#define ASL_RESNAME_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
+#define ASL_RESNAME_LENGTH "_LEN"
+#define ASL_RESNAME_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
+#define ASL_RESNAME_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
+#define ASL_RESNAME_MAXADDR "_MAX"
+#define ASL_RESNAME_MINADDR "_MIN"
+#define ASL_RESNAME_MAXTYPE "_MAF"
+#define ASL_RESNAME_MINTYPE "_MIF"
+#define ASL_RESNAME_REGISTERBITOFFSET "_RBO"
+#define ASL_RESNAME_REGISTERBITWIDTH "_RBW"
+#define ASL_RESNAME_RANGETYPE "_RNG"
+#define ASL_RESNAME_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */
+#define ASL_RESNAME_TRANSLATION "_TRA"
+#define ASL_RESNAME_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
+#define ASL_RESNAME_TYPE "_TTP" /* Translation(1), Static (0) */
+#define ASL_RESNAME_XFERTYPE "_SIz" /* 8(0), 8_and16(1), 16(2) */
+
+
+/* Default sizes for "small" resource descriptors */
+
+#define ASL_RDESC_IRQ_SIZE 0x02
+#define ASL_RDESC_DMA_SIZE 0x02
+#define ASL_RDESC_ST_DEPEND_SIZE 0x00
+#define ASL_RDESC_END_DEPEND_SIZE 0x00
+#define ASL_RDESC_IO_SIZE 0x07
+#define ASL_RDESC_FIXED_IO_SIZE 0x03
+#define ASL_RDESC_END_TAG_SIZE 0x01
+
+
+struct asl_resource_node
+{
+ u32 buffer_length;
+ void *buffer;
+ struct asl_resource_node *next;
+};
+
+
+/*
+ * Resource descriptors defined in the ACPI specification.
+ *
+ * Alignment must be BYTE because these descriptors
+ * are used to overlay the AML byte stream.
+ */
+#pragma pack(1)
+
+struct asl_irq_format_desc
+{
+ u8 descriptor_type;
+ u16 irq_mask;
+ u8 flags;
+};
+
+
+struct asl_irq_noflags_desc
+{
+ u8 descriptor_type;
+ u16 irq_mask;
+};
+
+
+struct asl_dma_format_desc
+{
+ u8 descriptor_type;
+ u8 dma_channel_mask;
+ u8 flags;
+};
+
+
+struct asl_start_dependent_desc
+{
+ u8 descriptor_type;
+ u8 flags;
+};
+
+
+struct asl_start_dependent_noprio_desc
+{
+ u8 descriptor_type;
+};
+
+
+struct asl_end_dependent_desc
+{
+ u8 descriptor_type;
+};
+
+
+struct asl_io_port_desc
+{
+ u8 descriptor_type;
+ u8 information;
+ u16 address_min;
+ u16 address_max;
+ u8 alignment;
+ u8 length;
+};
+
+
+struct asl_fixed_io_port_desc
+{
+ u8 descriptor_type;
+ u16 base_address;
+ u8 length;
+};
+
+
+struct asl_small_vendor_desc
+{
+ u8 descriptor_type;
+ u8 vendor_defined[7];
+};
+
+
+struct asl_end_tag_desc
+{
+ u8 descriptor_type;
+ u8 checksum;
+};
+
+
+/* LARGE descriptors */
+
+struct asl_memory_24_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 information;
+ u16 address_min;
+ u16 address_max;
+ u16 alignment;
+ u16 range_length;
+};
+
+
+struct asl_large_vendor_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 vendor_defined[1];
+};
+
+
+struct asl_memory_32_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 information;
+ u32 address_min;
+ u32 address_max;
+ u32 alignment;
+ u32 range_length;
+};
+
+
+struct asl_fixed_memory_32_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 information;
+ u32 base_address;
+ u32 range_length;
+};
+
+
+struct asl_qword_address_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 resource_type;
+ u8 flags;
+ u8 specific_flags;
+ u64 granularity;
+ u64 address_min;
+ u64 address_max;
+ u64 translation_offset;
+ u64 address_length;
+ u8 optional_fields[2];
+};
+
+
+struct asl_dword_address_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 resource_type;
+ u8 flags;
+ u8 specific_flags;
+ u32 granularity;
+ u32 address_min;
+ u32 address_max;
+ u32 translation_offset;
+ u32 address_length;
+ u8 optional_fields[2];
+};
+
+
+struct asl_word_address_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 resource_type;
+ u8 flags;
+ u8 specific_flags;
+ u16 granularity;
+ u16 address_min;
+ u16 address_max;
+ u16 translation_offset;
+ u16 address_length;
+ u8 optional_fields[2];
+};
+
+
+struct asl_extended_xrupt_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 flags;
+ u8 table_length;
+ u32 interrupt_number[1];
+ /* res_source_index, res_source optional fields follow */
+};
+
+
+struct asl_general_register_desc
+{
+ u8 descriptor_type;
+ u16 length;
+ u8 address_space_id;
+ u8 bit_width;
+ u8 bit_offset;
+ u8 reserved;
+ u64 address;
+};
+
+/* restore default alignment */
+
+#pragma pack()
+
+/* Union of all resource descriptors, sow we can allocate the worst case */
+
+union asl_resource_desc
+{
+ struct asl_irq_format_desc irq;
+ struct asl_dma_format_desc dma;
+ struct asl_start_dependent_desc std;
+ struct asl_end_dependent_desc end;
+ struct asl_io_port_desc iop;
+ struct asl_fixed_io_port_desc fio;
+ struct asl_small_vendor_desc smv;
+ struct asl_end_tag_desc et;
+
+ struct asl_memory_24_desc M24;
+ struct asl_large_vendor_desc lgv;
+ struct asl_memory_32_desc M32;
+ struct asl_fixed_memory_32_desc F32;
+ struct asl_qword_address_desc qas;
+ struct asl_dword_address_desc das;
+ struct asl_word_address_desc was;
+ struct asl_extended_xrupt_desc exx;
+ struct asl_general_register_desc grg;
+ u32 u32_item;
+ u16 u16_item;
+ u8 U8item;
+};
+
+
+#endif
+
diff --git a/include/linux/ide.h b/include/linux/ide.h
index f773ff4268a9..a6166056977c 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -886,6 +886,8 @@ typedef struct hwif_s {
struct pnp_dev *pnp_dev; /* for PnP devices */
+ ide_startstop_t (*rw_disk)(ide_drive_t *, struct request *, sector_t);
+
#if 0
ide_hwif_ops_t *hwifops;
#else
@@ -1001,6 +1003,7 @@ typedef struct hwif_s {
unsigned noprobe : 1; /* don't probe for this interface */
unsigned present : 1; /* this interface exists */
+ unsigned hold : 1; /* this interface is always present */
unsigned serialized : 1; /* serialized all channel operation */
unsigned sharing_irq: 1; /* 1 = sharing irq with another hwif */
unsigned reset : 1; /* reset after probe */
@@ -1534,6 +1537,8 @@ extern u8 eighty_ninty_three (ide_drive_t *);
extern int set_transfer(ide_drive_t *, ide_task_t *);
extern int taskfile_lib_get_identify(ide_drive_t *drive, u8 *);
+ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq, sector_t block);
+
/*
* ide_system_bus_speed() returns what we think is the system VESA/PCI
* bus speed (in MHz). This is used for calculating interface PIO timings.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 4c8f4240d33d..4f5fdde6dc4b 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -557,6 +557,7 @@
#define PCI_DEVICE_ID_SI_650 0x0650
#define PCI_DEVICE_ID_SI_651 0x0651
#define PCI_DEVICE_ID_SI_652 0x0652
+#define PCI_DEVICE_ID_SI_655 0x0655
#define PCI_DEVICE_ID_SI_730 0x0730
#define PCI_DEVICE_ID_SI_630_VGA 0x6300
#define PCI_DEVICE_ID_SI_730_VGA 0x7300
@@ -1127,6 +1128,7 @@
#define PCI_DEVICE_ID_VIA_8753_0 0x3128
#define PCI_DEVICE_ID_VIA_8233A 0x3147
#define PCI_DEVICE_ID_VIA_8752 0x3148
+#define PCI_DEVICE_ID_VIA_8237_SATA 0x3149
#define PCI_DEVICE_ID_VIA_KN266 0x3156
#define PCI_DEVICE_ID_VIA_8754 0x3168
#define PCI_DEVICE_ID_VIA_8235 0x3177
@@ -1135,6 +1137,7 @@
#define PCI_DEVICE_ID_VIA_8377_0 0x3189
#define PCI_DEVICE_ID_VIA_KM400 0x3205
#define PCI_DEVICE_ID_VIA_P4M400 0x3209
+#define PCI_DEVICE_ID_VIA_8237 0x3227
#define PCI_DEVICE_ID_VIA_86C100A 0x6100
#define PCI_DEVICE_ID_VIA_8231 0x8231
#define PCI_DEVICE_ID_VIA_8231_4 0x8235
@@ -1893,6 +1896,7 @@
#define PCI_DEVICE_ID_INTEL_82801DB_12 0x24cc
#define PCI_DEVICE_ID_INTEL_82801DB_13 0x24cd
#define PCI_DEVICE_ID_INTEL_82801EB_0 0x24d0
+#define PCI_DEVICE_ID_INTEL_82801EB_1 0x24d1
#define PCI_DEVICE_ID_INTEL_82801EB_2 0x24d2
#define PCI_DEVICE_ID_INTEL_82801EB_3 0x24d3
#define PCI_DEVICE_ID_INTEL_82801EB_4 0x24d4