aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-05-26 16:36:00 -0400
committerLen Brown <len.brown@intel.com>2006-06-14 02:44:35 -0400
commit4119532c95547821dbe72d6916dfa1b2148475b3 (patch)
tree564eb8f69924fb7dc72e93526faf1547acac7d30 /include/acpi
parentb8d35192c55fb055792ff0641408eaaec7c88988 (diff)
ACPI: ACPICA 20060526
Restructured, flattened, and simplified the internal interfaces for namespace object evaluation - resulting in smaller code, less CPU stack use, and fewer interfaces. (With assistance from Mikhail Kouzmich) Fixed a problem with the CopyObject operator where the first parameter was not typed correctly for the parser, interpreter, compiler, and disassembler. Caused various errors and unexpected behavior. Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits produced incorrect results with some C compilers. Since the behavior of C compilers when the shift value is larger than the datatype width is apparently not well defined, the interpreter now detects this condition and simply returns zero as expected in all such cases. (BZ 395) Fixed problem reports (Valery Podrezov) integrated: - Update String-to-Integer conversion to match ACPI 3.0A spec http://bugzilla.kernel.org/show_bug.cgi?id=5329 Allow interpreter to handle nested method declarations http://bugzilla.kernel.org/show_bug.cgi?id=5361 Fixed problem reports (Fiodor Suietov) integrated: - acpi_terminate() doesn't free debug memory allocation list objects (BZ 355) - After Core Subsystem shutdown, acpi_subsystem_status() returns AE_OK (BZ 356) - acpi_os_unmap_memory() for RSDP can be invoked inconsistently (BZ 357) - Resource Manager should return AE_TYPE for non-device objects (BZ 358) - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) - Use acpi_os_free() instead of ACPI_FREE in acpi_rs_set_srs_method_data (BZ 360) - Incomplete cleanup branch in acpi_ps_parse_aml (BZ 361) - Incomplete cleanup branch in acpi_ds_delete_walk_state (BZ 362) - acpi_get_table_header returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365) - Status of the Global Initialization Handler call not used (BZ 366) - Incorrect object parameter to Global Initialization Handler (BZ 367) Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi')
-rw-r--r--include/acpi/acconfig.h2
-rw-r--r--include/acpi/acdispat.h2
-rw-r--r--include/acpi/acnamesp.h22
-rw-r--r--include/acpi/acopcode.h2
-rw-r--r--include/acpi/acparser.h2
-rw-r--r--include/acpi/acpiosxf.h11
-rw-r--r--include/acpi/acresrc.h15
-rw-r--r--include/acpi/acstruct.h90
8 files changed, 76 insertions, 70 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h
index 0177ed3dc807..8b52e44ad2ab 100644
--- a/include/acpi/acconfig.h
+++ b/include/acpi/acconfig.h
@@ -63,7 +63,7 @@
63 63
64/* Current ACPICA subsystem version in YYYYMMDD format */ 64/* Current ACPICA subsystem version in YYYYMMDD format */
65 65
66#define ACPI_CA_VERSION 0x20060512 66#define ACPI_CA_VERSION 0x20060526
67 67
68/* 68/*
69 * OS name, used for the _OS object. The _OS object is essentially obsolete, 69 * OS name, used for the _OS object. The _OS object is essentially obsolete,
diff --git a/include/acpi/acdispat.h b/include/acpi/acdispat.h
index fcf03eb41374..288f84903af7 100644
--- a/include/acpi/acdispat.h
+++ b/include/acpi/acdispat.h
@@ -304,7 +304,7 @@ acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state,
304 struct acpi_namespace_node *method_node, 304 struct acpi_namespace_node *method_node,
305 u8 * aml_start, 305 u8 * aml_start,
306 u32 aml_length, 306 u32 aml_length,
307 struct acpi_parameter_info *info, u8 pass_number); 307 struct acpi_evaluate_info *info, u8 pass_number);
308 308
309acpi_status 309acpi_status
310acpi_ds_obj_stack_pop_and_delete(u32 pop_count, 310acpi_ds_obj_stack_pop_and_delete(u32 pop_count,
diff --git a/include/acpi/acnamesp.h b/include/acpi/acnamesp.h
index 2ef8540c0fba..83b52f9f899a 100644
--- a/include/acpi/acnamesp.h
+++ b/include/acpi/acnamesp.h
@@ -173,13 +173,7 @@ acpi_ns_dump_objects(acpi_object_type type,
173/* 173/*
174 * nseval - Namespace evaluation functions 174 * nseval - Namespace evaluation functions
175 */ 175 */
176acpi_status acpi_ns_evaluate_by_handle(struct acpi_parameter_info *info); 176acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info);
177
178acpi_status
179acpi_ns_evaluate_by_name(char *pathname, struct acpi_parameter_info *info);
180
181acpi_status
182acpi_ns_evaluate_relative(char *pathname, struct acpi_parameter_info *info);
183 177
184/* 178/*
185 * nsnames - Name and Scope manipulation 179 * nsnames - Name and Scope manipulation
@@ -202,9 +196,9 @@ u8
202acpi_ns_pattern_match(struct acpi_namespace_node *obj_node, char *search_for); 196acpi_ns_pattern_match(struct acpi_namespace_node *obj_node, char *search_for);
203 197
204acpi_status 198acpi_status
205acpi_ns_get_node_by_path(char *external_pathname, 199acpi_ns_get_node(struct acpi_namespace_node *prefix_node,
206 struct acpi_namespace_node *in_prefix_node, 200 char *external_pathname,
207 u32 flags, struct acpi_namespace_node **out_node); 201 u32 flags, struct acpi_namespace_node **out_node);
208 202
209acpi_size acpi_ns_get_pathname_length(struct acpi_namespace_node *node); 203acpi_size acpi_ns_get_pathname_length(struct acpi_namespace_node *node);
210 204
@@ -247,10 +241,10 @@ acpi_ns_search_and_enter(u32 entry_name,
247 u32 flags, struct acpi_namespace_node **ret_node); 241 u32 flags, struct acpi_namespace_node **ret_node);
248 242
249acpi_status 243acpi_status
250acpi_ns_search_node(u32 entry_name, 244acpi_ns_search_one_scope(u32 entry_name,
251 struct acpi_namespace_node *node, 245 struct acpi_namespace_node *node,
252 acpi_object_type type, 246 acpi_object_type type,
253 struct acpi_namespace_node **ret_node); 247 struct acpi_namespace_node **ret_node);
254 248
255void 249void
256acpi_ns_install_node(struct acpi_walk_state *walk_state, 250acpi_ns_install_node(struct acpi_walk_state *walk_state,
diff --git a/include/acpi/acopcode.h b/include/acpi/acopcode.h
index e6d78bd9e90a..7659a46bc432 100644
--- a/include/acpi/acopcode.h
+++ b/include/acpi/acopcode.h
@@ -94,7 +94,7 @@
94#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) 94#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
95#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) 95#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
96#define ARGP_CONTINUE_OP ARG_NONE 96#define ARGP_CONTINUE_OP ARG_NONE
97#define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME) 97#define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME)
98#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) 98#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
99#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) 99#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
100#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) 100#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
diff --git a/include/acpi/acparser.h b/include/acpi/acparser.h
index de14492a5985..9d49d3c41cd9 100644
--- a/include/acpi/acparser.h
+++ b/include/acpi/acparser.h
@@ -71,7 +71,7 @@
71/* 71/*
72 * psxface - Parser external interfaces 72 * psxface - Parser external interfaces
73 */ 73 */
74acpi_status acpi_ps_execute_method(struct acpi_parameter_info *info); 74acpi_status acpi_ps_execute_method(struct acpi_evaluate_info *info);
75 75
76/* 76/*
77 * psargs - Parse AML opcode arguments 77 * psargs - Parse AML opcode arguments
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h
index 982e7ea177e3..8f473c83b7c4 100644
--- a/include/acpi/acpiosxf.h
+++ b/include/acpi/acpiosxf.h
@@ -58,8 +58,7 @@ typedef enum {
58 OSL_GPE_HANDLER, 58 OSL_GPE_HANDLER,
59 OSL_DEBUGGER_THREAD, 59 OSL_DEBUGGER_THREAD,
60 OSL_EC_POLL_HANDLER, 60 OSL_EC_POLL_HANDLER,
61 OSL_EC_BURST_HANDLER, 61 OSL_EC_BURST_HANDLER
62
63} acpi_execute_type; 62} acpi_execute_type;
64 63
65#define ACPI_NO_UNIT_LIMIT ((u32) -1) 64#define ACPI_NO_UNIT_LIMIT ((u32) -1)
@@ -217,7 +216,6 @@ acpi_os_derive_pci_id(acpi_handle rhandle,
217/* 216/*
218 * Miscellaneous 217 * Miscellaneous
219 */ 218 */
220
221acpi_status acpi_os_validate_interface(char *interface); 219acpi_status acpi_os_validate_interface(char *interface);
222 220
223acpi_status 221acpi_status
@@ -265,11 +263,4 @@ char *acpi_os_get_next_filename(void *dir_handle);
265 263
266void acpi_os_close_directory(void *dir_handle); 264void acpi_os_close_directory(void *dir_handle);
267 265
268/*
269 * Debug
270 */
271void
272acpi_os_dbg_assert(void *failed_assertion,
273 void *file_name, u32 line_number, char *message);
274
275#endif /* __ACPIOSXF_H__ */ 266#endif /* __ACPIOSXF_H__ */
diff --git a/include/acpi/acresrc.h b/include/acpi/acresrc.h
index bdd6584bbcf1..ad11fc13fbef 100644
--- a/include/acpi/acresrc.h
+++ b/include/acpi/acresrc.h
@@ -164,23 +164,26 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
164/* 164/*
165 * rsutils 165 * rsutils
166 */ 166 */
167
167acpi_status 168acpi_status
168acpi_rs_get_prt_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer); 169acpi_rs_get_prt_method_data(struct acpi_namespace_node *node,
170 struct acpi_buffer *ret_buffer);
169 171
170acpi_status 172acpi_status
171acpi_rs_get_crs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer); 173acpi_rs_get_crs_method_data(struct acpi_namespace_node *node,
174 struct acpi_buffer *ret_buffer);
172 175
173#ifdef ACPI_FUTURE_USAGE
174acpi_status 176acpi_status
175acpi_rs_get_prs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer); 177acpi_rs_get_prs_method_data(struct acpi_namespace_node *node,
176#endif /* ACPI_FUTURE_USAGE */ 178 struct acpi_buffer *ret_buffer);
177 179
178acpi_status 180acpi_status
179acpi_rs_get_method_data(acpi_handle handle, 181acpi_rs_get_method_data(acpi_handle handle,
180 char *path, struct acpi_buffer *ret_buffer); 182 char *path, struct acpi_buffer *ret_buffer);
181 183
182acpi_status 184acpi_status
183acpi_rs_set_srs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer); 185acpi_rs_set_srs_method_data(struct acpi_namespace_node *node,
186 struct acpi_buffer *ret_buffer);
184 187
185/* 188/*
186 * rscalc 189 * rscalc
diff --git a/include/acpi/acstruct.h b/include/acpi/acstruct.h
index b8a6d6110d57..5e8095f0f78f 100644
--- a/include/acpi/acstruct.h
+++ b/include/acpi/acstruct.h
@@ -53,17 +53,25 @@
53 ****************************************************************************/ 53 ****************************************************************************/
54 54
55/* 55/*
56 * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through 56 * Walk state - current state of a parse tree walk. Used for both a leisurely
57 * the tree (for whatever reason), and for control method execution. 57 * stroll through the tree (for whatever reason), and for control method
58 * execution.
58 */ 59 */
59#define ACPI_NEXT_OP_DOWNWARD 1 60#define ACPI_NEXT_OP_DOWNWARD 1
60#define ACPI_NEXT_OP_UPWARD 2 61#define ACPI_NEXT_OP_UPWARD 2
61 62
63/*
64 * Groups of definitions for walk_type used for different implementations of
65 * walkers (never simultaneously) - flags for interpreter:
66 */
62#define ACPI_WALK_NON_METHOD 0 67#define ACPI_WALK_NON_METHOD 0
63#define ACPI_WALK_METHOD 1 68#define ACPI_WALK_METHOD 0x01
64#define ACPI_WALK_METHOD_RESTART 2 69#define ACPI_WALK_METHOD_RESTART 0x02
65#define ACPI_WALK_CONST_REQUIRED 3 70
66#define ACPI_WALK_CONST_OPTIONAL 4 71/* Flags for i_aSL compiler only */
72
73#define ACPI_WALK_CONST_REQUIRED 0x10
74#define ACPI_WALK_CONST_OPTIONAL 0x20
67 75
68struct acpi_walk_state { 76struct acpi_walk_state {
69 struct acpi_walk_state *next; /* Next walk_state in list */ 77 struct acpi_walk_state *next; /* Next walk_state in list */
@@ -134,32 +142,6 @@ struct acpi_init_walk_info {
134 struct acpi_table_desc *table_desc; 142 struct acpi_table_desc *table_desc;
135}; 143};
136 144
137/* Info used by acpi_ns_initialize_devices */
138
139struct acpi_device_walk_info {
140 u16 device_count;
141 u16 num_STA;
142 u16 num_INI;
143 struct acpi_table_desc *table_desc;
144};
145
146/* TBD: [Restructure] Merge with struct above */
147
148struct acpi_walk_info {
149 u32 debug_level;
150 u32 count;
151 acpi_owner_id owner_id;
152 u8 display_type;
153};
154
155/* Display Types */
156
157#define ACPI_DISPLAY_SUMMARY (u8) 0
158#define ACPI_DISPLAY_OBJECTS (u8) 1
159#define ACPI_DISPLAY_MASK (u8) 1
160
161#define ACPI_DISPLAY_SHORT (u8) 2
162
163struct acpi_get_devices_info { 145struct acpi_get_devices_info {
164 acpi_walk_callback user_function; 146 acpi_walk_callback user_function;
165 void *context; 147 void *context;
@@ -192,16 +174,21 @@ union acpi_aml_operands {
192 } mid; 174 } mid;
193}; 175};
194 176
195/* Internal method parameter list */ 177/*
196 178 * Structure used to pass object evaluation parameters.
197struct acpi_parameter_info { 179 * Purpose is to reduce CPU stack use.
198 struct acpi_namespace_node *node; 180 */
181struct acpi_evaluate_info {
182 struct acpi_namespace_node *prefix_node;
183 char *pathname;
199 union acpi_operand_object *obj_desc; 184 union acpi_operand_object *obj_desc;
200 union acpi_operand_object **parameters; 185 union acpi_operand_object **parameters;
186 struct acpi_namespace_node *resolved_node;
201 union acpi_operand_object *return_object; 187 union acpi_operand_object *return_object;
202 u8 pass_number; 188 u8 pass_number;
203 u8 parameter_type; 189 u8 parameter_type;
204 u8 return_object_type; 190 u8 return_object_type;
191 u8 flags;
205}; 192};
206 193
207/* Types for parameter_type above */ 194/* Types for parameter_type above */
@@ -209,4 +196,35 @@ struct acpi_parameter_info {
209#define ACPI_PARAM_ARGS 0 196#define ACPI_PARAM_ARGS 0
210#define ACPI_PARAM_GPE 1 197#define ACPI_PARAM_GPE 1
211 198
199/* Values for Flags above */
200
201#define ACPI_IGNORE_RETURN_VALUE 1
202
203/* Info used by acpi_ns_initialize_devices */
204
205struct acpi_device_walk_info {
206 u16 device_count;
207 u16 num_STA;
208 u16 num_INI;
209 struct acpi_table_desc *table_desc;
210 struct acpi_evaluate_info *evaluate_info;
211};
212
213/* TBD: [Restructure] Merge with struct above */
214
215struct acpi_walk_info {
216 u32 debug_level;
217 u32 count;
218 acpi_owner_id owner_id;
219 u8 display_type;
220};
221
222/* Display Types */
223
224#define ACPI_DISPLAY_SUMMARY (u8) 0
225#define ACPI_DISPLAY_OBJECTS (u8) 1
226#define ACPI_DISPLAY_MASK (u8) 1
227
228#define ACPI_DISPLAY_SHORT (u8) 2
229
212#endif 230#endif