aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/acpi/acconfig.h29
-rw-r--r--include/acpi/acdebug.h259
-rw-r--r--include/acpi/acdisasm.h322
-rw-r--r--include/acpi/acdispat.h404
-rw-r--r--include/acpi/acevents.h241
-rw-r--r--include/acpi/acexcep.h34
-rw-r--r--include/acpi/acglobal.h271
-rw-r--r--include/acpi/achware.h107
-rw-r--r--include/acpi/acinterp.h626
-rw-r--r--include/acpi/aclocal.h722
-rw-r--r--include/acpi/acmacros.h145
-rw-r--r--include/acpi/acnames.h14
-rw-r--r--include/acpi/acnamesp.h357
-rw-r--r--include/acpi/acobject.h390
-rw-r--r--include/acpi/acopcode.h6
-rw-r--r--include/acpi/acoutput.h10
-rw-r--r--include/acpi/acparser.h255
-rw-r--r--include/acpi/acpi.h35
-rw-r--r--include/acpi/acpi_bus.h334
-rw-r--r--include/acpi/acpi_drivers.h40
-rw-r--r--include/acpi/acpiosxf.h264
-rw-r--r--include/acpi/acpixf.h408
-rw-r--r--include/acpi/acresrc.h309
-rw-r--r--include/acpi/acstruct.h221
-rw-r--r--include/acpi/actables.h121
-rw-r--r--include/acpi/actbl.h282
-rw-r--r--include/acpi/actbl1.h141
-rw-r--r--include/acpi/actbl2.h260
-rw-r--r--include/acpi/actbl71.h148
-rw-r--r--include/acpi/actypes.h813
-rw-r--r--include/acpi/acutils.h718
-rw-r--r--include/acpi/amlcode.h172
-rw-r--r--include/acpi/amlresrc.h380
-rw-r--r--include/acpi/container.h3
-rw-r--r--include/acpi/pdc_intel.h4
-rw-r--r--include/acpi/platform/acenv.h70
-rw-r--r--include/acpi/platform/acgcc.h10
-rw-r--r--include/acpi/platform/aclinux.h15
-rw-r--r--include/acpi/processor.h238
-rw-r--r--include/asm-i386/acpi.h20
-rw-r--r--include/asm-i386/fixmap.h2
-rw-r--r--include/asm-i386/io_apic.h4
-rw-r--r--include/asm-i386/mpspec.h4
-rw-r--r--include/asm-ia64/acpi-ext.h1
-rw-r--r--include/asm-x86_64/acpi.h27
-rw-r--r--include/asm-x86_64/io_apic.h2
-rw-r--r--include/asm-x86_64/mpspec.h2
-rw-r--r--include/linux/acpi.h45
48 files changed, 3621 insertions, 5664 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h
index 2f6ab189fc6f..f3810cc5d48e 100644
--- a/include/acpi/acconfig.h
+++ b/include/acpi/acconfig.h
@@ -44,7 +44,6 @@
44#ifndef _ACCONFIG_H 44#ifndef _ACCONFIG_H
45#define _ACCONFIG_H 45#define _ACCONFIG_H
46 46
47
48/****************************************************************************** 47/******************************************************************************
49 * 48 *
50 * Configuration options 49 * Configuration options
@@ -64,7 +63,7 @@
64 63
65/* Version string */ 64/* Version string */
66 65
67#define ACPI_CA_VERSION 0x20050408 66#define ACPI_CA_VERSION 0x20050729
68 67
69/* 68/*
70 * 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,
@@ -78,11 +77,10 @@
78 77
79/* Maximum objects in the various object caches */ 78/* Maximum objects in the various object caches */
80 79
81#define ACPI_MAX_STATE_CACHE_DEPTH 64 /* State objects */ 80#define ACPI_MAX_STATE_CACHE_DEPTH 96 /* State objects */
82#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */ 81#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
83#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */ 82#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */
84#define ACPI_MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */ 83#define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */
85#define ACPI_MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */
86 84
87/* 85/*
88 * Should the subystem abort the loading of an ACPI table if the 86 * Should the subystem abort the loading of an ACPI table if the
@@ -90,7 +88,6 @@
90 */ 88 */
91#define ACPI_CHECKSUM_ABORT FALSE 89#define ACPI_CHECKSUM_ABORT FALSE
92 90
93
94/****************************************************************************** 91/******************************************************************************
95 * 92 *
96 * Subsystem Constants 93 * Subsystem Constants
@@ -104,7 +101,7 @@
104/* String size constants */ 101/* String size constants */
105 102
106#define ACPI_MAX_STRING_LENGTH 512 103#define ACPI_MAX_STRING_LENGTH 512
107#define ACPI_PATHNAME_MAX 256 /* A full namespace pathname */ 104#define ACPI_PATHNAME_MAX 256 /* A full namespace pathname */
108 105
109/* Maximum count for a semaphore object */ 106/* Maximum count for a semaphore object */
110 107
@@ -118,7 +115,6 @@
118 115
119#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096 116#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096
120 117
121
122/****************************************************************************** 118/******************************************************************************
123 * 119 *
124 * ACPI Specification constants (Do not change unless the specification changes) 120 * ACPI Specification constants (Do not change unless the specification changes)
@@ -156,15 +152,15 @@
156/* Names within the namespace are 4 bytes long */ 152/* Names within the namespace are 4 bytes long */
157 153
158#define ACPI_NAME_SIZE 4 154#define ACPI_NAME_SIZE 4
159#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ 155#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
160#define ACPI_PATH_SEPARATOR '.' 156#define ACPI_PATH_SEPARATOR '.'
161 157
162/* Constants used in searching for the RSDP in low memory */ 158/* Constants used in searching for the RSDP in low memory */
163 159
164#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */ 160#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */
165#define ACPI_EBDA_PTR_LENGTH 2 161#define ACPI_EBDA_PTR_LENGTH 2
166#define ACPI_EBDA_WINDOW_SIZE 1024 162#define ACPI_EBDA_WINDOW_SIZE 1024
167#define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */ 163#define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */
168#define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000 164#define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000
169#define ACPI_RSDP_SCAN_STEP 16 165#define ACPI_RSDP_SCAN_STEP 16
170 166
@@ -199,18 +195,15 @@
199 195
200#define ACPI_NUM_OSI_STRINGS 10 196#define ACPI_NUM_OSI_STRINGS 10
201 197
202
203/****************************************************************************** 198/******************************************************************************
204 * 199 *
205 * ACPI AML Debugger 200 * ACPI AML Debugger
206 * 201 *
207 *****************************************************************************/ 202 *****************************************************************************/
208 203
209#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */ 204#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */
210 205
211#define ACPI_DEBUGGER_COMMAND_PROMPT '-' 206#define ACPI_DEBUGGER_COMMAND_PROMPT '-'
212#define ACPI_DEBUGGER_EXECUTE_PROMPT '%' 207#define ACPI_DEBUGGER_EXECUTE_PROMPT '%'
213 208
214 209#endif /* _ACCONFIG_H */
215#endif /* _ACCONFIG_H */
216
diff --git a/include/acpi/acdebug.h b/include/acpi/acdebug.h
index 8ba372b0f245..70ce3b4d006e 100644
--- a/include/acpi/acdebug.h
+++ b/include/acpi/acdebug.h
@@ -44,22 +44,17 @@
44#ifndef __ACDEBUG_H__ 44#ifndef __ACDEBUG_H__
45#define __ACDEBUG_H__ 45#define __ACDEBUG_H__
46 46
47
48#define ACPI_DEBUG_BUFFER_SIZE 4196 47#define ACPI_DEBUG_BUFFER_SIZE 4196
49 48
50struct command_info 49struct command_info {
51{ 50 char *name; /* Command Name */
52 char *name; /* Command Name */ 51 u8 min_args; /* Minimum arguments required */
53 u8 min_args; /* Minimum arguments required */
54}; 52};
55 53
56 54struct argument_info {
57struct argument_info 55 char *name; /* Argument Name */
58{
59 char *name; /* Argument Name */
60}; 56};
61 57
62
63#define PARAM_LIST(pl) pl 58#define PARAM_LIST(pl) pl
64#define DBTEST_OUTPUT_LEVEL(lvl) if (acpi_gbl_db_opt_verbose) 59#define DBTEST_OUTPUT_LEVEL(lvl) if (acpi_gbl_db_opt_verbose)
65#define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ 60#define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\
@@ -68,275 +63,155 @@ struct argument_info
68#define EX_NO_SINGLE_STEP 1 63#define EX_NO_SINGLE_STEP 1
69#define EX_SINGLE_STEP 2 64#define EX_SINGLE_STEP 2
70 65
71
72/* 66/*
73 * dbxface - external debugger interfaces 67 * dbxface - external debugger interfaces
74 */ 68 */
75acpi_status 69acpi_status acpi_db_initialize(void);
76acpi_db_initialize (
77 void);
78 70
79void 71void acpi_db_terminate(void);
80acpi_db_terminate (
81 void);
82 72
83acpi_status 73acpi_status
84acpi_db_single_step ( 74acpi_db_single_step(struct acpi_walk_state *walk_state,
85 struct acpi_walk_state *walk_state, 75 union acpi_parse_object *op, u32 op_type);
86 union acpi_parse_object *op,
87 u32 op_type);
88
89 76
90/* 77/*
91 * dbcmds - debug commands and output routines 78 * dbcmds - debug commands and output routines
92 */ 79 */
93acpi_status 80acpi_status acpi_db_disassemble_method(char *name);
94acpi_db_disassemble_method (
95 char *name);
96 81
97void 82void acpi_db_display_table_info(char *table_arg);
98acpi_db_display_table_info (
99 char *table_arg);
100 83
101void 84void acpi_db_unload_acpi_table(char *table_arg, char *instance_arg);
102acpi_db_unload_acpi_table (
103 char *table_arg,
104 char *instance_arg);
105 85
106void 86void
107acpi_db_set_method_breakpoint ( 87acpi_db_set_method_breakpoint(char *location,
108 char *location, 88 struct acpi_walk_state *walk_state,
109 struct acpi_walk_state *walk_state, 89 union acpi_parse_object *op);
110 union acpi_parse_object *op);
111 90
112void 91void acpi_db_set_method_call_breakpoint(union acpi_parse_object *op);
113acpi_db_set_method_call_breakpoint (
114 union acpi_parse_object *op);
115 92
116void 93void acpi_db_get_bus_info(void);
117acpi_db_disassemble_aml (
118 char *statements,
119 union acpi_parse_object *op);
120 94
121void 95void acpi_db_disassemble_aml(char *statements, union acpi_parse_object *op);
122acpi_db_dump_namespace (
123 char *start_arg,
124 char *depth_arg);
125 96
126void 97void acpi_db_dump_namespace(char *start_arg, char *depth_arg);
127acpi_db_dump_namespace_by_owner (
128 char *owner_arg,
129 char *depth_arg);
130 98
131void 99void acpi_db_dump_namespace_by_owner(char *owner_arg, char *depth_arg);
132acpi_db_send_notify (
133 char *name,
134 u32 value);
135 100
136void 101void acpi_db_send_notify(char *name, u32 value);
137acpi_db_set_method_data (
138 char *type_arg,
139 char *index_arg,
140 char *value_arg);
141 102
142acpi_status 103void acpi_db_set_method_data(char *type_arg, char *index_arg, char *value_arg);
143acpi_db_display_objects (
144 char *obj_type_arg,
145 char *display_count_arg);
146 104
147acpi_status 105acpi_status
148acpi_db_find_name_in_namespace ( 106acpi_db_display_objects(char *obj_type_arg, char *display_count_arg);
149 char *name_arg);
150 107
151void 108acpi_status acpi_db_find_name_in_namespace(char *name_arg);
152acpi_db_set_scope (
153 char *name);
154 109
155acpi_status 110void acpi_db_set_scope(char *name);
156acpi_db_sleep (
157 char *object_arg);
158 111
159void 112acpi_status acpi_db_sleep(char *object_arg);
160acpi_db_find_references (
161 char *object_arg);
162 113
163void 114void acpi_db_find_references(char *object_arg);
164acpi_db_display_locks (
165 void);
166 115
167void 116void acpi_db_display_locks(void);
168acpi_db_display_resources (
169 char *object_arg);
170 117
171void 118void acpi_db_display_resources(char *object_arg);
172acpi_db_display_gpes (
173 void);
174 119
175void 120void acpi_db_display_gpes(void);
176acpi_db_check_integrity (
177 void);
178 121
179void 122void acpi_db_check_integrity(void);
180acpi_db_generate_gpe (
181 char *gpe_arg,
182 char *block_arg);
183 123
124void acpi_db_generate_gpe(char *gpe_arg, char *block_arg);
184 125
185/* 126/*
186 * dbdisply - debug display commands 127 * dbdisply - debug display commands
187 */ 128 */
188void 129void acpi_db_display_method_info(union acpi_parse_object *op);
189acpi_db_display_method_info (
190 union acpi_parse_object *op);
191 130
192void 131void acpi_db_decode_and_display_object(char *target, char *output_type);
193acpi_db_decode_and_display_object (
194 char *target,
195 char *output_type);
196 132
197void 133void
198acpi_db_display_result_object ( 134acpi_db_display_result_object(union acpi_operand_object *obj_desc,
199 union acpi_operand_object *obj_desc, 135 struct acpi_walk_state *walk_state);
200 struct acpi_walk_state *walk_state);
201 136
202acpi_status 137acpi_status acpi_db_display_all_methods(char *display_count_arg);
203acpi_db_display_all_methods (
204 char *display_count_arg);
205 138
206void 139void acpi_db_display_arguments(void);
207acpi_db_display_arguments (
208 void);
209 140
210void 141void acpi_db_display_locals(void);
211acpi_db_display_locals (
212 void);
213 142
214void 143void acpi_db_display_results(void);
215acpi_db_display_results (
216 void);
217 144
218void 145void acpi_db_display_calling_tree(void);
219acpi_db_display_calling_tree (
220 void);
221 146
222void 147void acpi_db_display_object_type(char *object_arg);
223acpi_db_display_object_type (
224 char *object_arg);
225 148
226void 149void
227acpi_db_display_argument_object ( 150acpi_db_display_argument_object(union acpi_operand_object *obj_desc,
228 union acpi_operand_object *obj_desc, 151 struct acpi_walk_state *walk_state);
229 struct acpi_walk_state *walk_state);
230
231 152
232/* 153/*
233 * dbexec - debugger control method execution 154 * dbexec - debugger control method execution
234 */ 155 */
235void 156void acpi_db_execute(char *name, char **args, u32 flags);
236acpi_db_execute (
237 char *name,
238 char **args,
239 u32 flags);
240 157
241void 158void
242acpi_db_create_execution_threads ( 159acpi_db_create_execution_threads(char *num_threads_arg,
243 char *num_threads_arg, 160 char *num_loops_arg, char *method_name_arg);
244 char *num_loops_arg,
245 char *method_name_arg);
246
247 161
248/* 162/*
249 * dbfileio - Debugger file I/O commands 163 * dbfileio - Debugger file I/O commands
250 */ 164 */
251acpi_object_type 165acpi_object_type
252acpi_db_match_argument ( 166acpi_db_match_argument(char *user_argument, struct argument_info *arguments);
253 char *user_argument,
254 struct argument_info *arguments);
255 167
256void 168void acpi_db_close_debug_file(void);
257acpi_db_close_debug_file (
258 void);
259 169
260void 170void acpi_db_open_debug_file(char *name);
261acpi_db_open_debug_file (
262 char *name);
263 171
264acpi_status 172acpi_status acpi_db_load_acpi_table(char *filename);
265acpi_db_load_acpi_table (
266 char *filename);
267 173
268acpi_status 174acpi_status
269acpi_db_get_table_from_file ( 175acpi_db_get_table_from_file(char *filename, struct acpi_table_header **table);
270 char *filename,
271 struct acpi_table_header **table);
272 176
273acpi_status 177acpi_status
274acpi_db_read_table_from_file ( 178acpi_db_read_table_from_file(char *filename, struct acpi_table_header **table);
275 char *filename,
276 struct acpi_table_header **table);
277
278 179
279/* 180/*
280 * dbhistry - debugger HISTORY command 181 * dbhistry - debugger HISTORY command
281 */ 182 */
282void 183void acpi_db_add_to_history(char *command_line);
283acpi_db_add_to_history (
284 char *command_line);
285 184
286void 185void acpi_db_display_history(void);
287acpi_db_display_history (
288 void);
289
290char *
291acpi_db_get_from_history (
292 char *command_num_arg);
293 186
187char *acpi_db_get_from_history(char *command_num_arg);
294 188
295/* 189/*
296 * dbinput - user front-end to the AML debugger 190 * dbinput - user front-end to the AML debugger
297 */ 191 */
298acpi_status 192acpi_status
299acpi_db_command_dispatch ( 193acpi_db_command_dispatch(char *input_buffer,
300 char *input_buffer, 194 struct acpi_walk_state *walk_state,
301 struct acpi_walk_state *walk_state, 195 union acpi_parse_object *op);
302 union acpi_parse_object *op);
303
304void ACPI_SYSTEM_XFACE
305acpi_db_execute_thread (
306 void *context);
307 196
197void ACPI_SYSTEM_XFACE acpi_db_execute_thread(void *context);
308 198
309/* 199/*
310 * dbstats - Generation and display of ACPI table statistics 200 * dbstats - Generation and display of ACPI table statistics
311 */ 201 */
312void 202void acpi_db_generate_statistics(union acpi_parse_object *root, u8 is_method);
313acpi_db_generate_statistics (
314 union acpi_parse_object *root,
315 u8 is_method);
316
317acpi_status
318acpi_db_display_statistics (
319 char *type_arg);
320 203
204acpi_status acpi_db_display_statistics(char *type_arg);
321 205
322/* 206/*
323 * dbutils - AML debugger utilities 207 * dbutils - AML debugger utilities
324 */ 208 */
325void 209void acpi_db_set_output_destination(u32 where);
326acpi_db_set_output_destination (
327 u32 where);
328 210
329void 211void acpi_db_dump_external_object(union acpi_object *obj_desc, u32 level);
330acpi_db_dump_object (
331 union acpi_object *obj_desc,
332 u32 level);
333 212
334void 213void acpi_db_prep_namestring(char *name);
335acpi_db_prep_namestring (
336 char *name);
337 214
338struct acpi_namespace_node * 215struct acpi_namespace_node *acpi_db_local_ns_lookup(char *name);
339acpi_db_local_ns_lookup (
340 char *name);
341 216
342#endif /* __ACDEBUG_H__ */ 217#endif /* __ACDEBUG_H__ */
diff --git a/include/acpi/acdisasm.h b/include/acpi/acdisasm.h
index dbfa877121ba..3d96dcb1bb4b 100644
--- a/include/acpi/acdisasm.h
+++ b/include/acpi/acdisasm.h
@@ -46,327 +46,219 @@
46 46
47#include "amlresrc.h" 47#include "amlresrc.h"
48 48
49
50#define BLOCK_NONE 0 49#define BLOCK_NONE 0
51#define BLOCK_PAREN 1 50#define BLOCK_PAREN 1
52#define BLOCK_BRACE 2 51#define BLOCK_BRACE 2
53#define BLOCK_COMMA_LIST 4 52#define BLOCK_COMMA_LIST 4
54 53
55struct acpi_external_list 54struct acpi_external_list {
56{ 55 char *path;
57 char *path; 56 struct acpi_external_list *next;
58 struct acpi_external_list *next;
59}; 57};
60 58
61extern struct acpi_external_list *acpi_gbl_external_list; 59extern struct acpi_external_list *acpi_gbl_external_list;
62extern const char *acpi_gbl_io_decode[2]; 60extern const char *acpi_gbl_io_decode[2];
63extern const char *acpi_gbl_word_decode[4]; 61extern const char *acpi_gbl_word_decode[4];
64extern const char *acpi_gbl_consume_decode[2]; 62extern const char *acpi_gbl_consume_decode[2];
65extern const char *acpi_gbl_min_decode[2]; 63extern const char *acpi_gbl_min_decode[2];
66extern const char *acpi_gbl_max_decode[2]; 64extern const char *acpi_gbl_max_decode[2];
67extern const char *acpi_gbl_DECdecode[2]; 65extern const char *acpi_gbl_DECdecode[2];
68extern const char *acpi_gbl_RNGdecode[4]; 66extern const char *acpi_gbl_RNGdecode[4];
69extern const char *acpi_gbl_MEMdecode[4]; 67extern const char *acpi_gbl_MEMdecode[4];
70extern const char *acpi_gbl_RWdecode[2]; 68extern const char *acpi_gbl_RWdecode[2];
71extern const char *acpi_gbl_irq_decode[2]; 69extern const char *acpi_gbl_irq_decode[2];
72extern const char *acpi_gbl_HEdecode[2]; 70extern const char *acpi_gbl_HEdecode[2];
73extern const char *acpi_gbl_LLdecode[2]; 71extern const char *acpi_gbl_LLdecode[2];
74extern const char *acpi_gbl_SHRdecode[2]; 72extern const char *acpi_gbl_SHRdecode[2];
75extern const char *acpi_gbl_TYPdecode[4]; 73extern const char *acpi_gbl_TYPdecode[4];
76extern const char *acpi_gbl_BMdecode[2]; 74extern const char *acpi_gbl_BMdecode[2];
77extern const char *acpi_gbl_SIZdecode[4]; 75extern const char *acpi_gbl_SIZdecode[4];
78extern const char *acpi_gbl_TTPdecode[2]; 76extern const char *acpi_gbl_TTPdecode[2];
79extern const char *acpi_gbl_MTPdecode[4]; 77extern const char *acpi_gbl_MTPdecode[4];
80extern const char *acpi_gbl_TRSdecode[2]; 78extern const char *acpi_gbl_TRSdecode[2];
81 79
82 80extern const char *acpi_gbl_lock_rule[ACPI_NUM_LOCK_RULES];
83extern const char *acpi_gbl_lock_rule[ACPI_NUM_LOCK_RULES]; 81extern const char *acpi_gbl_access_types[ACPI_NUM_ACCESS_TYPES];
84extern const char *acpi_gbl_access_types[ACPI_NUM_ACCESS_TYPES]; 82extern const char *acpi_gbl_update_rules[ACPI_NUM_UPDATE_RULES];
85extern const char *acpi_gbl_update_rules[ACPI_NUM_UPDATE_RULES]; 83extern const char *acpi_gbl_match_ops[ACPI_NUM_MATCH_OPS];
86extern const char *acpi_gbl_match_ops[ACPI_NUM_MATCH_OPS]; 84
87 85struct acpi_op_walk_info {
88 86 u32 level;
89struct acpi_op_walk_info 87 u32 bit_offset;
90{ 88 struct acpi_walk_state *walk_state;
91 u32 level;
92 u32 bit_offset;
93}; 89};
94 90
95typedef 91typedef
96acpi_status (*asl_walk_callback) ( 92acpi_status(*asl_walk_callback) (union acpi_parse_object * op,
97 union acpi_parse_object *op, 93 u32 level, void *context);
98 u32 level,
99 void *context);
100
101 94
102/* 95/*
103 * dmwalk 96 * dmwalk
104 */ 97 */
105void 98void
106acpi_dm_disassemble ( 99acpi_dm_disassemble(struct acpi_walk_state *walk_state,
107 struct acpi_walk_state *walk_state, 100 union acpi_parse_object *origin, u32 num_opcodes);
108 union acpi_parse_object *origin,
109 u32 num_opcodes);
110
111 101
112/* 102/*
113 * dmopcode 103 * dmopcode
114 */ 104 */
115void 105void
116acpi_dm_disassemble_one_op ( 106acpi_dm_disassemble_one_op(struct acpi_walk_state *walk_state,
117 struct acpi_walk_state *walk_state, 107 struct acpi_op_walk_info *info,
118 struct acpi_op_walk_info *info, 108 union acpi_parse_object *op);
119 union acpi_parse_object *op);
120 109
121void 110void acpi_dm_decode_internal_object(union acpi_operand_object *obj_desc);
122acpi_dm_decode_internal_object (
123 union acpi_operand_object *obj_desc);
124 111
125u32 112u32 acpi_dm_list_type(union acpi_parse_object *op);
126acpi_dm_list_type (
127 union acpi_parse_object *op);
128 113
129void 114void acpi_dm_method_flags(union acpi_parse_object *op);
130acpi_dm_method_flags (
131 union acpi_parse_object *op);
132
133void
134acpi_dm_field_flags (
135 union acpi_parse_object *op);
136 115
137void 116void acpi_dm_field_flags(union acpi_parse_object *op);
138acpi_dm_address_space (
139 u8 space_id);
140 117
141void 118void acpi_dm_address_space(u8 space_id);
142acpi_dm_region_flags (
143 union acpi_parse_object *op);
144 119
145void 120void acpi_dm_region_flags(union acpi_parse_object *op);
146acpi_dm_match_op (
147 union acpi_parse_object *op);
148 121
149u8 122void acpi_dm_match_op(union acpi_parse_object *op);
150acpi_dm_comma_if_list_member (
151 union acpi_parse_object *op);
152 123
153void 124u8 acpi_dm_comma_if_list_member(union acpi_parse_object *op);
154acpi_dm_comma_if_field_member (
155 union acpi_parse_object *op);
156 125
126void acpi_dm_comma_if_field_member(union acpi_parse_object *op);
157 127
158/* 128/*
159 * dmnames 129 * dmnames
160 */ 130 */
161u32 131u32 acpi_dm_dump_name(char *name);
162acpi_dm_dump_name (
163 char *name);
164 132
165acpi_status 133acpi_status
166acpi_ps_display_object_pathname ( 134acpi_ps_display_object_pathname(struct acpi_walk_state *walk_state,
167 struct acpi_walk_state *walk_state, 135 union acpi_parse_object *op);
168 union acpi_parse_object *op);
169
170void
171acpi_dm_namestring (
172 char *name);
173 136
137void acpi_dm_namestring(char *name);
174 138
175/* 139/*
176 * dmobject 140 * dmobject
177 */ 141 */
178void 142void
179acpi_dm_display_internal_object ( 143acpi_dm_display_internal_object(union acpi_operand_object *obj_desc,
180 union acpi_operand_object *obj_desc, 144 struct acpi_walk_state *walk_state);
181 struct acpi_walk_state *walk_state);
182 145
183void 146void acpi_dm_display_arguments(struct acpi_walk_state *walk_state);
184acpi_dm_display_arguments (
185 struct acpi_walk_state *walk_state);
186 147
187void 148void acpi_dm_display_locals(struct acpi_walk_state *walk_state);
188acpi_dm_display_locals (
189 struct acpi_walk_state *walk_state);
190 149
191void 150void
192acpi_dm_dump_method_info ( 151acpi_dm_dump_method_info(acpi_status status,
193 acpi_status status, 152 struct acpi_walk_state *walk_state,
194 struct acpi_walk_state *walk_state, 153 union acpi_parse_object *op);
195 union acpi_parse_object *op);
196
197 154
198/* 155/*
199 * dmbuffer 156 * dmbuffer
200 */ 157 */
201void 158void acpi_dm_disasm_byte_list(u32 level, u8 * byte_data, u32 byte_count);
202acpi_dm_disasm_byte_list (
203 u32 level,
204 u8 *byte_data,
205 u32 byte_count);
206 159
207void 160void
208acpi_dm_byte_list ( 161acpi_dm_byte_list(struct acpi_op_walk_info *info, union acpi_parse_object *op);
209 struct acpi_op_walk_info *info,
210 union acpi_parse_object *op);
211 162
212void 163void acpi_dm_is_eisa_id(union acpi_parse_object *op);
213acpi_is_eisa_id (
214 union acpi_parse_object *op);
215 164
216void 165void acpi_dm_eisa_id(u32 encoded_id);
217acpi_dm_eisa_id (
218 u32 encoded_id);
219
220u8
221acpi_dm_is_unicode_buffer (
222 union acpi_parse_object *op);
223 166
224u8 167u8 acpi_dm_is_unicode_buffer(union acpi_parse_object *op);
225acpi_dm_is_string_buffer (
226 union acpi_parse_object *op);
227 168
169u8 acpi_dm_is_string_buffer(union acpi_parse_object *op);
228 170
229/* 171/*
230 * dmresrc 172 * dmresrc
231 */ 173 */
232void 174void
233acpi_dm_resource_descriptor ( 175acpi_dm_resource_descriptor(struct acpi_op_walk_info *info,
234 struct acpi_op_walk_info *info, 176 u8 * byte_data, u32 byte_count);
235 u8 *byte_data,
236 u32 byte_count);
237 177
238u8 178u8 acpi_dm_is_resource_descriptor(union acpi_parse_object *op);
239acpi_dm_is_resource_descriptor (
240 union acpi_parse_object *op);
241 179
242void 180void acpi_dm_indent(u32 level);
243acpi_dm_indent (
244 u32 level);
245 181
246void 182void acpi_dm_bit_list(u16 mask);
247acpi_dm_bit_list (
248 u16 mask);
249
250void
251acpi_dm_decode_attribute (
252 u8 attribute);
253 183
184void acpi_dm_decode_attribute(u8 attribute);
254 185
255/* 186/*
256 * dmresrcl 187 * dmresrcl
257 */ 188 */
258void 189void
259acpi_dm_word_descriptor ( 190acpi_dm_word_descriptor(struct asl_word_address_desc *resource,
260 struct asl_word_address_desc *resource, 191 u32 length, u32 level);
261 u32 length,
262 u32 level);
263 192
264void 193void
265acpi_dm_dword_descriptor ( 194acpi_dm_dword_descriptor(struct asl_dword_address_desc *resource,
266 struct asl_dword_address_desc *resource, 195 u32 length, u32 level);
267 u32 length,
268 u32 level);
269 196
270void 197void
271acpi_dm_extended_descriptor ( 198acpi_dm_extended_descriptor(struct asl_extended_address_desc *resource,
272 struct asl_extended_address_desc *resource, 199 u32 length, u32 level);
273 u32 length,
274 u32 level);
275 200
276void 201void
277acpi_dm_qword_descriptor ( 202acpi_dm_qword_descriptor(struct asl_qword_address_desc *resource,
278 struct asl_qword_address_desc *resource, 203 u32 length, u32 level);
279 u32 length,
280 u32 level);
281 204
282void 205void
283acpi_dm_memory24_descriptor ( 206acpi_dm_memory24_descriptor(struct asl_memory_24_desc *resource,
284 struct asl_memory_24_desc *resource, 207 u32 length, u32 level);
285 u32 length,
286 u32 level);
287 208
288void 209void
289acpi_dm_memory32_descriptor ( 210acpi_dm_memory32_descriptor(struct asl_memory_32_desc *resource,
290 struct asl_memory_32_desc *resource, 211 u32 length, u32 level);
291 u32 length,
292 u32 level);
293 212
294void 213void
295acpi_dm_fixed_mem32_descriptor ( 214acpi_dm_fixed_mem32_descriptor(struct asl_fixed_memory_32_desc *resource,
296 struct asl_fixed_memory_32_desc *resource, 215 u32 length, u32 level);
297 u32 length,
298 u32 level);
299 216
300void 217void
301acpi_dm_generic_register_descriptor ( 218acpi_dm_generic_register_descriptor(struct asl_general_register_desc *resource,
302 struct asl_general_register_desc *resource, 219 u32 length, u32 level);
303 u32 length,
304 u32 level);
305 220
306void 221void
307acpi_dm_interrupt_descriptor ( 222acpi_dm_interrupt_descriptor(struct asl_extended_xrupt_desc *resource,
308 struct asl_extended_xrupt_desc *resource, 223 u32 length, u32 level);
309 u32 length,
310 u32 level);
311 224
312void 225void
313acpi_dm_vendor_large_descriptor ( 226acpi_dm_vendor_large_descriptor(struct asl_large_vendor_desc *resource,
314 struct asl_large_vendor_desc *resource, 227 u32 length, u32 level);
315 u32 length,
316 u32 level);
317
318 228
319/* 229/*
320 * dmresrcs 230 * dmresrcs
321 */ 231 */
322void 232void
323acpi_dm_irq_descriptor ( 233acpi_dm_irq_descriptor(struct asl_irq_format_desc *resource,
324 struct asl_irq_format_desc *resource, 234 u32 length, u32 level);
325 u32 length,
326 u32 level);
327 235
328void 236void
329acpi_dm_dma_descriptor ( 237acpi_dm_dma_descriptor(struct asl_dma_format_desc *resource,
330 struct asl_dma_format_desc *resource, 238 u32 length, u32 level);
331 u32 length,
332 u32 level);
333 239
334void 240void
335acpi_dm_io_descriptor ( 241acpi_dm_io_descriptor(struct asl_io_port_desc *resource, u32 length, u32 level);
336 struct asl_io_port_desc *resource,
337 u32 length,
338 u32 level);
339 242
340void 243void
341acpi_dm_fixed_io_descriptor ( 244acpi_dm_fixed_io_descriptor(struct asl_fixed_io_port_desc *resource,
342 struct asl_fixed_io_port_desc *resource, 245 u32 length, u32 level);
343 u32 length,
344 u32 level);
345 246
346void 247void
347acpi_dm_start_dependent_descriptor ( 248acpi_dm_start_dependent_descriptor(struct asl_start_dependent_desc *resource,
348 struct asl_start_dependent_desc *resource, 249 u32 length, u32 level);
349 u32 length,
350 u32 level);
351 250
352void 251void
353acpi_dm_end_dependent_descriptor ( 252acpi_dm_end_dependent_descriptor(struct asl_start_dependent_desc *resource,
354 struct asl_start_dependent_desc *resource, 253 u32 length, u32 level);
355 u32 length,
356 u32 level);
357 254
358void 255void
359acpi_dm_vendor_small_descriptor ( 256acpi_dm_vendor_small_descriptor(struct asl_small_vendor_desc *resource,
360 struct asl_small_vendor_desc *resource, 257 u32 length, u32 level);
361 u32 length,
362 u32 level);
363
364 258
365/* 259/*
366 * dmutils 260 * dmutils
367 */ 261 */
368void 262void acpi_dm_add_to_external_list(char *path);
369acpi_dm_add_to_external_list (
370 char *path);
371 263
372#endif /* __ACDISASM_H__ */ 264#endif /* __ACDISASM_H__ */
diff --git a/include/acpi/acdispat.h b/include/acpi/acdispat.h
index 8f5f2f71b1de..59306186f5e2 100644
--- a/include/acpi/acdispat.h
+++ b/include/acpi/acdispat.h
@@ -41,419 +41,305 @@
41 * POSSIBILITY OF SUCH DAMAGES. 41 * POSSIBILITY OF SUCH DAMAGES.
42 */ 42 */
43 43
44
45#ifndef _ACDISPAT_H_ 44#ifndef _ACDISPAT_H_
46#define _ACDISPAT_H_ 45#define _ACDISPAT_H_
47 46
48
49#define NAMEOF_LOCAL_NTE "__L0" 47#define NAMEOF_LOCAL_NTE "__L0"
50#define NAMEOF_ARG_NTE "__A0" 48#define NAMEOF_ARG_NTE "__A0"
51 49
52
53/* 50/*
54 * dsopcode - support for late evaluation 51 * dsopcode - support for late evaluation
55 */ 52 */
56acpi_status 53acpi_status
57acpi_ds_get_buffer_field_arguments ( 54acpi_ds_get_buffer_field_arguments(union acpi_operand_object *obj_desc);
58 union acpi_operand_object *obj_desc);
59
60acpi_status
61acpi_ds_get_region_arguments (
62 union acpi_operand_object *rgn_desc);
63 55
64acpi_status 56acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *rgn_desc);
65acpi_ds_get_buffer_arguments (
66 union acpi_operand_object *obj_desc);
67 57
68acpi_status 58acpi_status acpi_ds_get_buffer_arguments(union acpi_operand_object *obj_desc);
69acpi_ds_get_package_arguments (
70 union acpi_operand_object *obj_desc);
71 59
72acpi_status 60acpi_status acpi_ds_get_package_arguments(union acpi_operand_object *obj_desc);
73acpi_ds_eval_buffer_field_operands (
74 struct acpi_walk_state *walk_state,
75 union acpi_parse_object *op);
76 61
77acpi_status 62acpi_status
78acpi_ds_eval_region_operands ( 63acpi_ds_eval_buffer_field_operands(struct acpi_walk_state *walk_state,
79 struct acpi_walk_state *walk_state, 64 union acpi_parse_object *op);
80 union acpi_parse_object *op);
81 65
82acpi_status 66acpi_status
83acpi_ds_eval_data_object_operands ( 67acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
84 struct acpi_walk_state *walk_state, 68 union acpi_parse_object *op);
85 union acpi_parse_object *op,
86 union acpi_operand_object *obj_desc);
87 69
88acpi_status 70acpi_status
89acpi_ds_initialize_region ( 71acpi_ds_eval_data_object_operands(struct acpi_walk_state *walk_state,
90 acpi_handle obj_handle); 72 union acpi_parse_object *op,
73 union acpi_operand_object *obj_desc);
91 74
75acpi_status acpi_ds_initialize_region(acpi_handle obj_handle);
92 76
93/* 77/*
94 * dsctrl - Parser/Interpreter interface, control stack routines 78 * dsctrl - Parser/Interpreter interface, control stack routines
95 */ 79 */
96acpi_status 80acpi_status
97acpi_ds_exec_begin_control_op ( 81acpi_ds_exec_begin_control_op(struct acpi_walk_state *walk_state,
98 struct acpi_walk_state *walk_state, 82 union acpi_parse_object *op);
99 union acpi_parse_object *op);
100 83
101acpi_status 84acpi_status
102acpi_ds_exec_end_control_op ( 85acpi_ds_exec_end_control_op(struct acpi_walk_state *walk_state,
103 struct acpi_walk_state *walk_state, 86 union acpi_parse_object *op);
104 union acpi_parse_object *op);
105
106 87
107/* 88/*
108 * dsexec - Parser/Interpreter interface, method execution callbacks 89 * dsexec - Parser/Interpreter interface, method execution callbacks
109 */ 90 */
110acpi_status 91acpi_status
111acpi_ds_get_predicate_value ( 92acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state,
112 struct acpi_walk_state *walk_state, 93 union acpi_operand_object *result_obj);
113 union acpi_operand_object *result_obj);
114 94
115acpi_status 95acpi_status
116acpi_ds_exec_begin_op ( 96acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state,
117 struct acpi_walk_state *walk_state, 97 union acpi_parse_object **out_op);
118 union acpi_parse_object **out_op);
119
120acpi_status
121acpi_ds_exec_end_op (
122 struct acpi_walk_state *state);
123 98
99acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *state);
124 100
125/* 101/*
126 * dsfield - Parser/Interpreter interface for AML fields 102 * dsfield - Parser/Interpreter interface for AML fields
127 */ 103 */
128acpi_status 104acpi_status
129acpi_ds_create_field ( 105acpi_ds_create_field(union acpi_parse_object *op,
130 union acpi_parse_object *op, 106 struct acpi_namespace_node *region_node,
131 struct acpi_namespace_node *region_node, 107 struct acpi_walk_state *walk_state);
132 struct acpi_walk_state *walk_state);
133 108
134acpi_status 109acpi_status
135acpi_ds_create_bank_field ( 110acpi_ds_create_bank_field(union acpi_parse_object *op,
136 union acpi_parse_object *op, 111 struct acpi_namespace_node *region_node,
137 struct acpi_namespace_node *region_node, 112 struct acpi_walk_state *walk_state);
138 struct acpi_walk_state *walk_state);
139 113
140acpi_status 114acpi_status
141acpi_ds_create_index_field ( 115acpi_ds_create_index_field(union acpi_parse_object *op,
142 union acpi_parse_object *op, 116 struct acpi_namespace_node *region_node,
143 struct acpi_namespace_node *region_node, 117 struct acpi_walk_state *walk_state);
144 struct acpi_walk_state *walk_state);
145 118
146acpi_status 119acpi_status
147acpi_ds_create_buffer_field ( 120acpi_ds_create_buffer_field(union acpi_parse_object *op,
148 union acpi_parse_object *op, 121 struct acpi_walk_state *walk_state);
149 struct acpi_walk_state *walk_state);
150 122
151acpi_status 123acpi_status
152acpi_ds_init_field_objects ( 124acpi_ds_init_field_objects(union acpi_parse_object *op,
153 union acpi_parse_object *op, 125 struct acpi_walk_state *walk_state);
154 struct acpi_walk_state *walk_state);
155
156 126
157/* 127/*
158 * dsload - Parser/Interpreter interface, namespace load callbacks 128 * dsload - Parser/Interpreter interface, namespace load callbacks
159 */ 129 */
160acpi_status 130acpi_status
161acpi_ds_load1_begin_op ( 131acpi_ds_load1_begin_op(struct acpi_walk_state *walk_state,
162 struct acpi_walk_state *walk_state, 132 union acpi_parse_object **out_op);
163 union acpi_parse_object **out_op);
164 133
165acpi_status 134acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state);
166acpi_ds_load1_end_op (
167 struct acpi_walk_state *walk_state);
168 135
169acpi_status 136acpi_status
170acpi_ds_load2_begin_op ( 137acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state,
171 struct acpi_walk_state *walk_state, 138 union acpi_parse_object **out_op);
172 union acpi_parse_object **out_op);
173 139
174acpi_status 140acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state);
175acpi_ds_load2_end_op (
176 struct acpi_walk_state *walk_state);
177 141
178acpi_status 142acpi_status
179acpi_ds_init_callbacks ( 143acpi_ds_init_callbacks(struct acpi_walk_state *walk_state, u32 pass_number);
180 struct acpi_walk_state *walk_state,
181 u32 pass_number);
182
183 144
184/* 145/*
185 * dsmthdat - method data (locals/args) 146 * dsmthdat - method data (locals/args)
186 */ 147 */
187acpi_status 148acpi_status
188acpi_ds_store_object_to_local ( 149acpi_ds_store_object_to_local(u16 opcode,
189 u16 opcode, 150 u32 index,
190 u32 index, 151 union acpi_operand_object *src_desc,
191 union acpi_operand_object *src_desc, 152 struct acpi_walk_state *walk_state);
192 struct acpi_walk_state *walk_state);
193 153
194acpi_status 154acpi_status
195acpi_ds_method_data_get_entry ( 155acpi_ds_method_data_get_entry(u16 opcode,
196 u16 opcode, 156 u32 index,
197 u32 index, 157 struct acpi_walk_state *walk_state,
198 struct acpi_walk_state *walk_state, 158 union acpi_operand_object ***node);
199 union acpi_operand_object ***node);
200 159
201void 160void acpi_ds_method_data_delete_all(struct acpi_walk_state *walk_state);
202acpi_ds_method_data_delete_all (
203 struct acpi_walk_state *walk_state);
204 161
205u8 162u8 acpi_ds_is_method_value(union acpi_operand_object *obj_desc);
206acpi_ds_is_method_value (
207 union acpi_operand_object *obj_desc);
208 163
209acpi_status 164acpi_status
210acpi_ds_method_data_get_value ( 165acpi_ds_method_data_get_value(u16 opcode,
211 u16 opcode, 166 u32 index,
212 u32 index, 167 struct acpi_walk_state *walk_state,
213 struct acpi_walk_state *walk_state, 168 union acpi_operand_object **dest_desc);
214 union acpi_operand_object **dest_desc);
215 169
216acpi_status 170acpi_status
217acpi_ds_method_data_init_args ( 171acpi_ds_method_data_init_args(union acpi_operand_object **params,
218 union acpi_operand_object **params, 172 u32 max_param_count,
219 u32 max_param_count, 173 struct acpi_walk_state *walk_state);
220 struct acpi_walk_state *walk_state);
221 174
222acpi_status 175acpi_status
223acpi_ds_method_data_get_node ( 176acpi_ds_method_data_get_node(u16 opcode,
224 u16 opcode, 177 u32 index,
225 u32 index, 178 struct acpi_walk_state *walk_state,
226 struct acpi_walk_state *walk_state, 179 struct acpi_namespace_node **node);
227 struct acpi_namespace_node **node);
228
229void
230acpi_ds_method_data_init (
231 struct acpi_walk_state *walk_state);
232 180
181void acpi_ds_method_data_init(struct acpi_walk_state *walk_state);
233 182
234/* 183/*
235 * dsmethod - Parser/Interpreter interface - control method parsing 184 * dsmethod - Parser/Interpreter interface - control method parsing
236 */ 185 */
237acpi_status 186acpi_status acpi_ds_parse_method(struct acpi_namespace_node *node);
238acpi_ds_parse_method (
239 acpi_handle obj_handle);
240 187
241acpi_status 188acpi_status
242acpi_ds_call_control_method ( 189acpi_ds_call_control_method(struct acpi_thread_state *thread,
243 struct acpi_thread_state *thread, 190 struct acpi_walk_state *walk_state,
244 struct acpi_walk_state *walk_state, 191 union acpi_parse_object *op);
245 union acpi_parse_object *op);
246 192
247acpi_status 193acpi_status
248acpi_ds_restart_control_method ( 194acpi_ds_restart_control_method(struct acpi_walk_state *walk_state,
249 struct acpi_walk_state *walk_state, 195 union acpi_operand_object *return_desc);
250 union acpi_operand_object *return_desc);
251 196
252acpi_status 197acpi_status
253acpi_ds_terminate_control_method ( 198acpi_ds_terminate_control_method(struct acpi_walk_state *walk_state);
254 struct acpi_walk_state *walk_state);
255 199
256acpi_status 200acpi_status
257acpi_ds_begin_method_execution ( 201acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,
258 struct acpi_namespace_node *method_node, 202 union acpi_operand_object *obj_desc,
259 union acpi_operand_object *obj_desc, 203 struct acpi_namespace_node *calling_method_node);
260 struct acpi_namespace_node *calling_method_node);
261
262 204
263/* 205/*
264 * dsinit 206 * dsinit
265 */ 207 */
266acpi_status 208acpi_status
267acpi_ds_initialize_objects ( 209acpi_ds_initialize_objects(struct acpi_table_desc *table_desc,
268 struct acpi_table_desc *table_desc, 210 struct acpi_namespace_node *start_node);
269 struct acpi_namespace_node *start_node);
270
271 211
272/* 212/*
273 * dsobject - Parser/Interpreter interface - object initialization and conversion 213 * dsobject - Parser/Interpreter interface - object initialization and conversion
274 */ 214 */
275acpi_status 215acpi_status
276acpi_ds_build_internal_buffer_obj ( 216acpi_ds_build_internal_buffer_obj(struct acpi_walk_state *walk_state,
277 struct acpi_walk_state *walk_state, 217 union acpi_parse_object *op,
278 union acpi_parse_object *op, 218 u32 buffer_length,
279 u32 buffer_length, 219 union acpi_operand_object **obj_desc_ptr);
280 union acpi_operand_object **obj_desc_ptr);
281 220
282acpi_status 221acpi_status
283acpi_ds_build_internal_package_obj ( 222acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
284 struct acpi_walk_state *walk_state, 223 union acpi_parse_object *op,
285 union acpi_parse_object *op, 224 u32 package_length,
286 u32 package_length, 225 union acpi_operand_object **obj_desc);
287 union acpi_operand_object **obj_desc);
288 226
289acpi_status 227acpi_status
290acpi_ds_init_object_from_op ( 228acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,
291 struct acpi_walk_state *walk_state, 229 union acpi_parse_object *op,
292 union acpi_parse_object *op, 230 u16 opcode, union acpi_operand_object **obj_desc);
293 u16 opcode,
294 union acpi_operand_object **obj_desc);
295 231
296acpi_status 232acpi_status
297acpi_ds_create_node ( 233acpi_ds_create_node(struct acpi_walk_state *walk_state,
298 struct acpi_walk_state *walk_state, 234 struct acpi_namespace_node *node,
299 struct acpi_namespace_node *node, 235 union acpi_parse_object *op);
300 union acpi_parse_object *op);
301
302 236
303/* 237/*
304 * dsutils - Parser/Interpreter interface utility routines 238 * dsutils - Parser/Interpreter interface utility routines
305 */ 239 */
306void 240void acpi_ds_clear_implicit_return(struct acpi_walk_state *walk_state);
307acpi_ds_clear_implicit_return (
308 struct acpi_walk_state *walk_state);
309 241
310u8 242u8
311acpi_ds_do_implicit_return ( 243acpi_ds_do_implicit_return(union acpi_operand_object *return_desc,
312 union acpi_operand_object *return_desc, 244 struct acpi_walk_state *walk_state,
313 struct acpi_walk_state *walk_state, 245 u8 add_reference);
314 u8 add_reference);
315 246
316u8 247u8
317acpi_ds_is_result_used ( 248acpi_ds_is_result_used(union acpi_parse_object *op,
318 union acpi_parse_object *op, 249 struct acpi_walk_state *walk_state);
319 struct acpi_walk_state *walk_state);
320 250
321void 251void
322acpi_ds_delete_result_if_not_used ( 252acpi_ds_delete_result_if_not_used(union acpi_parse_object *op,
323 union acpi_parse_object *op, 253 union acpi_operand_object *result_obj,
324 union acpi_operand_object *result_obj, 254 struct acpi_walk_state *walk_state);
325 struct acpi_walk_state *walk_state);
326 255
327acpi_status 256acpi_status
328acpi_ds_create_operand ( 257acpi_ds_create_operand(struct acpi_walk_state *walk_state,
329 struct acpi_walk_state *walk_state, 258 union acpi_parse_object *arg, u32 args_remaining);
330 union acpi_parse_object *arg,
331 u32 args_remaining);
332 259
333acpi_status 260acpi_status
334acpi_ds_create_operands ( 261acpi_ds_create_operands(struct acpi_walk_state *walk_state,
335 struct acpi_walk_state *walk_state, 262 union acpi_parse_object *first_arg);
336 union acpi_parse_object *first_arg);
337 263
338acpi_status 264acpi_status acpi_ds_resolve_operands(struct acpi_walk_state *walk_state);
339acpi_ds_resolve_operands (
340 struct acpi_walk_state *walk_state);
341
342void
343acpi_ds_clear_operands (
344 struct acpi_walk_state *walk_state);
345 265
266void acpi_ds_clear_operands(struct acpi_walk_state *walk_state);
346 267
347/* 268/*
348 * dswscope - Scope Stack manipulation 269 * dswscope - Scope Stack manipulation
349 */ 270 */
350acpi_status 271acpi_status
351acpi_ds_scope_stack_push ( 272acpi_ds_scope_stack_push(struct acpi_namespace_node *node,
352 struct acpi_namespace_node *node, 273 acpi_object_type type,
353 acpi_object_type type, 274 struct acpi_walk_state *walk_state);
354 struct acpi_walk_state *walk_state);
355 275
276acpi_status acpi_ds_scope_stack_pop(struct acpi_walk_state *walk_state);
356 277
357acpi_status 278void acpi_ds_scope_stack_clear(struct acpi_walk_state *walk_state);
358acpi_ds_scope_stack_pop (
359 struct acpi_walk_state *walk_state);
360
361void
362acpi_ds_scope_stack_clear (
363 struct acpi_walk_state *walk_state);
364
365 279
366/* 280/*
367 * dswstate - parser WALK_STATE management routines 281 * dswstate - parser WALK_STATE management routines
368 */ 282 */
369acpi_status 283acpi_status
370acpi_ds_obj_stack_push ( 284acpi_ds_obj_stack_push(void *object, struct acpi_walk_state *walk_state);
371 void *object,
372 struct acpi_walk_state *walk_state);
373 285
374acpi_status 286acpi_status
375acpi_ds_obj_stack_pop ( 287acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state *walk_state);
376 u32 pop_count,
377 struct acpi_walk_state *walk_state);
378 288
379struct acpi_walk_state * 289struct acpi_walk_state *acpi_ds_create_walk_state(acpi_owner_id owner_id,
380acpi_ds_create_walk_state ( 290 union acpi_parse_object
381 acpi_owner_id owner_id, 291 *origin,
382 union acpi_parse_object *origin, 292 union acpi_operand_object
383 union acpi_operand_object *mth_desc, 293 *mth_desc,
384 struct acpi_thread_state *thread); 294 struct acpi_thread_state
295 *thread);
385 296
386acpi_status 297acpi_status
387acpi_ds_init_aml_walk ( 298acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state,
388 struct acpi_walk_state *walk_state, 299 union acpi_parse_object *op,
389 union acpi_parse_object *op, 300 struct acpi_namespace_node *method_node,
390 struct acpi_namespace_node *method_node, 301 u8 * aml_start,
391 u8 *aml_start, 302 u32 aml_length,
392 u32 aml_length, 303 struct acpi_parameter_info *info, u8 pass_number);
393 struct acpi_parameter_info *info,
394 u32 pass_number);
395 304
396acpi_status 305acpi_status
397acpi_ds_obj_stack_pop_and_delete ( 306acpi_ds_obj_stack_pop_and_delete(u32 pop_count,
398 u32 pop_count, 307 struct acpi_walk_state *walk_state);
399 struct acpi_walk_state *walk_state);
400 308
401void 309void acpi_ds_delete_walk_state(struct acpi_walk_state *walk_state);
402acpi_ds_delete_walk_state (
403 struct acpi_walk_state *walk_state);
404 310
405struct acpi_walk_state * 311struct acpi_walk_state *acpi_ds_pop_walk_state(struct acpi_thread_state
406acpi_ds_pop_walk_state ( 312 *thread);
407 struct acpi_thread_state *thread);
408 313
409void 314void
410acpi_ds_push_walk_state ( 315acpi_ds_push_walk_state(struct acpi_walk_state *walk_state,
411 struct acpi_walk_state *walk_state, 316 struct acpi_thread_state *thread);
412 struct acpi_thread_state *thread);
413 317
414acpi_status 318acpi_status acpi_ds_result_stack_pop(struct acpi_walk_state *walk_state);
415acpi_ds_result_stack_pop (
416 struct acpi_walk_state *walk_state);
417 319
418acpi_status 320acpi_status acpi_ds_result_stack_push(struct acpi_walk_state *walk_state);
419acpi_ds_result_stack_push (
420 struct acpi_walk_state *walk_state);
421 321
422acpi_status 322acpi_status acpi_ds_result_stack_clear(struct acpi_walk_state *walk_state);
423acpi_ds_result_stack_clear (
424 struct acpi_walk_state *walk_state);
425 323
426struct acpi_walk_state * 324struct acpi_walk_state *acpi_ds_get_current_walk_state(struct acpi_thread_state
427acpi_ds_get_current_walk_state ( 325 *thread);
428 struct acpi_thread_state *thread);
429 326
430#ifdef ACPI_FUTURE_USAGE 327#ifdef ACPI_FUTURE_USAGE
431acpi_status 328acpi_status
432acpi_ds_result_remove ( 329acpi_ds_result_remove(union acpi_operand_object **object,
433 union acpi_operand_object **object, 330 u32 index, struct acpi_walk_state *walk_state);
434 u32 index,
435 struct acpi_walk_state *walk_state);
436#endif 331#endif
437 332
438acpi_status 333acpi_status
439acpi_ds_result_pop ( 334acpi_ds_result_pop(union acpi_operand_object **object,
440 union acpi_operand_object **object, 335 struct acpi_walk_state *walk_state);
441 struct acpi_walk_state *walk_state);
442 336
443acpi_status 337acpi_status
444acpi_ds_result_push ( 338acpi_ds_result_push(union acpi_operand_object *object,
445 union acpi_operand_object *object, 339 struct acpi_walk_state *walk_state);
446 struct acpi_walk_state *walk_state);
447 340
448acpi_status 341acpi_status
449acpi_ds_result_pop_from_bottom ( 342acpi_ds_result_pop_from_bottom(union acpi_operand_object **object,
450 union acpi_operand_object **object, 343 struct acpi_walk_state *walk_state);
451 struct acpi_walk_state *walk_state);
452
453#ifdef ACPI_ENABLE_OBJECT_CACHE
454void
455acpi_ds_delete_walk_state_cache (
456 void);
457#endif
458 344
459#endif /* _ACDISPAT_H_ */ 345#endif /* _ACDISPAT_H_ */
diff --git a/include/acpi/acevents.h b/include/acpi/acevents.h
index 61a27c8c5079..bfa54600ecd9 100644
--- a/include/acpi/acevents.h
+++ b/include/acpi/acevents.h
@@ -44,250 +44,167 @@
44#ifndef __ACEVENTS_H__ 44#ifndef __ACEVENTS_H__
45#define __ACEVENTS_H__ 45#define __ACEVENTS_H__
46 46
47
48/* 47/*
49 * evevent 48 * evevent
50 */ 49 */
51acpi_status 50acpi_status acpi_ev_initialize_events(void);
52acpi_ev_initialize_events (
53 void);
54 51
55acpi_status 52acpi_status acpi_ev_install_xrupt_handlers(void);
56acpi_ev_install_xrupt_handlers (
57 void);
58
59u32
60acpi_ev_fixed_event_detect (
61 void);
62 53
54u32 acpi_ev_fixed_event_detect(void);
63 55
64/* 56/*
65 * evmisc 57 * evmisc
66 */ 58 */
67u8 59u8 acpi_ev_is_notify_object(struct acpi_namespace_node *node);
68acpi_ev_is_notify_object (
69 struct acpi_namespace_node *node);
70 60
71acpi_status 61acpi_status acpi_ev_acquire_global_lock(u16 timeout);
72acpi_ev_acquire_global_lock(
73 u16 timeout);
74 62
75acpi_status 63acpi_status acpi_ev_release_global_lock(void);
76acpi_ev_release_global_lock(
77 void);
78 64
79acpi_status 65acpi_status acpi_ev_init_global_lock_handler(void);
80acpi_ev_init_global_lock_handler (
81 void);
82 66
83u32 67u32 acpi_ev_get_gpe_number_index(u32 gpe_number);
84acpi_ev_get_gpe_number_index (
85 u32 gpe_number);
86 68
87acpi_status 69acpi_status
88acpi_ev_queue_notify_request ( 70acpi_ev_queue_notify_request(struct acpi_namespace_node *node,
89 struct acpi_namespace_node *node, 71 u32 notify_value);
90 u32 notify_value);
91
92 72
93/* 73/*
94 * evgpe - GPE handling and dispatch 74 * evgpe - GPE handling and dispatch
95 */ 75 */
96acpi_status 76acpi_status
97acpi_ev_update_gpe_enable_masks ( 77acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info,
98 struct acpi_gpe_event_info *gpe_event_info, 78 u8 type);
99 u8 type);
100 79
101acpi_status 80acpi_status
102acpi_ev_enable_gpe ( 81acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info,
103 struct acpi_gpe_event_info *gpe_event_info, 82 u8 write_to_hardware);
104 u8 write_to_hardware);
105 83
106acpi_status 84acpi_status acpi_ev_disable_gpe(struct acpi_gpe_event_info *gpe_event_info);
107acpi_ev_disable_gpe (
108 struct acpi_gpe_event_info *gpe_event_info);
109
110struct acpi_gpe_event_info *
111acpi_ev_get_gpe_event_info (
112 acpi_handle gpe_device,
113 u32 gpe_number);
114 85
86struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,
87 u32 gpe_number);
115 88
116/* 89/*
117 * evgpeblk 90 * evgpeblk
118 */ 91 */
119u8 92u8 acpi_ev_valid_gpe_event(struct acpi_gpe_event_info *gpe_event_info);
120acpi_ev_valid_gpe_event (
121 struct acpi_gpe_event_info *gpe_event_info);
122
123acpi_status
124acpi_ev_walk_gpe_list (
125 ACPI_GPE_CALLBACK gpe_walk_callback,
126 u32 flags);
127 93
128acpi_status 94acpi_status acpi_ev_walk_gpe_list(ACPI_GPE_CALLBACK gpe_walk_callback);
129acpi_ev_delete_gpe_handlers (
130 struct acpi_gpe_xrupt_info *gpe_xrupt_info,
131 struct acpi_gpe_block_info *gpe_block);
132 95
133acpi_status 96acpi_status
134acpi_ev_create_gpe_block ( 97acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
135 struct acpi_namespace_node *gpe_device, 98 struct acpi_gpe_block_info *gpe_block);
136 struct acpi_generic_address *gpe_block_address,
137 u32 register_count,
138 u8 gpe_block_base_number,
139 u32 interrupt_level,
140 struct acpi_gpe_block_info **return_gpe_block);
141 99
142acpi_status 100acpi_status
143acpi_ev_delete_gpe_block ( 101acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device,
144 struct acpi_gpe_block_info *gpe_block); 102 struct acpi_generic_address *gpe_block_address,
103 u32 register_count,
104 u8 gpe_block_base_number,
105 u32 interrupt_number,
106 struct acpi_gpe_block_info **return_gpe_block);
145 107
146u32 108acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block);
147acpi_ev_gpe_dispatch (
148 struct acpi_gpe_event_info *gpe_event_info,
149 u32 gpe_number);
150 109
151u32 110u32
152acpi_ev_gpe_detect ( 111acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info,
153 struct acpi_gpe_xrupt_info *gpe_xrupt_list); 112 u32 gpe_number);
154 113
155acpi_status 114u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list);
156acpi_ev_set_gpe_type (
157 struct acpi_gpe_event_info *gpe_event_info,
158 u8 type);
159 115
160acpi_status 116acpi_status
161acpi_ev_check_for_wake_only_gpe ( 117acpi_ev_set_gpe_type(struct acpi_gpe_event_info *gpe_event_info, u8 type);
162 struct acpi_gpe_event_info *gpe_event_info);
163 118
164acpi_status 119acpi_status
165acpi_ev_gpe_initialize ( 120acpi_ev_check_for_wake_only_gpe(struct acpi_gpe_event_info *gpe_event_info);
166 void);
167 121
122acpi_status acpi_ev_gpe_initialize(void);
168 123
169/* 124/*
170 * evregion - Address Space handling 125 * evregion - Address Space handling
171 */ 126 */
172acpi_status 127acpi_status acpi_ev_install_region_handlers(void);
173acpi_ev_install_region_handlers (
174 void);
175 128
176acpi_status 129acpi_status acpi_ev_initialize_op_regions(void);
177acpi_ev_initialize_op_regions (
178 void);
179 130
180acpi_status 131acpi_status
181acpi_ev_address_space_dispatch ( 132acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
182 union acpi_operand_object *region_obj, 133 u32 function,
183 u32 function, 134 acpi_physical_address address,
184 acpi_physical_address address, 135 u32 bit_width, void *value);
185 u32 bit_width,
186 void *value);
187 136
188acpi_status 137acpi_status
189acpi_ev_attach_region ( 138acpi_ev_attach_region(union acpi_operand_object *handler_obj,
190 union acpi_operand_object *handler_obj, 139 union acpi_operand_object *region_obj,
191 union acpi_operand_object *region_obj, 140 u8 acpi_ns_is_locked);
192 u8 acpi_ns_is_locked);
193 141
194void 142void
195acpi_ev_detach_region ( 143acpi_ev_detach_region(union acpi_operand_object *region_obj,
196 union acpi_operand_object *region_obj, 144 u8 acpi_ns_is_locked);
197 u8 acpi_ns_is_locked);
198 145
199acpi_status 146acpi_status
200acpi_ev_install_space_handler ( 147acpi_ev_install_space_handler(struct acpi_namespace_node *node,
201 struct acpi_namespace_node *node, 148 acpi_adr_space_type space_id,
202 acpi_adr_space_type space_id, 149 acpi_adr_space_handler handler,
203 acpi_adr_space_handler handler, 150 acpi_adr_space_setup setup, void *context);
204 acpi_adr_space_setup setup,
205 void *context);
206 151
207acpi_status 152acpi_status
208acpi_ev_execute_reg_methods ( 153acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
209 struct acpi_namespace_node *node, 154 acpi_adr_space_type space_id);
210 acpi_adr_space_type space_id);
211 155
212acpi_status 156acpi_status
213acpi_ev_execute_reg_method ( 157acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function);
214 union acpi_operand_object *region_obj,
215 u32 function);
216
217 158
218/* 159/*
219 * evregini - Region initialization and setup 160 * evregini - Region initialization and setup
220 */ 161 */
221acpi_status 162acpi_status
222acpi_ev_system_memory_region_setup ( 163acpi_ev_system_memory_region_setup(acpi_handle handle,
223 acpi_handle handle, 164 u32 function,
224 u32 function, 165 void *handler_context,
225 void *handler_context, 166 void **region_context);
226 void **region_context);
227 167
228acpi_status 168acpi_status
229acpi_ev_io_space_region_setup ( 169acpi_ev_io_space_region_setup(acpi_handle handle,
230 acpi_handle handle, 170 u32 function,
231 u32 function, 171 void *handler_context, void **region_context);
232 void *handler_context,
233 void **region_context);
234 172
235acpi_status 173acpi_status
236acpi_ev_pci_config_region_setup ( 174acpi_ev_pci_config_region_setup(acpi_handle handle,
237 acpi_handle handle, 175 u32 function,
238 u32 function, 176 void *handler_context, void **region_context);
239 void *handler_context,
240 void **region_context);
241 177
242acpi_status 178acpi_status
243acpi_ev_cmos_region_setup ( 179acpi_ev_cmos_region_setup(acpi_handle handle,
244 acpi_handle handle, 180 u32 function,
245 u32 function, 181 void *handler_context, void **region_context);
246 void *handler_context,
247 void **region_context);
248 182
249acpi_status 183acpi_status
250acpi_ev_pci_bar_region_setup ( 184acpi_ev_pci_bar_region_setup(acpi_handle handle,
251 acpi_handle handle, 185 u32 function,
252 u32 function, 186 void *handler_context, void **region_context);
253 void *handler_context,
254 void **region_context);
255 187
256acpi_status 188acpi_status
257acpi_ev_default_region_setup ( 189acpi_ev_default_region_setup(acpi_handle handle,
258 acpi_handle handle, 190 u32 function,
259 u32 function, 191 void *handler_context, void **region_context);
260 void *handler_context,
261 void **region_context);
262 192
263acpi_status 193acpi_status
264acpi_ev_initialize_region ( 194acpi_ev_initialize_region(union acpi_operand_object *region_obj,
265 union acpi_operand_object *region_obj, 195 u8 acpi_ns_locked);
266 u8 acpi_ns_locked);
267
268 196
269/* 197/*
270 * evsci - SCI (System Control Interrupt) handling/dispatch 198 * evsci - SCI (System Control Interrupt) handling/dispatch
271 */ 199 */
272u32 ACPI_SYSTEM_XFACE 200u32 ACPI_SYSTEM_XFACE acpi_ev_gpe_xrupt_handler(void *context);
273acpi_ev_gpe_xrupt_handler (
274 void *context);
275
276u32
277acpi_ev_install_sci_handler (
278 void);
279 201
280acpi_status 202u32 acpi_ev_install_sci_handler(void);
281acpi_ev_remove_sci_handler (
282 void);
283 203
284u32 204acpi_status acpi_ev_remove_sci_handler(void);
285acpi_ev_initialize_sCI (
286 u32 program_sCI);
287 205
288void 206u32 acpi_ev_initialize_sCI(u32 program_sCI);
289acpi_ev_terminate (
290 void);
291 207
208void acpi_ev_terminate(void);
292 209
293#endif /* __ACEVENTS_H__ */ 210#endif /* __ACEVENTS_H__ */
diff --git a/include/acpi/acexcep.h b/include/acpi/acexcep.h
index 60d737b2d70f..4f005eb65928 100644
--- a/include/acpi/acexcep.h
+++ b/include/acpi/acexcep.h
@@ -44,7 +44,6 @@
44#ifndef __ACEXCEP_H__ 44#ifndef __ACEXCEP_H__
45#define __ACEXCEP_H__ 45#define __ACEXCEP_H__
46 46
47
48/* 47/*
49 * Exceptions returned by external ACPI interfaces 48 * Exceptions returned by external ACPI interfaces
50 */ 49 */
@@ -55,11 +54,9 @@
55#define AE_CODE_CONTROL 0x4000 54#define AE_CODE_CONTROL 0x4000
56#define AE_CODE_MASK 0xF000 55#define AE_CODE_MASK 0xF000
57 56
58
59#define ACPI_SUCCESS(a) (!(a)) 57#define ACPI_SUCCESS(a) (!(a))
60#define ACPI_FAILURE(a) (a) 58#define ACPI_FAILURE(a) (a)
61 59
62
63#define AE_OK (acpi_status) 0x0000 60#define AE_OK (acpi_status) 0x0000
64 61
65/* 62/*
@@ -95,9 +92,9 @@
95#define AE_ABORT_METHOD (acpi_status) (0x001C | AE_CODE_ENVIRONMENTAL) 92#define AE_ABORT_METHOD (acpi_status) (0x001C | AE_CODE_ENVIRONMENTAL)
96#define AE_SAME_HANDLER (acpi_status) (0x001D | AE_CODE_ENVIRONMENTAL) 93#define AE_SAME_HANDLER (acpi_status) (0x001D | AE_CODE_ENVIRONMENTAL)
97#define AE_WAKE_ONLY_GPE (acpi_status) (0x001E | AE_CODE_ENVIRONMENTAL) 94#define AE_WAKE_ONLY_GPE (acpi_status) (0x001E | AE_CODE_ENVIRONMENTAL)
95#define AE_OWNER_ID_LIMIT (acpi_status) (0x001F | AE_CODE_ENVIRONMENTAL)
98 96
99#define AE_CODE_ENV_MAX 0x001E 97#define AE_CODE_ENV_MAX 0x001F
100
101 98
102/* 99/*
103 * Programmer exceptions 100 * Programmer exceptions
@@ -114,7 +111,6 @@
114 111
115#define AE_CODE_PGM_MAX 0x0009 112#define AE_CODE_PGM_MAX 0x0009
116 113
117
118/* 114/*
119 * Acpi table exceptions 115 * Acpi table exceptions
120 */ 116 */
@@ -127,7 +123,6 @@
127 123
128#define AE_CODE_TBL_MAX 0x0006 124#define AE_CODE_TBL_MAX 0x0006
129 125
130
131/* 126/*
132 * AML exceptions. These are caused by problems with 127 * AML exceptions. These are caused by problems with
133 * the actual AML byte stream 128 * the actual AML byte stream
@@ -168,7 +163,6 @@
168 163
169#define AE_CODE_AML_MAX 0x0021 164#define AE_CODE_AML_MAX 0x0021
170 165
171
172/* 166/*
173 * Internal exceptions used for control 167 * Internal exceptions used for control
174 */ 168 */
@@ -186,16 +180,13 @@
186 180
187#define AE_CODE_CTRL_MAX 0x000B 181#define AE_CODE_CTRL_MAX 0x000B
188 182
189
190#ifdef DEFINE_ACPI_GLOBALS 183#ifdef DEFINE_ACPI_GLOBALS
191 184
192
193/* 185/*
194 * String versions of the exception codes above 186 * String versions of the exception codes above
195 * These strings must match the corresponding defines exactly 187 * These strings must match the corresponding defines exactly
196 */ 188 */
197char const *acpi_gbl_exception_names_env[] = 189char const *acpi_gbl_exception_names_env[] = {
198{
199 "AE_OK", 190 "AE_OK",
200 "AE_ERROR", 191 "AE_ERROR",
201 "AE_NO_ACPI_TABLES", 192 "AE_NO_ACPI_TABLES",
@@ -226,11 +217,11 @@ char const *acpi_gbl_exception_names_env[] =
226 "AE_LOGICAL_ADDRESS", 217 "AE_LOGICAL_ADDRESS",
227 "AE_ABORT_METHOD", 218 "AE_ABORT_METHOD",
228 "AE_SAME_HANDLER", 219 "AE_SAME_HANDLER",
229 "AE_WAKE_ONLY_GPE" 220 "AE_WAKE_ONLY_GPE",
221 "AE_OWNER_ID_LIMIT"
230}; 222};
231 223
232char const *acpi_gbl_exception_names_pgm[] = 224char const *acpi_gbl_exception_names_pgm[] = {
233{
234 "AE_BAD_PARAMETER", 225 "AE_BAD_PARAMETER",
235 "AE_BAD_CHARACTER", 226 "AE_BAD_CHARACTER",
236 "AE_BAD_PATHNAME", 227 "AE_BAD_PATHNAME",
@@ -242,8 +233,7 @@ char const *acpi_gbl_exception_names_pgm[] =
242 "AE_BAD_DECIMAL_CONSTANT" 233 "AE_BAD_DECIMAL_CONSTANT"
243}; 234};
244 235
245char const *acpi_gbl_exception_names_tbl[] = 236char const *acpi_gbl_exception_names_tbl[] = {
246{
247 "AE_BAD_SIGNATURE", 237 "AE_BAD_SIGNATURE",
248 "AE_BAD_HEADER", 238 "AE_BAD_HEADER",
249 "AE_BAD_CHECKSUM", 239 "AE_BAD_CHECKSUM",
@@ -252,8 +242,7 @@ char const *acpi_gbl_exception_names_tbl[] =
252 "AE_INVALID_TABLE_LENGTH" 242 "AE_INVALID_TABLE_LENGTH"
253}; 243};
254 244
255char const *acpi_gbl_exception_names_aml[] = 245char const *acpi_gbl_exception_names_aml[] = {
256{
257 "AE_AML_ERROR", 246 "AE_AML_ERROR",
258 "AE_AML_PARSE", 247 "AE_AML_PARSE",
259 "AE_AML_BAD_OPCODE", 248 "AE_AML_BAD_OPCODE",
@@ -289,8 +278,7 @@ char const *acpi_gbl_exception_names_aml[] =
289 "AE_AML_BAD_RESOURCE_LENGTH" 278 "AE_AML_BAD_RESOURCE_LENGTH"
290}; 279};
291 280
292char const *acpi_gbl_exception_names_ctrl[] = 281char const *acpi_gbl_exception_names_ctrl[] = {
293{
294 "AE_CTRL_RETURN_VALUE", 282 "AE_CTRL_RETURN_VALUE",
295 "AE_CTRL_PENDING", 283 "AE_CTRL_PENDING",
296 "AE_CTRL_TERMINATE", 284 "AE_CTRL_TERMINATE",
@@ -304,6 +292,6 @@ char const *acpi_gbl_exception_names_ctrl[] =
304 "AE_CTRL_SKIP" 292 "AE_CTRL_SKIP"
305}; 293};
306 294
307#endif /* ACPI GLOBALS */ 295#endif /* ACPI GLOBALS */
308 296
309#endif /* __ACEXCEP_H__ */ 297#endif /* __ACEXCEP_H__ */
diff --git a/include/acpi/acglobal.h b/include/acpi/acglobal.h
index 4946696088c3..e9c2790139ec 100644
--- a/include/acpi/acglobal.h
+++ b/include/acpi/acglobal.h
@@ -44,7 +44,6 @@
44#ifndef __ACGLOBAL_H__ 44#ifndef __ACGLOBAL_H__
45#define __ACGLOBAL_H__ 45#define __ACGLOBAL_H__
46 46
47
48/* 47/*
49 * Ensure that the globals are actually defined and initialized only once. 48 * Ensure that the globals are actually defined and initialized only once.
50 * 49 *
@@ -63,9 +62,8 @@
63 * Keep local copies of these FADT-based registers. NOTE: These globals 62 * Keep local copies of these FADT-based registers. NOTE: These globals
64 * are first in this file for alignment reasons on 64-bit systems. 63 * are first in this file for alignment reasons on 64-bit systems.
65 */ 64 */
66ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable; 65ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable;
67ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable; 66ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable;
68
69 67
70/***************************************************************************** 68/*****************************************************************************
71 * 69 *
@@ -75,13 +73,12 @@ ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable;
75 73
76/* Runtime configuration of debug print levels */ 74/* Runtime configuration of debug print levels */
77 75
78extern u32 acpi_dbg_level; 76extern u32 acpi_dbg_level;
79extern u32 acpi_dbg_layer; 77extern u32 acpi_dbg_layer;
80 78
81/* Procedure nesting level for debug output */ 79/* Procedure nesting level for debug output */
82 80
83extern u32 acpi_gbl_nesting_level; 81extern u32 acpi_gbl_nesting_level;
84
85 82
86/***************************************************************************** 83/*****************************************************************************
87 * 84 *
@@ -98,7 +95,7 @@ extern u32 acpi_gbl_nesting_level;
98 * 3) Allow access to uninitialized locals/args (auto-init to integer 0) 95 * 3) Allow access to uninitialized locals/args (auto-init to integer 0)
99 * 4) Allow ANY object type to be a source operand for the Store() operator 96 * 4) Allow ANY object type to be a source operand for the Store() operator
100 */ 97 */
101ACPI_EXTERN u8 ACPI_INIT_GLOBAL (acpi_gbl_enable_interpreter_slack, FALSE); 98ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_enable_interpreter_slack, FALSE);
102 99
103/* 100/*
104 * Automatically serialize ALL control methods? Default is FALSE, meaning 101 * Automatically serialize ALL control methods? Default is FALSE, meaning
@@ -106,22 +103,21 @@ ACPI_EXTERN u8 ACPI_INIT_GLOBAL (acpi_gbl_enable_interpreter_slack, FALSE)
106 * Only change this if the ASL code is poorly written and cannot handle 103 * Only change this if the ASL code is poorly written and cannot handle
107 * reentrancy even though methods are marked "not_serialized". 104 * reentrancy even though methods are marked "not_serialized".
108 */ 105 */
109ACPI_EXTERN u8 ACPI_INIT_GLOBAL (acpi_gbl_all_methods_serialized, FALSE); 106ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_all_methods_serialized, FALSE);
110 107
111/* 108/*
112 * Create the predefined _OSI method in the namespace? Default is TRUE 109 * Create the predefined _OSI method in the namespace? Default is TRUE
113 * because ACPI CA is fully compatible with other ACPI implementations. 110 * because ACPI CA is fully compatible with other ACPI implementations.
114 * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior. 111 * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior.
115 */ 112 */
116ACPI_EXTERN u8 ACPI_INIT_GLOBAL (acpi_gbl_create_osi_method, TRUE); 113ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_create_osi_method, TRUE);
117 114
118/* 115/*
119 * Disable wakeup GPEs during runtime? Default is TRUE because WAKE and 116 * Disable wakeup GPEs during runtime? Default is TRUE because WAKE and
120 * RUNTIME GPEs should never be shared, and WAKE GPEs should typically only 117 * RUNTIME GPEs should never be shared, and WAKE GPEs should typically only
121 * be enabled just before going to sleep. 118 * be enabled just before going to sleep.
122 */ 119 */
123ACPI_EXTERN u8 ACPI_INIT_GLOBAL (acpi_gbl_leave_wake_gpes_disabled, TRUE); 120ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_leave_wake_gpes_disabled, TRUE);
124
125 121
126/***************************************************************************** 122/*****************************************************************************
127 * 123 *
@@ -137,42 +133,46 @@ ACPI_EXTERN u8 ACPI_INIT_GLOBAL (acpi_gbl_leave_wake_gpes_disabled, TRUE);
137 * These tables are single-table only; meaning that there can be at most one 133 * These tables are single-table only; meaning that there can be at most one
138 * of each in the system. Each global points to the actual table. 134 * of each in the system. Each global points to the actual table.
139 */ 135 */
140ACPI_EXTERN u32 acpi_gbl_table_flags; 136ACPI_EXTERN u32 acpi_gbl_table_flags;
141ACPI_EXTERN u32 acpi_gbl_rsdt_table_count; 137ACPI_EXTERN u32 acpi_gbl_rsdt_table_count;
142ACPI_EXTERN struct rsdp_descriptor *acpi_gbl_RSDP; 138ACPI_EXTERN struct rsdp_descriptor *acpi_gbl_RSDP;
143ACPI_EXTERN XSDT_DESCRIPTOR *acpi_gbl_XSDT; 139ACPI_EXTERN XSDT_DESCRIPTOR *acpi_gbl_XSDT;
144ACPI_EXTERN FADT_DESCRIPTOR *acpi_gbl_FADT; 140ACPI_EXTERN FADT_DESCRIPTOR *acpi_gbl_FADT;
145ACPI_EXTERN struct acpi_table_header *acpi_gbl_DSDT; 141ACPI_EXTERN struct acpi_table_header *acpi_gbl_DSDT;
146ACPI_EXTERN FACS_DESCRIPTOR *acpi_gbl_FACS; 142ACPI_EXTERN FACS_DESCRIPTOR *acpi_gbl_FACS;
147ACPI_EXTERN struct acpi_common_facs acpi_gbl_common_fACS; 143ACPI_EXTERN struct acpi_common_facs acpi_gbl_common_fACS;
148/* 144/*
149 * Since there may be multiple SSDTs and PSDTs, a single pointer is not 145 * Since there may be multiple SSDTs and PSDTs, a single pointer is not
150 * sufficient; Therefore, there isn't one! 146 * sufficient; Therefore, there isn't one!
151 */ 147 */
152 148
149/* The root table can be either an RSDT or an XSDT */
150
151ACPI_EXTERN u8 acpi_gbl_root_table_type;
152#define ACPI_TABLE_TYPE_RSDT 'R'
153#define ACPI_TABLE_TYPE_XSDT 'X'
153 154
154/* 155/*
155 * Handle both ACPI 1.0 and ACPI 2.0 Integer widths: 156 * Handle both ACPI 1.0 and ACPI 2.0 Integer widths:
156 * If we are executing a method that exists in a 32-bit ACPI table, 157 * If we are executing a method that exists in a 32-bit ACPI table,
157 * use only the lower 32 bits of the (internal) 64-bit Integer. 158 * use only the lower 32 bits of the (internal) 64-bit Integer.
158 */ 159 */
159ACPI_EXTERN u8 acpi_gbl_integer_bit_width; 160ACPI_EXTERN u8 acpi_gbl_integer_bit_width;
160ACPI_EXTERN u8 acpi_gbl_integer_byte_width; 161ACPI_EXTERN u8 acpi_gbl_integer_byte_width;
161ACPI_EXTERN u8 acpi_gbl_integer_nybble_width; 162ACPI_EXTERN u8 acpi_gbl_integer_nybble_width;
162 163
163/* 164/*
164 * ACPI Table info arrays 165 * ACPI Table info arrays
165 */ 166 */
166extern struct acpi_table_list acpi_gbl_table_lists[NUM_ACPI_TABLE_TYPES]; 167extern struct acpi_table_list acpi_gbl_table_lists[NUM_ACPI_TABLE_TYPES];
167extern struct acpi_table_support acpi_gbl_table_data[NUM_ACPI_TABLE_TYPES]; 168extern struct acpi_table_support acpi_gbl_table_data[NUM_ACPI_TABLE_TYPES];
168 169
169/* 170/*
170 * Predefined mutex objects. This array contains the 171 * Predefined mutex objects. This array contains the
171 * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. 172 * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs.
172 * (The table maps local handles to the real OS handles) 173 * (The table maps local handles to the real OS handles)
173 */ 174 */
174ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[NUM_MUTEX]; 175ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[NUM_MUTEX];
175
176 176
177/***************************************************************************** 177/*****************************************************************************
178 * 178 *
@@ -180,41 +180,56 @@ ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[NUM_MUTEX];
180 * 180 *
181 ****************************************************************************/ 181 ****************************************************************************/
182 182
183#ifdef ACPI_DBG_TRACK_ALLOCATIONS
184
185/* Lists for tracking memory allocations */
183 186
184ACPI_EXTERN struct acpi_memory_list acpi_gbl_memory_lists[ACPI_NUM_MEM_LISTS]; 187ACPI_EXTERN struct acpi_memory_list *acpi_gbl_global_list;
185ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_device_notify; 188ACPI_EXTERN struct acpi_memory_list *acpi_gbl_ns_node_list;
186ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_system_notify; 189#endif
187ACPI_EXTERN acpi_exception_handler acpi_gbl_exception_handler;
188ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler;
189ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk;
190ACPI_EXTERN acpi_handle acpi_gbl_global_lock_semaphore;
191
192ACPI_EXTERN u32 acpi_gbl_global_lock_thread_count;
193ACPI_EXTERN u32 acpi_gbl_original_mode;
194ACPI_EXTERN u32 acpi_gbl_rsdp_original_location;
195ACPI_EXTERN u32 acpi_gbl_ns_lookup_count;
196ACPI_EXTERN u32 acpi_gbl_ps_find_count;
197ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save;
198ACPI_EXTERN u16 acpi_gbl_next_table_owner_id;
199ACPI_EXTERN u16 acpi_gbl_next_method_owner_id;
200ACPI_EXTERN u16 acpi_gbl_global_lock_handle;
201ACPI_EXTERN u8 acpi_gbl_debugger_configuration;
202ACPI_EXTERN u8 acpi_gbl_global_lock_acquired;
203ACPI_EXTERN u8 acpi_gbl_step_to_next_call;
204ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present;
205ACPI_EXTERN u8 acpi_gbl_global_lock_present;
206ACPI_EXTERN u8 acpi_gbl_events_initialized;
207ACPI_EXTERN u8 acpi_gbl_system_awake_and_running;
208
209extern u8 acpi_gbl_shutdown;
210extern u32 acpi_gbl_startup_flags;
211extern const u8 acpi_gbl_decode_to8bit[8];
212extern const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT];
213extern const char *acpi_gbl_highest_dstate_names[4];
214extern const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES];
215extern const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS];
216extern const char *acpi_gbl_valid_osi_strings[ACPI_NUM_OSI_STRINGS];
217 190
191/* Object caches */
192
193ACPI_EXTERN acpi_cache_t *acpi_gbl_state_cache;
194ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_cache;
195ACPI_EXTERN acpi_cache_t *acpi_gbl_ps_node_ext_cache;
196ACPI_EXTERN acpi_cache_t *acpi_gbl_operand_cache;
197
198/* Global handlers */
199
200ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_device_notify;
201ACPI_EXTERN struct acpi_object_notify_handler acpi_gbl_system_notify;
202ACPI_EXTERN acpi_exception_handler acpi_gbl_exception_handler;
203ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler;
204ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk;
205ACPI_EXTERN acpi_handle acpi_gbl_global_lock_semaphore;
206
207/* Misc */
208
209ACPI_EXTERN u32 acpi_gbl_global_lock_thread_count;
210ACPI_EXTERN u32 acpi_gbl_original_mode;
211ACPI_EXTERN u32 acpi_gbl_rsdp_original_location;
212ACPI_EXTERN u32 acpi_gbl_ns_lookup_count;
213ACPI_EXTERN u32 acpi_gbl_ps_find_count;
214ACPI_EXTERN u32 acpi_gbl_owner_id_mask;
215ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save;
216ACPI_EXTERN u16 acpi_gbl_global_lock_handle;
217ACPI_EXTERN u8 acpi_gbl_debugger_configuration;
218ACPI_EXTERN u8 acpi_gbl_global_lock_acquired;
219ACPI_EXTERN u8 acpi_gbl_step_to_next_call;
220ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present;
221ACPI_EXTERN u8 acpi_gbl_global_lock_present;
222ACPI_EXTERN u8 acpi_gbl_events_initialized;
223ACPI_EXTERN u8 acpi_gbl_system_awake_and_running;
224
225extern u8 acpi_gbl_shutdown;
226extern u32 acpi_gbl_startup_flags;
227extern const u8 acpi_gbl_decode_to8bit[8];
228extern const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT];
229extern const char *acpi_gbl_highest_dstate_names[4];
230extern const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES];
231extern const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS];
232extern const char *acpi_gbl_valid_osi_strings[ACPI_NUM_OSI_STRINGS];
218 233
219/***************************************************************************** 234/*****************************************************************************
220 * 235 *
@@ -230,36 +245,34 @@ extern const char *acpi_gbl_valid_osi_strings[ACPI_
230#define NUM_PREDEFINED_NAMES 9 245#define NUM_PREDEFINED_NAMES 9
231#endif 246#endif
232 247
233ACPI_EXTERN struct acpi_namespace_node acpi_gbl_root_node_struct; 248ACPI_EXTERN struct acpi_namespace_node acpi_gbl_root_node_struct;
234ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_root_node; 249ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_root_node;
235ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_fadt_gpe_device; 250ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_fadt_gpe_device;
236 251
237extern const u8 acpi_gbl_ns_properties[NUM_NS_TYPES]; 252extern const u8 acpi_gbl_ns_properties[NUM_NS_TYPES];
238extern const struct acpi_predefined_names acpi_gbl_pre_defined_names [NUM_PREDEFINED_NAMES]; 253extern const struct acpi_predefined_names
254 acpi_gbl_pre_defined_names[NUM_PREDEFINED_NAMES];
239 255
240#ifdef ACPI_DEBUG_OUTPUT 256#ifdef ACPI_DEBUG_OUTPUT
241ACPI_EXTERN u32 acpi_gbl_current_node_count; 257ACPI_EXTERN u32 acpi_gbl_current_node_count;
242ACPI_EXTERN u32 acpi_gbl_current_node_size; 258ACPI_EXTERN u32 acpi_gbl_current_node_size;
243ACPI_EXTERN u32 acpi_gbl_max_concurrent_node_count; 259ACPI_EXTERN u32 acpi_gbl_max_concurrent_node_count;
244ACPI_EXTERN acpi_size acpi_gbl_entry_stack_pointer; 260ACPI_EXTERN acpi_size acpi_gbl_entry_stack_pointer;
245ACPI_EXTERN acpi_size acpi_gbl_lowest_stack_pointer; 261ACPI_EXTERN acpi_size acpi_gbl_lowest_stack_pointer;
246ACPI_EXTERN u32 acpi_gbl_deepest_nesting; 262ACPI_EXTERN u32 acpi_gbl_deepest_nesting;
247#endif 263#endif
248 264
249
250/***************************************************************************** 265/*****************************************************************************
251 * 266 *
252 * Interpreter globals 267 * Interpreter globals
253 * 268 *
254 ****************************************************************************/ 269 ****************************************************************************/
255 270
256 271ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list;
257ACPI_EXTERN struct acpi_thread_state *acpi_gbl_current_walk_list;
258 272
259/* Control method single step flag */ 273/* Control method single step flag */
260 274
261ACPI_EXTERN u8 acpi_gbl_cm_single_step; 275ACPI_EXTERN u8 acpi_gbl_cm_single_step;
262
263 276
264/***************************************************************************** 277/*****************************************************************************
265 * 278 *
@@ -267,8 +280,7 @@ ACPI_EXTERN u8 acpi_gbl_cm_single_step;
267 * 280 *
268 ****************************************************************************/ 281 ****************************************************************************/
269 282
270ACPI_EXTERN union acpi_parse_object *acpi_gbl_parsed_namespace_root; 283ACPI_EXTERN union acpi_parse_object *acpi_gbl_parsed_namespace_root;
271
272 284
273/***************************************************************************** 285/*****************************************************************************
274 * 286 *
@@ -276,10 +288,10 @@ ACPI_EXTERN union acpi_parse_object *acpi_gbl_parsed_namespace_root;
276 * 288 *
277 ****************************************************************************/ 289 ****************************************************************************/
278 290
279extern struct acpi_bit_register_info acpi_gbl_bit_register_info[ACPI_NUM_BITREG]; 291extern struct acpi_bit_register_info
280ACPI_EXTERN u8 acpi_gbl_sleep_type_a; 292 acpi_gbl_bit_register_info[ACPI_NUM_BITREG];
281ACPI_EXTERN u8 acpi_gbl_sleep_type_b; 293ACPI_EXTERN u8 acpi_gbl_sleep_type_a;
282 294ACPI_EXTERN u8 acpi_gbl_sleep_type_b;
283 295
284/***************************************************************************** 296/*****************************************************************************
285 * 297 *
@@ -287,12 +299,14 @@ ACPI_EXTERN u8 acpi_gbl_sleep_type_b;
287 * 299 *
288 ****************************************************************************/ 300 ****************************************************************************/
289 301
290extern struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS]; 302extern struct acpi_fixed_event_info
291ACPI_EXTERN struct acpi_fixed_event_handler acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS]; 303 acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS];
292ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; 304ACPI_EXTERN struct acpi_fixed_event_handler
293ACPI_EXTERN struct acpi_gpe_block_info *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; 305 acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
294ACPI_EXTERN acpi_handle acpi_gbl_gpe_lock; 306ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head;
295 307ACPI_EXTERN struct acpi_gpe_block_info
308 *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS];
309ACPI_EXTERN acpi_handle acpi_gbl_gpe_lock;
296 310
297/***************************************************************************** 311/*****************************************************************************
298 * 312 *
@@ -300,58 +314,55 @@ ACPI_EXTERN acpi_handle acpi_gbl_gpe_lock;
300 * 314 *
301 ****************************************************************************/ 315 ****************************************************************************/
302 316
303ACPI_EXTERN u8 acpi_gbl_db_output_flags; 317ACPI_EXTERN u8 acpi_gbl_db_output_flags;
304 318
305#ifdef ACPI_DISASSEMBLER 319#ifdef ACPI_DISASSEMBLER
306 320
307ACPI_EXTERN u8 acpi_gbl_db_opt_disasm; 321ACPI_EXTERN u8 acpi_gbl_db_opt_disasm;
308ACPI_EXTERN u8 acpi_gbl_db_opt_verbose; 322ACPI_EXTERN u8 acpi_gbl_db_opt_verbose;
309#endif 323#endif
310 324
311
312#ifdef ACPI_DEBUGGER 325#ifdef ACPI_DEBUGGER
313 326
314extern u8 acpi_gbl_method_executing; 327extern u8 acpi_gbl_method_executing;
315extern u8 acpi_gbl_abort_method; 328extern u8 acpi_gbl_abort_method;
316extern u8 acpi_gbl_db_terminate_threads; 329extern u8 acpi_gbl_db_terminate_threads;
317 330
318ACPI_EXTERN int optind; 331ACPI_EXTERN int optind;
319ACPI_EXTERN char *optarg; 332ACPI_EXTERN char *optarg;
320 333
321ACPI_EXTERN u8 acpi_gbl_db_opt_tables; 334ACPI_EXTERN u8 acpi_gbl_db_opt_tables;
322ACPI_EXTERN u8 acpi_gbl_db_opt_stats; 335ACPI_EXTERN u8 acpi_gbl_db_opt_stats;
323ACPI_EXTERN u8 acpi_gbl_db_opt_ini_methods; 336ACPI_EXTERN u8 acpi_gbl_db_opt_ini_methods;
324 337
325 338ACPI_EXTERN char *acpi_gbl_db_args[ACPI_DEBUGGER_MAX_ARGS];
326ACPI_EXTERN char *acpi_gbl_db_args[ACPI_DEBUGGER_MAX_ARGS]; 339ACPI_EXTERN char acpi_gbl_db_line_buf[80];
327ACPI_EXTERN char acpi_gbl_db_line_buf[80]; 340ACPI_EXTERN char acpi_gbl_db_parsed_buf[80];
328ACPI_EXTERN char acpi_gbl_db_parsed_buf[80]; 341ACPI_EXTERN char acpi_gbl_db_scope_buf[40];
329ACPI_EXTERN char acpi_gbl_db_scope_buf[40]; 342ACPI_EXTERN char acpi_gbl_db_debug_filename[40];
330ACPI_EXTERN char acpi_gbl_db_debug_filename[40]; 343ACPI_EXTERN u8 acpi_gbl_db_output_to_file;
331ACPI_EXTERN u8 acpi_gbl_db_output_to_file; 344ACPI_EXTERN char *acpi_gbl_db_buffer;
332ACPI_EXTERN char *acpi_gbl_db_buffer; 345ACPI_EXTERN char *acpi_gbl_db_filename;
333ACPI_EXTERN char *acpi_gbl_db_filename; 346ACPI_EXTERN u32 acpi_gbl_db_debug_level;
334ACPI_EXTERN u32 acpi_gbl_db_debug_level; 347ACPI_EXTERN u32 acpi_gbl_db_console_debug_level;
335ACPI_EXTERN u32 acpi_gbl_db_console_debug_level; 348ACPI_EXTERN struct acpi_table_header *acpi_gbl_db_table_ptr;
336ACPI_EXTERN struct acpi_table_header *acpi_gbl_db_table_ptr; 349ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_db_scope_node;
337ACPI_EXTERN struct acpi_namespace_node *acpi_gbl_db_scope_node;
338 350
339/* 351/*
340 * Statistic globals 352 * Statistic globals
341 */ 353 */
342ACPI_EXTERN u16 acpi_gbl_obj_type_count[ACPI_TYPE_NS_NODE_MAX+1]; 354ACPI_EXTERN u16 acpi_gbl_obj_type_count[ACPI_TYPE_NS_NODE_MAX + 1];
343ACPI_EXTERN u16 acpi_gbl_node_type_count[ACPI_TYPE_NS_NODE_MAX+1]; 355ACPI_EXTERN u16 acpi_gbl_node_type_count[ACPI_TYPE_NS_NODE_MAX + 1];
344ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc; 356ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc;
345ACPI_EXTERN u16 acpi_gbl_node_type_count_misc; 357ACPI_EXTERN u16 acpi_gbl_node_type_count_misc;
346ACPI_EXTERN u32 acpi_gbl_num_nodes; 358ACPI_EXTERN u32 acpi_gbl_num_nodes;
347ACPI_EXTERN u32 acpi_gbl_num_objects; 359ACPI_EXTERN u32 acpi_gbl_num_objects;
348
349 360
350ACPI_EXTERN u32 acpi_gbl_size_of_parse_tree; 361ACPI_EXTERN u32 acpi_gbl_size_of_parse_tree;
351ACPI_EXTERN u32 acpi_gbl_size_of_method_trees; 362ACPI_EXTERN u32 acpi_gbl_size_of_method_trees;
352ACPI_EXTERN u32 acpi_gbl_size_of_node_entries; 363ACPI_EXTERN u32 acpi_gbl_size_of_node_entries;
353ACPI_EXTERN u32 acpi_gbl_size_of_acpi_objects; 364ACPI_EXTERN u32 acpi_gbl_size_of_acpi_objects;
354 365
355#endif /* ACPI_DEBUGGER */ 366#endif /* ACPI_DEBUGGER */
356 367
357#endif /* __ACGLOBAL_H__ */ 368#endif /* __ACGLOBAL_H__ */
diff --git a/include/acpi/achware.h b/include/acpi/achware.h
index 9d63641b8e7d..3644d7248e7e 100644
--- a/include/acpi/achware.h
+++ b/include/acpi/achware.h
@@ -44,7 +44,6 @@
44#ifndef __ACHWARE_H__ 44#ifndef __ACHWARE_H__
45#define __ACHWARE_H__ 45#define __ACHWARE_H__
46 46
47
48/* PM Timer ticks per second (HZ) */ 47/* PM Timer ticks per second (HZ) */
49 48
50#define PM_TIMER_FREQUENCY 3579545 49#define PM_TIMER_FREQUENCY 3579545
@@ -57,126 +56,78 @@
57#define ACPI_SST_SLEEPING 3 56#define ACPI_SST_SLEEPING 3
58#define ACPI_SST_SLEEP_CONTEXT 4 57#define ACPI_SST_SLEEP_CONTEXT 4
59 58
60
61/* Prototypes */ 59/* Prototypes */
62 60
63
64/* 61/*
65 * hwacpi - high level functions 62 * hwacpi - high level functions
66 */ 63 */
67acpi_status 64acpi_status acpi_hw_initialize(void);
68acpi_hw_initialize (
69 void);
70 65
71acpi_status 66acpi_status acpi_hw_set_mode(u32 mode);
72acpi_hw_set_mode (
73 u32 mode);
74
75u32
76acpi_hw_get_mode (
77 void);
78 67
68u32 acpi_hw_get_mode(void);
79 69
80/* 70/*
81 * hwregs - ACPI Register I/O 71 * hwregs - ACPI Register I/O
82 */ 72 */
83struct acpi_bit_register_info * 73struct acpi_bit_register_info *acpi_hw_get_bit_register_info(u32 register_id);
84acpi_hw_get_bit_register_info (
85 u32 register_id);
86
87acpi_status
88acpi_hw_register_read (
89 u8 use_lock,
90 u32 register_id,
91 u32 *return_value);
92 74
93acpi_status 75acpi_status
94acpi_hw_register_write ( 76acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value);
95 u8 use_lock,
96 u32 register_id,
97 u32 value);
98 77
99acpi_status 78acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value);
100acpi_hw_low_level_read (
101 u32 width,
102 u32 *value,
103 struct acpi_generic_address *reg);
104 79
105acpi_status 80acpi_status
106acpi_hw_low_level_write ( 81acpi_hw_low_level_read(u32 width,
107 u32 width, 82 u32 * value, struct acpi_generic_address *reg);
108 u32 value,
109 struct acpi_generic_address *reg);
110 83
111acpi_status 84acpi_status
112acpi_hw_clear_acpi_status ( 85acpi_hw_low_level_write(u32 width, u32 value, struct acpi_generic_address *reg);
113 u32 flags);
114 86
87acpi_status acpi_hw_clear_acpi_status(u32 flags);
115 88
116/* 89/*
117 * hwgpe - GPE support 90 * hwgpe - GPE support
118 */ 91 */
119acpi_status 92acpi_status
120acpi_hw_write_gpe_enable_reg ( 93acpi_hw_write_gpe_enable_reg(struct acpi_gpe_event_info *gpe_event_info);
121 struct acpi_gpe_event_info *gpe_event_info);
122 94
123acpi_status 95acpi_status
124acpi_hw_disable_gpe_block ( 96acpi_hw_disable_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
125 struct acpi_gpe_xrupt_info *gpe_xrupt_info, 97 struct acpi_gpe_block_info *gpe_block);
126 struct acpi_gpe_block_info *gpe_block);
127 98
128acpi_status 99acpi_status acpi_hw_clear_gpe(struct acpi_gpe_event_info *gpe_event_info);
129acpi_hw_clear_gpe (
130 struct acpi_gpe_event_info *gpe_event_info);
131 100
132acpi_status 101acpi_status
133acpi_hw_clear_gpe_block ( 102acpi_hw_clear_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
134 struct acpi_gpe_xrupt_info *gpe_xrupt_info, 103 struct acpi_gpe_block_info *gpe_block);
135 struct acpi_gpe_block_info *gpe_block);
136 104
137#ifdef ACPI_FUTURE_USAGE 105#ifdef ACPI_FUTURE_USAGE
138acpi_status 106acpi_status
139acpi_hw_get_gpe_status ( 107acpi_hw_get_gpe_status(struct acpi_gpe_event_info *gpe_event_info,
140 struct acpi_gpe_event_info *gpe_event_info, 108 acpi_event_status * event_status);
141 acpi_event_status *event_status); 109#endif /* ACPI_FUTURE_USAGE */
142#endif /* ACPI_FUTURE_USAGE */
143 110
144acpi_status 111acpi_status acpi_hw_disable_all_gpes(void);
145acpi_hw_disable_all_gpes (
146 u32 flags);
147 112
148acpi_status 113acpi_status acpi_hw_enable_all_runtime_gpes(void);
149acpi_hw_enable_all_runtime_gpes (
150 u32 flags);
151 114
152acpi_status 115acpi_status acpi_hw_enable_all_wakeup_gpes(void);
153acpi_hw_enable_all_wakeup_gpes (
154 u32 flags);
155 116
156acpi_status 117acpi_status
157acpi_hw_enable_runtime_gpe_block ( 118acpi_hw_enable_runtime_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
158 struct acpi_gpe_xrupt_info *gpe_xrupt_info, 119 struct acpi_gpe_block_info *gpe_block);
159 struct acpi_gpe_block_info *gpe_block);
160
161 120
162#ifdef ACPI_FUTURE_USAGE 121#ifdef ACPI_FUTURE_USAGE
163/* 122/*
164 * hwtimer - ACPI Timer prototypes 123 * hwtimer - ACPI Timer prototypes
165 */ 124 */
166acpi_status 125acpi_status acpi_get_timer_resolution(u32 * resolution);
167acpi_get_timer_resolution (
168 u32 *resolution);
169 126
170acpi_status 127acpi_status acpi_get_timer(u32 * ticks);
171acpi_get_timer (
172 u32 *ticks);
173 128
174acpi_status 129acpi_status
175acpi_get_timer_duration ( 130acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed);
176 u32 start_ticks, 131#endif /* ACPI_FUTURE_USAGE */
177 u32 end_ticks,
178 u32 *time_elapsed);
179#endif /* ACPI_FUTURE_USAGE */
180
181 132
182#endif /* __ACHWARE_H__ */ 133#endif /* __ACHWARE_H__ */
diff --git a/include/acpi/acinterp.h b/include/acpi/acinterp.h
index 5c7172477a0f..2c9c1a1d1b7f 100644
--- a/include/acpi/acinterp.h
+++ b/include/acpi/acinterp.h
@@ -44,29 +44,22 @@
44#ifndef __ACINTERP_H__ 44#ifndef __ACINTERP_H__
45#define __ACINTERP_H__ 45#define __ACINTERP_H__
46 46
47
48#define ACPI_WALK_OPERANDS (&(walk_state->operands [walk_state->num_operands -1])) 47#define ACPI_WALK_OPERANDS (&(walk_state->operands [walk_state->num_operands -1]))
49 48
50
51/* 49/*
52 * exconvrt - object conversion 50 * exconvrt - object conversion
53 */ 51 */
54acpi_status 52acpi_status
55acpi_ex_convert_to_integer ( 53acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,
56 union acpi_operand_object *obj_desc, 54 union acpi_operand_object **result_desc, u32 flags);
57 union acpi_operand_object **result_desc,
58 u32 flags);
59 55
60acpi_status 56acpi_status
61acpi_ex_convert_to_buffer ( 57acpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc,
62 union acpi_operand_object *obj_desc, 58 union acpi_operand_object **result_desc);
63 union acpi_operand_object **result_desc);
64 59
65acpi_status 60acpi_status
66acpi_ex_convert_to_string ( 61acpi_ex_convert_to_string(union acpi_operand_object *obj_desc,
67 union acpi_operand_object *obj_desc, 62 union acpi_operand_object **result_desc, u32 type);
68 union acpi_operand_object **result_desc,
69 u32 type);
70 63
71/* Types for ->String conversion */ 64/* Types for ->String conversion */
72 65
@@ -76,587 +69,412 @@ acpi_ex_convert_to_string (
76#define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003 69#define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003
77 70
78acpi_status 71acpi_status
79acpi_ex_convert_to_target_type ( 72acpi_ex_convert_to_target_type(acpi_object_type destination_type,
80 acpi_object_type destination_type, 73 union acpi_operand_object *source_desc,
81 union acpi_operand_object *source_desc, 74 union acpi_operand_object **result_desc,
82 union acpi_operand_object **result_desc, 75 struct acpi_walk_state *walk_state);
83 struct acpi_walk_state *walk_state);
84
85 76
86/* 77/*
87 * exfield - ACPI AML (p-code) execution - field manipulation 78 * exfield - ACPI AML (p-code) execution - field manipulation
88 */ 79 */
89acpi_status 80acpi_status
90acpi_ex_common_buffer_setup ( 81acpi_ex_common_buffer_setup(union acpi_operand_object *obj_desc,
91 union acpi_operand_object *obj_desc, 82 u32 buffer_length, u32 * datum_count);
92 u32 buffer_length,
93 u32 *datum_count);
94 83
95acpi_status 84acpi_status
96acpi_ex_write_with_update_rule ( 85acpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc,
97 union acpi_operand_object *obj_desc, 86 acpi_integer mask,
98 acpi_integer mask, 87 acpi_integer field_value,
99 acpi_integer field_value, 88 u32 field_datum_byte_offset);
100 u32 field_datum_byte_offset);
101 89
102void 90void
103acpi_ex_get_buffer_datum( 91acpi_ex_get_buffer_datum(acpi_integer * datum,
104 acpi_integer *datum, 92 void *buffer,
105 void *buffer, 93 u32 buffer_length,
106 u32 buffer_length, 94 u32 byte_granularity, u32 buffer_offset);
107 u32 byte_granularity,
108 u32 buffer_offset);
109 95
110void 96void
111acpi_ex_set_buffer_datum ( 97acpi_ex_set_buffer_datum(acpi_integer merged_datum,
112 acpi_integer merged_datum, 98 void *buffer,
113 void *buffer, 99 u32 buffer_length,
114 u32 buffer_length, 100 u32 byte_granularity, u32 buffer_offset);
115 u32 byte_granularity,
116 u32 buffer_offset);
117 101
118acpi_status 102acpi_status
119acpi_ex_read_data_from_field ( 103acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
120 struct acpi_walk_state *walk_state, 104 union acpi_operand_object *obj_desc,
121 union acpi_operand_object *obj_desc, 105 union acpi_operand_object **ret_buffer_desc);
122 union acpi_operand_object **ret_buffer_desc);
123 106
124acpi_status 107acpi_status
125acpi_ex_write_data_to_field ( 108acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
126 union acpi_operand_object *source_desc, 109 union acpi_operand_object *obj_desc,
127 union acpi_operand_object *obj_desc, 110 union acpi_operand_object **result_desc);
128 union acpi_operand_object **result_desc);
129
130 111
131/* 112/*
132 * exfldio - low level field I/O 113 * exfldio - low level field I/O
133 */ 114 */
134acpi_status 115acpi_status
135acpi_ex_extract_from_field ( 116acpi_ex_extract_from_field(union acpi_operand_object *obj_desc,
136 union acpi_operand_object *obj_desc, 117 void *buffer, u32 buffer_length);
137 void *buffer,
138 u32 buffer_length);
139 118
140acpi_status 119acpi_status
141acpi_ex_insert_into_field ( 120acpi_ex_insert_into_field(union acpi_operand_object *obj_desc,
142 union acpi_operand_object *obj_desc, 121 void *buffer, u32 buffer_length);
143 void *buffer,
144 u32 buffer_length);
145 122
146acpi_status 123acpi_status
147acpi_ex_access_region ( 124acpi_ex_access_region(union acpi_operand_object *obj_desc,
148 union acpi_operand_object *obj_desc, 125 u32 field_datum_byte_offset,
149 u32 field_datum_byte_offset, 126 acpi_integer * value, u32 read_write);
150 acpi_integer *value,
151 u32 read_write);
152
153 127
154/* 128/*
155 * exmisc - misc support routines 129 * exmisc - misc support routines
156 */ 130 */
157acpi_status 131acpi_status
158acpi_ex_get_object_reference ( 132acpi_ex_get_object_reference(union acpi_operand_object *obj_desc,
159 union acpi_operand_object *obj_desc, 133 union acpi_operand_object **return_desc,
160 union acpi_operand_object **return_desc, 134 struct acpi_walk_state *walk_state);
161 struct acpi_walk_state *walk_state);
162 135
163acpi_status 136acpi_status
164acpi_ex_concat_template ( 137acpi_ex_concat_template(union acpi_operand_object *obj_desc,
165 union acpi_operand_object *obj_desc, 138 union acpi_operand_object *obj_desc2,
166 union acpi_operand_object *obj_desc2, 139 union acpi_operand_object **actual_return_desc,
167 union acpi_operand_object **actual_return_desc, 140 struct acpi_walk_state *walk_state);
168 struct acpi_walk_state *walk_state);
169 141
170acpi_status 142acpi_status
171acpi_ex_do_concatenate ( 143acpi_ex_do_concatenate(union acpi_operand_object *obj_desc,
172 union acpi_operand_object *obj_desc, 144 union acpi_operand_object *obj_desc2,
173 union acpi_operand_object *obj_desc2, 145 union acpi_operand_object **actual_return_desc,
174 union acpi_operand_object **actual_return_desc, 146 struct acpi_walk_state *walk_state);
175 struct acpi_walk_state *walk_state);
176 147
177acpi_status 148acpi_status
178acpi_ex_do_logical_numeric_op ( 149acpi_ex_do_logical_numeric_op(u16 opcode,
179 u16 opcode, 150 acpi_integer integer0,
180 acpi_integer integer0, 151 acpi_integer integer1, u8 * logical_result);
181 acpi_integer integer1,
182 u8 *logical_result);
183 152
184acpi_status 153acpi_status
185acpi_ex_do_logical_op ( 154acpi_ex_do_logical_op(u16 opcode,
186 u16 opcode, 155 union acpi_operand_object *operand0,
187 union acpi_operand_object *operand0, 156 union acpi_operand_object *operand1, u8 * logical_result);
188 union acpi_operand_object *operand1,
189 u8 *logical_result);
190 157
191acpi_integer 158acpi_integer
192acpi_ex_do_math_op ( 159acpi_ex_do_math_op(u16 opcode, acpi_integer operand0, acpi_integer operand1);
193 u16 opcode,
194 acpi_integer operand0,
195 acpi_integer operand1);
196 160
197acpi_status 161acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state);
198acpi_ex_create_mutex (
199 struct acpi_walk_state *walk_state);
200 162
201acpi_status 163acpi_status acpi_ex_create_processor(struct acpi_walk_state *walk_state);
202acpi_ex_create_processor (
203 struct acpi_walk_state *walk_state);
204 164
205acpi_status 165acpi_status acpi_ex_create_power_resource(struct acpi_walk_state *walk_state);
206acpi_ex_create_power_resource (
207 struct acpi_walk_state *walk_state);
208 166
209acpi_status 167acpi_status
210acpi_ex_create_region ( 168acpi_ex_create_region(u8 * aml_start,
211 u8 *aml_start, 169 u32 aml_length,
212 u32 aml_length, 170 u8 region_space, struct acpi_walk_state *walk_state);
213 u8 region_space,
214 struct acpi_walk_state *walk_state);
215 171
216acpi_status 172acpi_status acpi_ex_create_table_region(struct acpi_walk_state *walk_state);
217acpi_ex_create_table_region (
218 struct acpi_walk_state *walk_state);
219 173
220acpi_status 174acpi_status acpi_ex_create_event(struct acpi_walk_state *walk_state);
221acpi_ex_create_event (
222 struct acpi_walk_state *walk_state);
223 175
224acpi_status 176acpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state);
225acpi_ex_create_alias (
226 struct acpi_walk_state *walk_state);
227 177
228acpi_status 178acpi_status
229acpi_ex_create_method ( 179acpi_ex_create_method(u8 * aml_start,
230 u8 *aml_start, 180 u32 aml_length, struct acpi_walk_state *walk_state);
231 u32 aml_length,
232 struct acpi_walk_state *walk_state);
233
234 181
235/* 182/*
236 * exconfig - dynamic table load/unload 183 * exconfig - dynamic table load/unload
237 */ 184 */
238acpi_status 185acpi_status
239acpi_ex_load_op ( 186acpi_ex_load_op(union acpi_operand_object *obj_desc,
240 union acpi_operand_object *obj_desc, 187 union acpi_operand_object *target,
241 union acpi_operand_object *target, 188 struct acpi_walk_state *walk_state);
242 struct acpi_walk_state *walk_state);
243 189
244acpi_status 190acpi_status
245acpi_ex_load_table_op ( 191acpi_ex_load_table_op(struct acpi_walk_state *walk_state,
246 struct acpi_walk_state *walk_state, 192 union acpi_operand_object **return_desc);
247 union acpi_operand_object **return_desc);
248
249acpi_status
250acpi_ex_unload_table (
251 union acpi_operand_object *ddb_handle);
252 193
194acpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle);
253 195
254/* 196/*
255 * exmutex - mutex support 197 * exmutex - mutex support
256 */ 198 */
257acpi_status 199acpi_status
258acpi_ex_acquire_mutex ( 200acpi_ex_acquire_mutex(union acpi_operand_object *time_desc,
259 union acpi_operand_object *time_desc, 201 union acpi_operand_object *obj_desc,
260 union acpi_operand_object *obj_desc, 202 struct acpi_walk_state *walk_state);
261 struct acpi_walk_state *walk_state);
262 203
263acpi_status 204acpi_status
264acpi_ex_release_mutex ( 205acpi_ex_release_mutex(union acpi_operand_object *obj_desc,
265 union acpi_operand_object *obj_desc, 206 struct acpi_walk_state *walk_state);
266 struct acpi_walk_state *walk_state);
267 207
268void 208void acpi_ex_release_all_mutexes(struct acpi_thread_state *thread);
269acpi_ex_release_all_mutexes (
270 struct acpi_thread_state *thread);
271
272void
273acpi_ex_unlink_mutex (
274 union acpi_operand_object *obj_desc);
275 209
210void acpi_ex_unlink_mutex(union acpi_operand_object *obj_desc);
276 211
277/* 212/*
278 * exprep - ACPI AML execution - prep utilities 213 * exprep - ACPI AML execution - prep utilities
279 */ 214 */
280acpi_status 215acpi_status
281acpi_ex_prep_common_field_object ( 216acpi_ex_prep_common_field_object(union acpi_operand_object *obj_desc,
282 union acpi_operand_object *obj_desc, 217 u8 field_flags,
283 u8 field_flags, 218 u8 field_attribute,
284 u8 field_attribute, 219 u32 field_bit_position, u32 field_bit_length);
285 u32 field_bit_position,
286 u32 field_bit_length);
287
288acpi_status
289acpi_ex_prep_field_value (
290 struct acpi_create_field_info *info);
291 220
221acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info);
292 222
293/* 223/*
294 * exsystem - Interface to OS services 224 * exsystem - Interface to OS services
295 */ 225 */
296acpi_status 226acpi_status
297acpi_ex_system_do_notify_op ( 227acpi_ex_system_do_notify_op(union acpi_operand_object *value,
298 union acpi_operand_object *value, 228 union acpi_operand_object *obj_desc);
299 union acpi_operand_object *obj_desc);
300 229
301acpi_status 230acpi_status acpi_ex_system_do_suspend(acpi_integer time);
302acpi_ex_system_do_suspend(
303 acpi_integer time);
304 231
305acpi_status 232acpi_status acpi_ex_system_do_stall(u32 time);
306acpi_ex_system_do_stall (
307 u32 time);
308 233
309acpi_status 234acpi_status
310acpi_ex_system_acquire_mutex( 235acpi_ex_system_acquire_mutex(union acpi_operand_object *time,
311 union acpi_operand_object *time, 236 union acpi_operand_object *obj_desc);
312 union acpi_operand_object *obj_desc);
313 237
314acpi_status 238acpi_status acpi_ex_system_release_mutex(union acpi_operand_object *obj_desc);
315acpi_ex_system_release_mutex(
316 union acpi_operand_object *obj_desc);
317 239
318acpi_status 240acpi_status acpi_ex_system_signal_event(union acpi_operand_object *obj_desc);
319acpi_ex_system_signal_event(
320 union acpi_operand_object *obj_desc);
321 241
322acpi_status 242acpi_status
323acpi_ex_system_wait_event( 243acpi_ex_system_wait_event(union acpi_operand_object *time,
324 union acpi_operand_object *time, 244 union acpi_operand_object *obj_desc);
325 union acpi_operand_object *obj_desc);
326 245
327acpi_status 246acpi_status acpi_ex_system_reset_event(union acpi_operand_object *obj_desc);
328acpi_ex_system_reset_event(
329 union acpi_operand_object *obj_desc);
330
331acpi_status
332acpi_ex_system_wait_semaphore (
333 acpi_handle semaphore,
334 u16 timeout);
335 247
248acpi_status acpi_ex_system_wait_semaphore(acpi_handle semaphore, u16 timeout);
336 249
337/* 250/*
338 * exoparg1 - ACPI AML execution, 1 operand 251 * exoparg1 - ACPI AML execution, 1 operand
339 */ 252 */
340acpi_status 253acpi_status acpi_ex_opcode_0A_0T_1R(struct acpi_walk_state *walk_state);
341acpi_ex_opcode_0A_0T_1R (
342 struct acpi_walk_state *walk_state);
343 254
344acpi_status 255acpi_status acpi_ex_opcode_1A_0T_0R(struct acpi_walk_state *walk_state);
345acpi_ex_opcode_1A_0T_0R (
346 struct acpi_walk_state *walk_state);
347 256
348acpi_status 257acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state);
349acpi_ex_opcode_1A_0T_1R (
350 struct acpi_walk_state *walk_state);
351 258
352acpi_status 259acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state);
353acpi_ex_opcode_1A_1T_1R (
354 struct acpi_walk_state *walk_state);
355 260
356acpi_status 261acpi_status acpi_ex_opcode_1A_1T_0R(struct acpi_walk_state *walk_state);
357acpi_ex_opcode_1A_1T_0R (
358 struct acpi_walk_state *walk_state);
359 262
360/* 263/*
361 * exoparg2 - ACPI AML execution, 2 operands 264 * exoparg2 - ACPI AML execution, 2 operands
362 */ 265 */
363acpi_status 266acpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state);
364acpi_ex_opcode_2A_0T_0R (
365 struct acpi_walk_state *walk_state);
366 267
367acpi_status 268acpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state);
368acpi_ex_opcode_2A_0T_1R (
369 struct acpi_walk_state *walk_state);
370 269
371acpi_status 270acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state);
372acpi_ex_opcode_2A_1T_1R (
373 struct acpi_walk_state *walk_state);
374
375acpi_status
376acpi_ex_opcode_2A_2T_1R (
377 struct acpi_walk_state *walk_state);
378 271
272acpi_status acpi_ex_opcode_2A_2T_1R(struct acpi_walk_state *walk_state);
379 273
380/* 274/*
381 * exoparg3 - ACPI AML execution, 3 operands 275 * exoparg3 - ACPI AML execution, 3 operands
382 */ 276 */
383acpi_status 277acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state);
384acpi_ex_opcode_3A_0T_0R (
385 struct acpi_walk_state *walk_state);
386
387acpi_status
388acpi_ex_opcode_3A_1T_1R (
389 struct acpi_walk_state *walk_state);
390 278
279acpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state);
391 280
392/* 281/*
393 * exoparg6 - ACPI AML execution, 6 operands 282 * exoparg6 - ACPI AML execution, 6 operands
394 */ 283 */
395acpi_status 284acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state *walk_state);
396acpi_ex_opcode_6A_0T_1R (
397 struct acpi_walk_state *walk_state);
398
399 285
400/* 286/*
401 * exresolv - Object resolution and get value functions 287 * exresolv - Object resolution and get value functions
402 */ 288 */
403acpi_status 289acpi_status
404acpi_ex_resolve_to_value ( 290acpi_ex_resolve_to_value(union acpi_operand_object **stack_ptr,
405 union acpi_operand_object **stack_ptr, 291 struct acpi_walk_state *walk_state);
406 struct acpi_walk_state *walk_state);
407 292
408acpi_status 293acpi_status
409acpi_ex_resolve_multiple ( 294acpi_ex_resolve_multiple(struct acpi_walk_state *walk_state,
410 struct acpi_walk_state *walk_state, 295 union acpi_operand_object *operand,
411 union acpi_operand_object *operand, 296 acpi_object_type * return_type,
412 acpi_object_type *return_type, 297 union acpi_operand_object **return_desc);
413 union acpi_operand_object **return_desc);
414
415 298
416/* 299/*
417 * exresnte - resolve namespace node 300 * exresnte - resolve namespace node
418 */ 301 */
419acpi_status 302acpi_status
420acpi_ex_resolve_node_to_value ( 303acpi_ex_resolve_node_to_value(struct acpi_namespace_node **stack_ptr,
421 struct acpi_namespace_node **stack_ptr, 304 struct acpi_walk_state *walk_state);
422 struct acpi_walk_state *walk_state);
423
424 305
425/* 306/*
426 * exresop - resolve operand to value 307 * exresop - resolve operand to value
427 */ 308 */
428acpi_status 309acpi_status
429acpi_ex_resolve_operands ( 310acpi_ex_resolve_operands(u16 opcode,
430 u16 opcode, 311 union acpi_operand_object **stack_ptr,
431 union acpi_operand_object **stack_ptr, 312 struct acpi_walk_state *walk_state);
432 struct acpi_walk_state *walk_state);
433
434 313
435/* 314/*
436 * exdump - Interpreter debug output routines 315 * exdump - Interpreter debug output routines
437 */ 316 */
438void 317void acpi_ex_dump_operand(union acpi_operand_object *obj_desc, u32 depth);
439acpi_ex_dump_operand (
440 union acpi_operand_object *obj_desc,
441 u32 depth);
442 318
443void 319void
444acpi_ex_dump_operands ( 320acpi_ex_dump_operands(union acpi_operand_object **operands,
445 union acpi_operand_object **operands, 321 acpi_interpreter_mode interpreter_mode,
446 acpi_interpreter_mode interpreter_mode, 322 char *ident,
447 char *ident, 323 u32 num_levels,
448 u32 num_levels, 324 char *note, char *module_name, u32 line_number);
449 char *note,
450 char *module_name,
451 u32 line_number);
452 325
453#ifdef ACPI_FUTURE_USAGE 326#ifdef ACPI_FUTURE_USAGE
454void 327void
455acpi_ex_dump_object_descriptor ( 328acpi_ex_dump_object_descriptor(union acpi_operand_object *object, u32 flags);
456 union acpi_operand_object *object,
457 u32 flags);
458
459void
460acpi_ex_dump_node (
461 struct acpi_namespace_node *node,
462 u32 flags);
463#endif /* ACPI_FUTURE_USAGE */
464 329
330void acpi_ex_dump_node(struct acpi_namespace_node *node, u32 flags);
331#endif /* ACPI_FUTURE_USAGE */
465 332
466/* 333/*
467 * exnames - AML namestring support 334 * exnames - AML namestring support
468 */ 335 */
469acpi_status 336acpi_status
470acpi_ex_get_name_string ( 337acpi_ex_get_name_string(acpi_object_type data_type,
471 acpi_object_type data_type, 338 u8 * in_aml_address,
472 u8 *in_aml_address, 339 char **out_name_string, u32 * out_name_length);
473 char **out_name_string,
474 u32 *out_name_length);
475
476 340
477/* 341/*
478 * exstore - Object store support 342 * exstore - Object store support
479 */ 343 */
480acpi_status 344acpi_status
481acpi_ex_store ( 345acpi_ex_store(union acpi_operand_object *val_desc,
482 union acpi_operand_object *val_desc, 346 union acpi_operand_object *dest_desc,
483 union acpi_operand_object *dest_desc, 347 struct acpi_walk_state *walk_state);
484 struct acpi_walk_state *walk_state);
485 348
486acpi_status 349acpi_status
487acpi_ex_store_object_to_node ( 350acpi_ex_store_object_to_node(union acpi_operand_object *source_desc,
488 union acpi_operand_object *source_desc, 351 struct acpi_namespace_node *node,
489 struct acpi_namespace_node *node, 352 struct acpi_walk_state *walk_state,
490 struct acpi_walk_state *walk_state, 353 u8 implicit_conversion);
491 u8 implicit_conversion);
492 354
493#define ACPI_IMPLICIT_CONVERSION TRUE 355#define ACPI_IMPLICIT_CONVERSION TRUE
494#define ACPI_NO_IMPLICIT_CONVERSION FALSE 356#define ACPI_NO_IMPLICIT_CONVERSION FALSE
495 357
496
497/* 358/*
498 * exstoren - resolve/store object 359 * exstoren - resolve/store object
499 */ 360 */
500acpi_status 361acpi_status
501acpi_ex_resolve_object ( 362acpi_ex_resolve_object(union acpi_operand_object **source_desc_ptr,
502 union acpi_operand_object **source_desc_ptr, 363 acpi_object_type target_type,
503 acpi_object_type target_type, 364 struct acpi_walk_state *walk_state);
504 struct acpi_walk_state *walk_state);
505 365
506acpi_status 366acpi_status
507acpi_ex_store_object_to_object ( 367acpi_ex_store_object_to_object(union acpi_operand_object *source_desc,
508 union acpi_operand_object *source_desc, 368 union acpi_operand_object *dest_desc,
509 union acpi_operand_object *dest_desc, 369 union acpi_operand_object **new_desc,
510 union acpi_operand_object **new_desc, 370 struct acpi_walk_state *walk_state);
511 struct acpi_walk_state *walk_state);
512
513 371
514/* 372/*
515 * exstorob - store object - buffer/string 373 * exstorob - store object - buffer/string
516 */ 374 */
517acpi_status 375acpi_status
518acpi_ex_store_buffer_to_buffer ( 376acpi_ex_store_buffer_to_buffer(union acpi_operand_object *source_desc,
519 union acpi_operand_object *source_desc, 377 union acpi_operand_object *target_desc);
520 union acpi_operand_object *target_desc);
521 378
522acpi_status 379acpi_status
523acpi_ex_store_string_to_string ( 380acpi_ex_store_string_to_string(union acpi_operand_object *source_desc,
524 union acpi_operand_object *source_desc, 381 union acpi_operand_object *target_desc);
525 union acpi_operand_object *target_desc);
526
527 382
528/* 383/*
529 * excopy - object copy 384 * excopy - object copy
530 */ 385 */
531acpi_status 386acpi_status
532acpi_ex_copy_integer_to_index_field ( 387acpi_ex_copy_integer_to_index_field(union acpi_operand_object *source_desc,
533 union acpi_operand_object *source_desc, 388 union acpi_operand_object *target_desc);
534 union acpi_operand_object *target_desc);
535 389
536acpi_status 390acpi_status
537acpi_ex_copy_integer_to_bank_field ( 391acpi_ex_copy_integer_to_bank_field(union acpi_operand_object *source_desc,
538 union acpi_operand_object *source_desc, 392 union acpi_operand_object *target_desc);
539 union acpi_operand_object *target_desc);
540 393
541acpi_status 394acpi_status
542acpi_ex_copy_data_to_named_field ( 395acpi_ex_copy_data_to_named_field(union acpi_operand_object *source_desc,
543 union acpi_operand_object *source_desc, 396 struct acpi_namespace_node *node);
544 struct acpi_namespace_node *node);
545 397
546acpi_status 398acpi_status
547acpi_ex_copy_integer_to_buffer_field ( 399acpi_ex_copy_integer_to_buffer_field(union acpi_operand_object *source_desc,
548 union acpi_operand_object *source_desc, 400 union acpi_operand_object *target_desc);
549 union acpi_operand_object *target_desc);
550
551 401
552/* 402/*
553 * exutils - interpreter/scanner utilities 403 * exutils - interpreter/scanner utilities
554 */ 404 */
555acpi_status 405acpi_status acpi_ex_enter_interpreter(void);
556acpi_ex_enter_interpreter (
557 void);
558 406
559void 407void acpi_ex_exit_interpreter(void);
560acpi_ex_exit_interpreter (
561 void);
562 408
563void 409void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc);
564acpi_ex_truncate_for32bit_table (
565 union acpi_operand_object *obj_desc);
566 410
567u8 411u8 acpi_ex_acquire_global_lock(u32 rule);
568acpi_ex_acquire_global_lock (
569 u32 rule);
570 412
571void 413void acpi_ex_release_global_lock(u8 locked);
572acpi_ex_release_global_lock (
573 u8 locked);
574 414
575void 415void acpi_ex_eisa_id_to_string(u32 numeric_id, char *out_string);
576acpi_ex_eisa_id_to_string (
577 u32 numeric_id,
578 char *out_string);
579
580void
581acpi_ex_unsigned_integer_to_string (
582 acpi_integer value,
583 char *out_string);
584 416
417void acpi_ex_unsigned_integer_to_string(acpi_integer value, char *out_string);
585 418
586/* 419/*
587 * exregion - default op_region handlers 420 * exregion - default op_region handlers
588 */ 421 */
589acpi_status 422acpi_status
590acpi_ex_system_memory_space_handler ( 423acpi_ex_system_memory_space_handler(u32 function,
591 u32 function, 424 acpi_physical_address address,
592 acpi_physical_address address, 425 u32 bit_width,
593 u32 bit_width, 426 acpi_integer * value,
594 acpi_integer *value, 427 void *handler_context,
595 void *handler_context, 428 void *region_context);
596 void *region_context); 429
597 430acpi_status
598acpi_status 431acpi_ex_system_io_space_handler(u32 function,
599acpi_ex_system_io_space_handler ( 432 acpi_physical_address address,
600 u32 function, 433 u32 bit_width,
601 acpi_physical_address address, 434 acpi_integer * value,
602 u32 bit_width, 435 void *handler_context, void *region_context);
603 acpi_integer *value, 436
604 void *handler_context, 437acpi_status
605 void *region_context); 438acpi_ex_pci_config_space_handler(u32 function,
606 439 acpi_physical_address address,
607acpi_status 440 u32 bit_width,
608acpi_ex_pci_config_space_handler ( 441 acpi_integer * value,
609 u32 function, 442 void *handler_context, void *region_context);
610 acpi_physical_address address, 443
611 u32 bit_width, 444acpi_status
612 acpi_integer *value, 445acpi_ex_cmos_space_handler(u32 function,
613 void *handler_context, 446 acpi_physical_address address,
614 void *region_context); 447 u32 bit_width,
615 448 acpi_integer * value,
616acpi_status 449 void *handler_context, void *region_context);
617acpi_ex_cmos_space_handler ( 450
618 u32 function, 451acpi_status
619 acpi_physical_address address, 452acpi_ex_pci_bar_space_handler(u32 function,
620 u32 bit_width, 453 acpi_physical_address address,
621 acpi_integer *value, 454 u32 bit_width,
622 void *handler_context, 455 acpi_integer * value,
623 void *region_context); 456 void *handler_context, void *region_context);
624 457
625acpi_status 458acpi_status
626acpi_ex_pci_bar_space_handler ( 459acpi_ex_embedded_controller_space_handler(u32 function,
627 u32 function, 460 acpi_physical_address address,
628 acpi_physical_address address, 461 u32 bit_width,
629 u32 bit_width, 462 acpi_integer * value,
630 acpi_integer *value, 463 void *handler_context,
631 void *handler_context, 464 void *region_context);
632 void *region_context); 465
633 466acpi_status
634acpi_status 467acpi_ex_sm_bus_space_handler(u32 function,
635acpi_ex_embedded_controller_space_handler ( 468 acpi_physical_address address,
636 u32 function, 469 u32 bit_width,
637 acpi_physical_address address, 470 acpi_integer * value,
638 u32 bit_width, 471 void *handler_context, void *region_context);
639 acpi_integer *value, 472
640 void *handler_context, 473acpi_status
641 void *region_context); 474acpi_ex_data_table_space_handler(u32 function,
642 475 acpi_physical_address address,
643acpi_status 476 u32 bit_width,
644acpi_ex_sm_bus_space_handler ( 477 acpi_integer * value,
645 u32 function, 478 void *handler_context, void *region_context);
646 acpi_physical_address address, 479
647 u32 bit_width, 480#endif /* __INTERP_H__ */
648 acpi_integer *value,
649 void *handler_context,
650 void *region_context);
651
652
653acpi_status
654acpi_ex_data_table_space_handler (
655 u32 function,
656 acpi_physical_address address,
657 u32 bit_width,
658 acpi_integer *value,
659 void *handler_context,
660 void *region_context);
661
662#endif /* __INTERP_H__ */
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h
index 030e641115cb..9fba0fddda90 100644
--- a/include/acpi/aclocal.h
+++ b/include/acpi/aclocal.h
@@ -44,17 +44,20 @@
44#ifndef __ACLOCAL_H__ 44#ifndef __ACLOCAL_H__
45#define __ACLOCAL_H__ 45#define __ACLOCAL_H__
46 46
47#define ACPI_WAIT_FOREVER 0xFFFF /* u16, as per ACPI spec */
47 48
48#define ACPI_WAIT_FOREVER 0xFFFF /* u16, as per ACPI spec */ 49typedef void *acpi_mutex;
49 50typedef u32 acpi_mutex_handle;
50typedef void * acpi_mutex;
51typedef u32 acpi_mutex_handle;
52
53 51
54/* Total number of aml opcodes defined */ 52/* Total number of aml opcodes defined */
55 53
56#define AML_NUM_OPCODES 0x7F 54#define AML_NUM_OPCODES 0x7F
57 55
56/* Forward declarations */
57
58struct acpi_walk_state;
59struct acpi_obj_mutex;
60union acpi_parse_object;
58 61
59/***************************************************************************** 62/*****************************************************************************
60 * 63 *
@@ -62,7 +65,6 @@ typedef u32 acpi_mutex_handle;
62 * 65 *
63 ****************************************************************************/ 66 ****************************************************************************/
64 67
65
66/* 68/*
67 * Predefined handles for the mutex objects used within the subsystem 69 * Predefined handles for the mutex objects used within the subsystem
68 * All mutex objects are automatically created by acpi_ut_mutex_initialize. 70 * All mutex objects are automatically created by acpi_ut_mutex_initialize.
@@ -89,14 +91,12 @@ typedef u32 acpi_mutex_handle;
89#define MAX_MUTEX 12 91#define MAX_MUTEX 12
90#define NUM_MUTEX MAX_MUTEX+1 92#define NUM_MUTEX MAX_MUTEX+1
91 93
92
93#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 94#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
94#ifdef DEFINE_ACPI_GLOBALS 95#ifdef DEFINE_ACPI_GLOBALS
95 96
96/* Names for the mutexes used in the subsystem */ 97/* Names for the mutexes used in the subsystem */
97 98
98static char *acpi_gbl_mutex_names[] = 99static char *acpi_gbl_mutex_names[] = {
99{
100 "ACPI_MTX_Execute", 100 "ACPI_MTX_Execute",
101 "ACPI_MTX_Interpreter", 101 "ACPI_MTX_Interpreter",
102 "ACPI_MTX_Parser", 102 "ACPI_MTX_Parser",
@@ -115,34 +115,28 @@ static char *acpi_gbl_mutex_names[] =
115#endif 115#endif
116#endif 116#endif
117 117
118/* Owner IDs are used to track namespace nodes for selective deletion */
118 119
119/* Table for the global mutexes */ 120typedef u8 acpi_owner_id;
121#define ACPI_OWNER_ID_MAX 0xFF
120 122
121struct acpi_mutex_info 123/* This Thread ID means that the mutex is not in use (unlocked) */
122{
123 acpi_mutex mutex;
124 u32 use_count;
125 u32 owner_id;
126};
127 124
128/* This owner ID means that the mutex is not in use (unlocked) */ 125#define ACPI_MUTEX_NOT_ACQUIRED (u32) -1
129 126
130#define ACPI_MUTEX_NOT_ACQUIRED (u32) (-1) 127/* Table for the global mutexes */
131 128
129struct acpi_mutex_info {
130 acpi_mutex mutex;
131 u32 use_count;
132 u32 thread_id;
133};
132 134
133/* Lock flag parameter for various interfaces */ 135/* Lock flag parameter for various interfaces */
134 136
135#define ACPI_MTX_DO_NOT_LOCK 0 137#define ACPI_MTX_DO_NOT_LOCK 0
136#define ACPI_MTX_LOCK 1 138#define ACPI_MTX_LOCK 1
137 139
138
139typedef u16 acpi_owner_id;
140#define ACPI_OWNER_TYPE_TABLE 0x0
141#define ACPI_OWNER_TYPE_METHOD 0x1
142#define ACPI_FIRST_METHOD_ID 0x0001
143#define ACPI_FIRST_TABLE_ID 0xF000
144
145
146/* Field access granularities */ 140/* Field access granularities */
147 141
148#define ACPI_FIELD_BYTE_GRANULARITY 1 142#define ACPI_FIELD_BYTE_GRANULARITY 1
@@ -150,7 +144,6 @@ typedef u16 acpi_owner_id;
150#define ACPI_FIELD_DWORD_GRANULARITY 4 144#define ACPI_FIELD_DWORD_GRANULARITY 4
151#define ACPI_FIELD_QWORD_GRANULARITY 8 145#define ACPI_FIELD_QWORD_GRANULARITY 8
152 146
153
154/***************************************************************************** 147/*****************************************************************************
155 * 148 *
156 * Namespace typedefs and structs 149 * Namespace typedefs and structs
@@ -159,15 +152,12 @@ typedef u16 acpi_owner_id;
159 152
160/* Operational modes of the AML interpreter/scanner */ 153/* Operational modes of the AML interpreter/scanner */
161 154
162typedef enum 155typedef enum {
163{ 156 ACPI_IMODE_LOAD_PASS1 = 0x01,
164 ACPI_IMODE_LOAD_PASS1 = 0x01, 157 ACPI_IMODE_LOAD_PASS2 = 0x02,
165 ACPI_IMODE_LOAD_PASS2 = 0x02, 158 ACPI_IMODE_EXECUTE = 0x0E
166 ACPI_IMODE_EXECUTE = 0x0E
167
168} acpi_interpreter_mode; 159} acpi_interpreter_mode;
169 160
170
171/* 161/*
172 * The Node describes a named object that appears in the AML 162 * The Node describes a named object that appears in the AML
173 * An acpi_node is used to store Nodes. 163 * An acpi_node is used to store Nodes.
@@ -175,34 +165,37 @@ typedef enum
175 * data_type is used to differentiate between internal descriptors, and MUST 165 * data_type is used to differentiate between internal descriptors, and MUST
176 * be the first byte in this structure. 166 * be the first byte in this structure.
177 */ 167 */
178union acpi_name_union 168union acpi_name_union {
179{ 169 u32 integer;
180 u32 integer; 170 char ascii[4];
181 char ascii[4]; 171};
182}; 172
183 173struct acpi_namespace_node {
184struct acpi_namespace_node 174 u8 descriptor; /* Used to differentiate object descriptor types */
185{ 175 u8 type; /* Type associated with this name */
186 u8 descriptor; /* Used to differentiate object descriptor types */ 176 u16 reference_count; /* Current count of references and children */
187 u8 type; /* Type associated with this name */ 177 union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */
188 u16 owner_id; 178 union acpi_operand_object *object; /* Pointer to attached ACPI object (optional) */
189 union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */ 179 struct acpi_namespace_node *child; /* First child */
190 union acpi_operand_object *object; /* Pointer to attached ACPI object (optional) */ 180 struct acpi_namespace_node *peer; /* Next peer */
191 struct acpi_namespace_node *child; /* First child */ 181 u8 owner_id; /* Who created this node */
192 struct acpi_namespace_node *peer; /* Next peer*/ 182 u8 flags;
193 u16 reference_count; /* Current count of references and children */ 183
194 u8 flags; 184 /* Fields used by the ASL compiler only */
185
186#ifdef ACPI_ASL_COMPILER
187 u32 value;
188 union acpi_parse_object *op;
189#endif
195}; 190};
196 191
197
198#define ACPI_ENTRY_NOT_FOUND NULL 192#define ACPI_ENTRY_NOT_FOUND NULL
199 193
200
201/* Node flags */ 194/* Node flags */
202 195
203#define ANOBJ_RESERVED 0x01 196#define ANOBJ_RESERVED 0x01
204#define ANOBJ_END_OF_PEER_LIST 0x02 197#define ANOBJ_END_OF_PEER_LIST 0x02
205#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */ 198#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */
206#define ANOBJ_METHOD_ARG 0x08 199#define ANOBJ_METHOD_ARG 0x08
207#define ANOBJ_METHOD_LOCAL 0x10 200#define ANOBJ_METHOD_LOCAL 0x10
208#define ANOBJ_METHOD_NO_RETVAL 0x20 201#define ANOBJ_METHOD_NO_RETVAL 0x20
@@ -212,91 +205,77 @@ struct acpi_namespace_node
212/* 205/*
213 * ACPI Table Descriptor. One per ACPI table 206 * ACPI Table Descriptor. One per ACPI table
214 */ 207 */
215struct acpi_table_desc 208struct acpi_table_desc {
216{ 209 struct acpi_table_desc *prev;
217 struct acpi_table_desc *prev; 210 struct acpi_table_desc *next;
218 struct acpi_table_desc *next; 211 struct acpi_table_desc *installed_desc;
219 struct acpi_table_desc *installed_desc; 212 struct acpi_table_header *pointer;
220 struct acpi_table_header *pointer; 213 u8 *aml_start;
221 u8 *aml_start; 214 u64 physical_address;
222 u64 physical_address; 215 u32 aml_length;
223 u32 aml_length; 216 acpi_size length;
224 acpi_size length; 217 acpi_owner_id owner_id;
225 acpi_owner_id table_id; 218 u8 type;
226 u8 type; 219 u8 allocation;
227 u8 allocation; 220 u8 loaded_into_namespace;
228 u8 loaded_into_namespace;
229}; 221};
230 222
231struct acpi_table_list 223struct acpi_table_list {
232{ 224 struct acpi_table_desc *next;
233 struct acpi_table_desc *next; 225 u32 count;
234 u32 count;
235}; 226};
236 227
237 228struct acpi_find_context {
238struct acpi_find_context 229 char *search_for;
239{ 230 acpi_handle *list;
240 char *search_for; 231 u32 *count;
241 acpi_handle *list;
242 u32 *count;
243}; 232};
244 233
245 234struct acpi_ns_search_data {
246struct acpi_ns_search_data 235 struct acpi_namespace_node *node;
247{
248 struct acpi_namespace_node *node;
249}; 236};
250 237
251
252/* 238/*
253 * Predefined Namespace items 239 * Predefined Namespace items
254 */ 240 */
255struct acpi_predefined_names 241struct acpi_predefined_names {
256{ 242 char *name;
257 char *name; 243 u8 type;
258 u8 type; 244 char *val;
259 char *val;
260}; 245};
261 246
262
263/* Object types used during package copies */ 247/* Object types used during package copies */
264 248
265
266#define ACPI_COPY_TYPE_SIMPLE 0 249#define ACPI_COPY_TYPE_SIMPLE 0
267#define ACPI_COPY_TYPE_PACKAGE 1 250#define ACPI_COPY_TYPE_PACKAGE 1
268 251
269/* Info structure used to convert external<->internal namestrings */ 252/* Info structure used to convert external<->internal namestrings */
270 253
271struct acpi_namestring_info 254struct acpi_namestring_info {
272{ 255 char *external_name;
273 char *external_name; 256 char *next_external_char;
274 char *next_external_char; 257 char *internal_name;
275 char *internal_name; 258 u32 length;
276 u32 length; 259 u32 num_segments;
277 u32 num_segments; 260 u32 num_carats;
278 u32 num_carats; 261 u8 fully_qualified;
279 u8 fully_qualified;
280}; 262};
281 263
282
283/* Field creation info */ 264/* Field creation info */
284 265
285struct acpi_create_field_info 266struct acpi_create_field_info {
286{ 267 struct acpi_namespace_node *region_node;
287 struct acpi_namespace_node *region_node; 268 struct acpi_namespace_node *field_node;
288 struct acpi_namespace_node *field_node; 269 struct acpi_namespace_node *register_node;
289 struct acpi_namespace_node *register_node; 270 struct acpi_namespace_node *data_register_node;
290 struct acpi_namespace_node *data_register_node; 271 u32 bank_value;
291 u32 bank_value; 272 u32 field_bit_position;
292 u32 field_bit_position; 273 u32 field_bit_length;
293 u32 field_bit_length; 274 u8 field_flags;
294 u8 field_flags; 275 u8 attribute;
295 u8 attribute; 276 u8 field_type;
296 u8 field_type;
297}; 277};
298 278
299
300/***************************************************************************** 279/*****************************************************************************
301 * 280 *
302 * Event typedefs and structs 281 * Event typedefs and structs
@@ -305,108 +284,95 @@ struct acpi_create_field_info
305 284
306/* Dispatch info for each GPE -- either a method or handler, cannot be both */ 285/* Dispatch info for each GPE -- either a method or handler, cannot be both */
307 286
308struct acpi_handler_info 287struct acpi_handler_info {
309{ 288 acpi_event_handler address; /* Address of handler, if any */
310 acpi_event_handler address; /* Address of handler, if any */ 289 void *context; /* Context to be passed to handler */
311 void *context; /* Context to be passed to handler */ 290 struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */
312 struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */
313}; 291};
314 292
315union acpi_gpe_dispatch_info 293union acpi_gpe_dispatch_info {
316{ 294 struct acpi_namespace_node *method_node; /* Method node for this GPE level */
317 struct acpi_namespace_node *method_node; /* Method node for this GPE level */ 295 struct acpi_handler_info *handler;
318 struct acpi_handler_info *handler;
319}; 296};
320 297
321/* 298/*
322 * Information about a GPE, one per each GPE in an array. 299 * Information about a GPE, one per each GPE in an array.
323 * NOTE: Important to keep this struct as small as possible. 300 * NOTE: Important to keep this struct as small as possible.
324 */ 301 */
325struct acpi_gpe_event_info 302struct acpi_gpe_event_info {
326{ 303 union acpi_gpe_dispatch_info dispatch; /* Either Method or Handler */
327 union acpi_gpe_dispatch_info dispatch; /* Either Method or Handler */ 304 struct acpi_gpe_register_info *register_info; /* Backpointer to register info */
328 struct acpi_gpe_register_info *register_info; /* Backpointer to register info */ 305 u8 flags; /* Misc info about this GPE */
329 u8 flags; /* Misc info about this GPE */ 306 u8 register_bit; /* This GPE bit within the register */
330 u8 register_bit; /* This GPE bit within the register */
331}; 307};
332 308
333/* Information about a GPE register pair, one per each status/enable pair in an array */ 309/* Information about a GPE register pair, one per each status/enable pair in an array */
334 310
335struct acpi_gpe_register_info 311struct acpi_gpe_register_info {
336{ 312 struct acpi_generic_address status_address; /* Address of status reg */
337 struct acpi_generic_address status_address; /* Address of status reg */ 313 struct acpi_generic_address enable_address; /* Address of enable reg */
338 struct acpi_generic_address enable_address; /* Address of enable reg */ 314 u8 enable_for_wake; /* GPEs to keep enabled when sleeping */
339 u8 enable_for_wake; /* GPEs to keep enabled when sleeping */ 315 u8 enable_for_run; /* GPEs to keep enabled when running */
340 u8 enable_for_run; /* GPEs to keep enabled when running */ 316 u8 base_gpe_number; /* Base GPE number for this register */
341 u8 base_gpe_number; /* Base GPE number for this register */
342}; 317};
343 318
344/* 319/*
345 * Information about a GPE register block, one per each installed block -- 320 * Information about a GPE register block, one per each installed block --
346 * GPE0, GPE1, and one per each installed GPE Block Device. 321 * GPE0, GPE1, and one per each installed GPE Block Device.
347 */ 322 */
348struct acpi_gpe_block_info 323struct acpi_gpe_block_info {
349{ 324 struct acpi_namespace_node *node;
350 struct acpi_namespace_node *node; 325 struct acpi_gpe_block_info *previous;
351 struct acpi_gpe_block_info *previous; 326 struct acpi_gpe_block_info *next;
352 struct acpi_gpe_block_info *next; 327 struct acpi_gpe_xrupt_info *xrupt_block; /* Backpointer to interrupt block */
353 struct acpi_gpe_xrupt_info *xrupt_block; /* Backpointer to interrupt block */ 328 struct acpi_gpe_register_info *register_info; /* One per GPE register pair */
354 struct acpi_gpe_register_info *register_info; /* One per GPE register pair */ 329 struct acpi_gpe_event_info *event_info; /* One for each GPE */
355 struct acpi_gpe_event_info *event_info; /* One for each GPE */ 330 struct acpi_generic_address block_address; /* Base address of the block */
356 struct acpi_generic_address block_address; /* Base address of the block */ 331 u32 register_count; /* Number of register pairs in block */
357 u32 register_count; /* Number of register pairs in block */ 332 u8 block_base_number; /* Base GPE number for this block */
358 u8 block_base_number;/* Base GPE number for this block */
359}; 333};
360 334
361/* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */ 335/* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */
362 336
363struct acpi_gpe_xrupt_info 337struct acpi_gpe_xrupt_info {
364{ 338 struct acpi_gpe_xrupt_info *previous;
365 struct acpi_gpe_xrupt_info *previous; 339 struct acpi_gpe_xrupt_info *next;
366 struct acpi_gpe_xrupt_info *next; 340 struct acpi_gpe_block_info *gpe_block_list_head; /* List of GPE blocks for this xrupt */
367 struct acpi_gpe_block_info *gpe_block_list_head; /* List of GPE blocks for this xrupt */ 341 u32 interrupt_number; /* System interrupt number */
368 u32 interrupt_level; /* System interrupt level */
369}; 342};
370 343
371 344struct acpi_gpe_walk_info {
372struct acpi_gpe_walk_info 345 struct acpi_namespace_node *gpe_device;
373{ 346 struct acpi_gpe_block_info *gpe_block;
374 struct acpi_namespace_node *gpe_device;
375 struct acpi_gpe_block_info *gpe_block;
376}; 347};
377 348
378 349typedef acpi_status(*ACPI_GPE_CALLBACK) (struct acpi_gpe_xrupt_info *
379typedef acpi_status (*ACPI_GPE_CALLBACK) ( 350 gpe_xrupt_info,
380 struct acpi_gpe_xrupt_info *gpe_xrupt_info, 351 struct acpi_gpe_block_info *
381 struct acpi_gpe_block_info *gpe_block); 352 gpe_block);
382
383 353
384/* Information about each particular fixed event */ 354/* Information about each particular fixed event */
385 355
386struct acpi_fixed_event_handler 356struct acpi_fixed_event_handler {
387{ 357 acpi_event_handler handler; /* Address of handler. */
388 acpi_event_handler handler; /* Address of handler. */ 358 void *context; /* Context to be passed to handler */
389 void *context; /* Context to be passed to handler */
390}; 359};
391 360
392struct acpi_fixed_event_info 361struct acpi_fixed_event_info {
393{ 362 u8 status_register_id;
394 u8 status_register_id; 363 u8 enable_register_id;
395 u8 enable_register_id; 364 u16 status_bit_mask;
396 u16 status_bit_mask; 365 u16 enable_bit_mask;
397 u16 enable_bit_mask;
398}; 366};
399 367
400/* Information used during field processing */ 368/* Information used during field processing */
401 369
402struct acpi_field_info 370struct acpi_field_info {
403{ 371 u8 skip_field;
404 u8 skip_field; 372 u8 field_flag;
405 u8 field_flag; 373 u32 pkg_length;
406 u32 pkg_length;
407}; 374};
408 375
409
410/***************************************************************************** 376/*****************************************************************************
411 * 377 *
412 * Generic "state" object for stacks 378 * Generic "state" object for stacks
@@ -419,14 +385,6 @@ struct acpi_field_info
419#define ACPI_CONTROL_PREDICATE_FALSE 0xC3 385#define ACPI_CONTROL_PREDICATE_FALSE 0xC3
420#define ACPI_CONTROL_PREDICATE_TRUE 0xC4 386#define ACPI_CONTROL_PREDICATE_TRUE 0xC4
421 387
422
423/* Forward declarations */
424
425struct acpi_walk_state ;
426struct acpi_obj_mutex;
427union acpi_parse_object ;
428
429
430#define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\ 388#define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\
431 u8 data_type; /* To differentiate various internal objs */\ 389 u8 data_type; /* To differentiate various internal objs */\
432 u8 flags; \ 390 u8 flags; \
@@ -435,147 +393,112 @@ union acpi_parse_object ;
435 u16 reserved; \ 393 u16 reserved; \
436 void *next; \ 394 void *next; \
437 395
438struct acpi_common_state 396struct acpi_common_state {
439{ 397ACPI_STATE_COMMON};
440 ACPI_STATE_COMMON
441};
442
443 398
444/* 399/*
445 * Update state - used to traverse complex objects such as packages 400 * Update state - used to traverse complex objects such as packages
446 */ 401 */
447struct acpi_update_state 402struct acpi_update_state {
448{ 403 ACPI_STATE_COMMON union acpi_operand_object *object;
449 ACPI_STATE_COMMON
450 union acpi_operand_object *object;
451}; 404};
452 405
453
454/* 406/*
455 * Pkg state - used to traverse nested package structures 407 * Pkg state - used to traverse nested package structures
456 */ 408 */
457struct acpi_pkg_state 409struct acpi_pkg_state {
458{ 410 ACPI_STATE_COMMON union acpi_operand_object *source_object;
459 ACPI_STATE_COMMON 411 union acpi_operand_object *dest_object;
460 union acpi_operand_object *source_object; 412 struct acpi_walk_state *walk_state;
461 union acpi_operand_object *dest_object; 413 void *this_target_obj;
462 struct acpi_walk_state *walk_state; 414 u32 num_packages;
463 void *this_target_obj; 415 u16 index;
464 u32 num_packages;
465 u16 index;
466}; 416};
467 417
468
469/* 418/*
470 * Control state - one per if/else and while constructs. 419 * Control state - one per if/else and while constructs.
471 * Allows nesting of these constructs 420 * Allows nesting of these constructs
472 */ 421 */
473struct acpi_control_state 422struct acpi_control_state {
474{ 423 ACPI_STATE_COMMON union acpi_parse_object *predicate_op;
475 ACPI_STATE_COMMON 424 u8 *aml_predicate_start; /* Start of if/while predicate */
476 union acpi_parse_object *predicate_op; 425 u8 *package_end; /* End of if/while block */
477 u8 *aml_predicate_start; /* Start of if/while predicate */ 426 u16 opcode;
478 u8 *package_end; /* End of if/while block */
479 u16 opcode;
480}; 427};
481 428
482
483/* 429/*
484 * Scope state - current scope during namespace lookups 430 * Scope state - current scope during namespace lookups
485 */ 431 */
486struct acpi_scope_state 432struct acpi_scope_state {
487{ 433 ACPI_STATE_COMMON struct acpi_namespace_node *node;
488 ACPI_STATE_COMMON
489 struct acpi_namespace_node *node;
490}; 434};
491 435
492 436struct acpi_pscope_state {
493struct acpi_pscope_state 437 ACPI_STATE_COMMON union acpi_parse_object *op; /* Current op being parsed */
494{ 438 u8 *arg_end; /* Current argument end */
495 ACPI_STATE_COMMON 439 u8 *pkg_end; /* Current package end */
496 union acpi_parse_object *op; /* Current op being parsed */ 440 u32 arg_list; /* Next argument to parse */
497 u8 *arg_end; /* Current argument end */ 441 u32 arg_count; /* Number of fixed arguments */
498 u8 *pkg_end; /* Current package end */
499 u32 arg_list; /* Next argument to parse */
500 u32 arg_count; /* Number of fixed arguments */
501}; 442};
502 443
503
504/* 444/*
505 * Thread state - one per thread across multiple walk states. Multiple walk 445 * Thread state - one per thread across multiple walk states. Multiple walk
506 * states are created when there are nested control methods executing. 446 * states are created when there are nested control methods executing.
507 */ 447 */
508struct acpi_thread_state 448struct acpi_thread_state {
509{ 449 ACPI_STATE_COMMON struct acpi_walk_state *walk_state_list; /* Head of list of walk_states for this thread */
510 ACPI_STATE_COMMON 450 union acpi_operand_object *acquired_mutex_list; /* List of all currently acquired mutexes */
511 struct acpi_walk_state *walk_state_list; /* Head of list of walk_states for this thread */ 451 u32 thread_id; /* Running thread ID */
512 union acpi_operand_object *acquired_mutex_list; /* List of all currently acquired mutexes */ 452 u8 current_sync_level; /* Mutex Sync (nested acquire) level */
513 u32 thread_id; /* Running thread ID */
514 u8 current_sync_level; /* Mutex Sync (nested acquire) level */
515}; 453};
516 454
517
518/* 455/*
519 * Result values - used to accumulate the results of nested 456 * Result values - used to accumulate the results of nested
520 * AML arguments 457 * AML arguments
521 */ 458 */
522struct acpi_result_values 459struct acpi_result_values {
523{
524 ACPI_STATE_COMMON 460 ACPI_STATE_COMMON
525 union acpi_operand_object *obj_desc [ACPI_OBJ_NUM_OPERANDS]; 461 union acpi_operand_object *obj_desc[ACPI_OBJ_NUM_OPERANDS];
526 u8 num_results; 462 u8 num_results;
527 u8 last_insert; 463 u8 last_insert;
528}; 464};
529 465
530
531typedef
532acpi_status (*acpi_parse_downwards) (
533 struct acpi_walk_state *walk_state,
534 union acpi_parse_object **out_op);
535
536typedef 466typedef
537acpi_status (*acpi_parse_upwards) ( 467acpi_status(*acpi_parse_downwards) (struct acpi_walk_state * walk_state,
538 struct acpi_walk_state *walk_state); 468 union acpi_parse_object ** out_op);
539 469
470typedef acpi_status(*acpi_parse_upwards) (struct acpi_walk_state * walk_state);
540 471
541/* 472/*
542 * Notify info - used to pass info to the deferred notify 473 * Notify info - used to pass info to the deferred notify
543 * handler/dispatcher. 474 * handler/dispatcher.
544 */ 475 */
545struct acpi_notify_info 476struct acpi_notify_info {
546{ 477 ACPI_STATE_COMMON struct acpi_namespace_node *node;
547 ACPI_STATE_COMMON 478 union acpi_operand_object *handler_obj;
548 struct acpi_namespace_node *node;
549 union acpi_operand_object *handler_obj;
550}; 479};
551 480
552
553/* Generic state is union of structs above */ 481/* Generic state is union of structs above */
554 482
555union acpi_generic_state 483union acpi_generic_state {
556{ 484 struct acpi_common_state common;
557 struct acpi_common_state common; 485 struct acpi_control_state control;
558 struct acpi_control_state control; 486 struct acpi_update_state update;
559 struct acpi_update_state update; 487 struct acpi_scope_state scope;
560 struct acpi_scope_state scope; 488 struct acpi_pscope_state parse_scope;
561 struct acpi_pscope_state parse_scope; 489 struct acpi_pkg_state pkg;
562 struct acpi_pkg_state pkg; 490 struct acpi_thread_state thread;
563 struct acpi_thread_state thread; 491 struct acpi_result_values results;
564 struct acpi_result_values results; 492 struct acpi_notify_info notify;
565 struct acpi_notify_info notify;
566}; 493};
567 494
568
569/***************************************************************************** 495/*****************************************************************************
570 * 496 *
571 * Interpreter typedefs and structs 497 * Interpreter typedefs and structs
572 * 498 *
573 ****************************************************************************/ 499 ****************************************************************************/
574 500
575typedef 501typedef acpi_status(*ACPI_EXECUTE_OP) (struct acpi_walk_state * walk_state);
576acpi_status (*ACPI_EXECUTE_OP) (
577 struct acpi_walk_state *walk_state);
578
579 502
580/***************************************************************************** 503/*****************************************************************************
581 * 504 *
@@ -586,28 +509,26 @@ acpi_status (*ACPI_EXECUTE_OP) (
586/* 509/*
587 * AML opcode, name, and argument layout 510 * AML opcode, name, and argument layout
588 */ 511 */
589struct acpi_opcode_info 512struct acpi_opcode_info {
590{
591#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) 513#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
592 char *name; /* Opcode name (disassembler/debug only) */ 514 char *name; /* Opcode name (disassembler/debug only) */
593#endif 515#endif
594 u32 parse_args; /* Grammar/Parse time arguments */ 516 u32 parse_args; /* Grammar/Parse time arguments */
595 u32 runtime_args; /* Interpret time arguments */ 517 u32 runtime_args; /* Interpret time arguments */
596 u32 flags; /* Misc flags */ 518 u32 flags; /* Misc flags */
597 u8 object_type; /* Corresponding internal object type */ 519 u8 object_type; /* Corresponding internal object type */
598 u8 class; /* Opcode class */ 520 u8 class; /* Opcode class */
599 u8 type; /* Opcode type */ 521 u8 type; /* Opcode type */
600}; 522};
601 523
602union acpi_parse_value 524union acpi_parse_value {
603{ 525 acpi_integer integer; /* Integer constant (Up to 64 bits) */
604 acpi_integer integer; /* Integer constant (Up to 64 bits) */ 526 struct uint64_struct integer64; /* Structure overlay for 2 32-bit Dwords */
605 struct uint64_struct integer64; /* Structure overlay for 2 32-bit Dwords */ 527 u32 size; /* bytelist or field size */
606 u32 size; /* bytelist or field size */ 528 char *string; /* NULL terminated string */
607 char *string; /* NULL terminated string */ 529 u8 *buffer; /* buffer or string */
608 u8 *buffer; /* buffer or string */ 530 char *name; /* NULL terminated string */
609 char *name; /* NULL terminated string */ 531 union acpi_parse_object *arg; /* arguments and contained ops */
610 union acpi_parse_object *arg; /* arguments and contained ops */
611}; 532};
612 533
613#define ACPI_PARSE_COMMON \ 534#define ACPI_PARSE_COMMON \
@@ -636,84 +557,72 @@ union acpi_parse_value
636/* 557/*
637 * generic operation (for example: If, While, Store) 558 * generic operation (for example: If, While, Store)
638 */ 559 */
639struct acpi_parse_obj_common 560struct acpi_parse_obj_common {
640{ 561ACPI_PARSE_COMMON};
641 ACPI_PARSE_COMMON
642};
643
644 562
645/* 563/*
646 * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and op_regions), 564 * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and op_regions),
647 * and bytelists. 565 * and bytelists.
648 */ 566 */
649struct acpi_parse_obj_named 567struct acpi_parse_obj_named {
650{ 568 ACPI_PARSE_COMMON u8 * path;
651 ACPI_PARSE_COMMON 569 u8 *data; /* AML body or bytelist data */
652 u8 *path; 570 u32 length; /* AML length */
653 u8 *data; /* AML body or bytelist data */ 571 u32 name; /* 4-byte name or zero if no name */
654 u32 length; /* AML length */
655 u32 name; /* 4-byte name or zero if no name */
656}; 572};
657 573
658
659/* The parse node is the fundamental element of the parse tree */ 574/* The parse node is the fundamental element of the parse tree */
660 575
661struct acpi_parse_obj_asl 576struct acpi_parse_obj_asl {
662{ 577 ACPI_PARSE_COMMON union acpi_parse_object *child;
663 ACPI_PARSE_COMMON 578 union acpi_parse_object *parent_method;
664 union acpi_parse_object *child; 579 char *filename;
665 union acpi_parse_object *parent_method; 580 char *external_name;
666 char *filename; 581 char *namepath;
667 char *external_name; 582 char name_seg[4];
668 char *namepath; 583 u32 extra_value;
669 char name_seg[4]; 584 u32 column;
670 u32 extra_value; 585 u32 line_number;
671 u32 column; 586 u32 logical_line_number;
672 u32 line_number; 587 u32 logical_byte_offset;
673 u32 logical_line_number; 588 u32 end_line;
674 u32 logical_byte_offset; 589 u32 end_logical_line;
675 u32 end_line; 590 u32 acpi_btype;
676 u32 end_logical_line; 591 u32 aml_length;
677 u32 acpi_btype; 592 u32 aml_subtree_length;
678 u32 aml_length; 593 u32 final_aml_length;
679 u32 aml_subtree_length; 594 u32 final_aml_offset;
680 u32 final_aml_length; 595 u32 compile_flags;
681 u32 final_aml_offset; 596 u16 parse_opcode;
682 u32 compile_flags; 597 u8 aml_opcode_length;
683 u16 parse_opcode; 598 u8 aml_pkg_len_bytes;
684 u8 aml_opcode_length; 599 u8 extra;
685 u8 aml_pkg_len_bytes; 600 char parse_op_name[12];
686 u8 extra; 601};
687 char parse_op_name[12]; 602
688}; 603union acpi_parse_object {
689 604 struct acpi_parse_obj_common common;
690union acpi_parse_object 605 struct acpi_parse_obj_named named;
691{ 606 struct acpi_parse_obj_asl asl;
692 struct acpi_parse_obj_common common;
693 struct acpi_parse_obj_named named;
694 struct acpi_parse_obj_asl asl;
695}; 607};
696 608
697
698/* 609/*
699 * Parse state - one state per parser invocation and each control 610 * Parse state - one state per parser invocation and each control
700 * method. 611 * method.
701 */ 612 */
702struct acpi_parse_state 613struct acpi_parse_state {
703{ 614 u32 aml_size;
704 u32 aml_size; 615 u8 *aml_start; /* First AML byte */
705 u8 *aml_start; /* First AML byte */ 616 u8 *aml; /* Next AML byte */
706 u8 *aml; /* Next AML byte */ 617 u8 *aml_end; /* (last + 1) AML byte */
707 u8 *aml_end; /* (last + 1) AML byte */ 618 u8 *pkg_start; /* Current package begin */
708 u8 *pkg_start; /* Current package begin */ 619 u8 *pkg_end; /* Current package end */
709 u8 *pkg_end; /* Current package end */ 620 union acpi_parse_object *start_op; /* Root of parse tree */
710 union acpi_parse_object *start_op; /* Root of parse tree */ 621 struct acpi_namespace_node *start_node;
711 struct acpi_namespace_node *start_node; 622 union acpi_generic_state *scope; /* Current scope */
712 union acpi_generic_state *scope; /* Current scope */ 623 union acpi_parse_object *start_scope;
713 union acpi_parse_object *start_scope;
714}; 624};
715 625
716
717/* Parse object flags */ 626/* Parse object flags */
718 627
719#define ACPI_PARSEOP_GENERIC 0x01 628#define ACPI_PARSEOP_GENERIC 0x01
@@ -729,7 +638,6 @@ struct acpi_parse_state
729#define ACPI_PARSEOP_EMPTY_TERMLIST 0x04 638#define ACPI_PARSEOP_EMPTY_TERMLIST 0x04
730#define ACPI_PARSEOP_SPECIAL 0x10 639#define ACPI_PARSEOP_SPECIAL 0x10
731 640
732
733/***************************************************************************** 641/*****************************************************************************
734 * 642 *
735 * Hardware (ACPI registers) and PNP 643 * Hardware (ACPI registers) and PNP
@@ -737,15 +645,14 @@ struct acpi_parse_state
737 ****************************************************************************/ 645 ****************************************************************************/
738 646
739#define PCI_ROOT_HID_STRING "PNP0A03" 647#define PCI_ROOT_HID_STRING "PNP0A03"
648#define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08"
740 649
741struct acpi_bit_register_info 650struct acpi_bit_register_info {
742{ 651 u8 parent_register;
743 u8 parent_register; 652 u8 bit_position;
744 u8 bit_position; 653 u16 access_bit_mask;
745 u16 access_bit_mask;
746}; 654};
747 655
748
749/* 656/*
750 * Register IDs 657 * Register IDs
751 * These are the full ACPI registers 658 * These are the full ACPI registers
@@ -760,7 +667,6 @@ struct acpi_bit_register_info
760#define ACPI_REGISTER_PROCESSOR_BLOCK 0x08 667#define ACPI_REGISTER_PROCESSOR_BLOCK 0x08
761#define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x09 668#define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x09
762 669
763
764/* Masks used to access the bit_registers */ 670/* Masks used to access the bit_registers */
765 671
766#define ACPI_BITMASK_TIMER_STATUS 0x0001 672#define ACPI_BITMASK_TIMER_STATUS 0x0001
@@ -769,7 +675,7 @@ struct acpi_bit_register_info
769#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 675#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100
770#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 676#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200
771#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 677#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400
772#define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ 678#define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */
773#define ACPI_BITMASK_WAKE_STATUS 0x8000 679#define ACPI_BITMASK_WAKE_STATUS 0x8000
774 680
775#define ACPI_BITMASK_ALL_FIXED_STATUS (ACPI_BITMASK_TIMER_STATUS | \ 681#define ACPI_BITMASK_ALL_FIXED_STATUS (ACPI_BITMASK_TIMER_STATUS | \
@@ -785,7 +691,7 @@ struct acpi_bit_register_info
785#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100 691#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100
786#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200 692#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200
787#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400 693#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400
788#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000 /* ACPI 3.0 */ 694#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000 /* ACPI 3.0 */
789 695
790#define ACPI_BITMASK_SCI_ENABLE 0x0001 696#define ACPI_BITMASK_SCI_ENABLE 0x0001
791#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002 697#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002
@@ -795,7 +701,6 @@ struct acpi_bit_register_info
795 701
796#define ACPI_BITMASK_ARB_DISABLE 0x0001 702#define ACPI_BITMASK_ARB_DISABLE 0x0001
797 703
798
799/* Raw bit position of each bit_register */ 704/* Raw bit position of each bit_register */
800 705
801#define ACPI_BITPOSITION_TIMER_STATUS 0x00 706#define ACPI_BITPOSITION_TIMER_STATUS 0x00
@@ -804,7 +709,7 @@ struct acpi_bit_register_info
804#define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08 709#define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08
805#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09 710#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09
806#define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A 711#define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A
807#define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E /* ACPI 3.0 */ 712#define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E /* ACPI 3.0 */
808#define ACPI_BITPOSITION_WAKE_STATUS 0x0F 713#define ACPI_BITPOSITION_WAKE_STATUS 0x0F
809 714
810#define ACPI_BITPOSITION_TIMER_ENABLE 0x00 715#define ACPI_BITPOSITION_TIMER_ENABLE 0x00
@@ -812,7 +717,7 @@ struct acpi_bit_register_info
812#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08 717#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08
813#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09 718#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09
814#define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A 719#define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A
815#define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E /* ACPI 3.0 */ 720#define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E /* ACPI 3.0 */
816 721
817#define ACPI_BITPOSITION_SCI_ENABLE 0x00 722#define ACPI_BITPOSITION_SCI_ENABLE 0x00
818#define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01 723#define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01
@@ -822,7 +727,6 @@ struct acpi_bit_register_info
822 727
823#define ACPI_BITPOSITION_ARB_DISABLE 0x00 728#define ACPI_BITPOSITION_ARB_DISABLE 0x00
824 729
825
826/***************************************************************************** 730/*****************************************************************************
827 * 731 *
828 * Resource descriptors 732 * Resource descriptors
@@ -841,8 +745,7 @@ struct acpi_bit_register_info
841#define ACPI_RDESC_TYPE_SMALL 0x00 745#define ACPI_RDESC_TYPE_SMALL 0x00
842 746
843#define ACPI_RDESC_TYPE_MASK 0x80 747#define ACPI_RDESC_TYPE_MASK 0x80
844#define ACPI_RDESC_SMALL_MASK 0x78 /* Only bits 6:3 contain the type */ 748#define ACPI_RDESC_SMALL_MASK 0x78 /* Only bits 6:3 contain the type */
845
846 749
847/* 750/*
848 * Small resource descriptor types 751 * Small resource descriptor types
@@ -871,7 +774,6 @@ struct acpi_bit_register_info
871#define ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE 0x8A 774#define ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE 0x8A
872#define ACPI_RDESC_TYPE_EXTENDED_ADDRESS_SPACE 0x8B 775#define ACPI_RDESC_TYPE_EXTENDED_ADDRESS_SPACE 0x8B
873 776
874
875/***************************************************************************** 777/*****************************************************************************
876 * 778 *
877 * Miscellaneous 779 * Miscellaneous
@@ -880,49 +782,36 @@ struct acpi_bit_register_info
880 782
881#define ACPI_ASCII_ZERO 0x30 783#define ACPI_ASCII_ZERO 0x30
882 784
883
884/***************************************************************************** 785/*****************************************************************************
885 * 786 *
886 * Debugger 787 * Debugger
887 * 788 *
888 ****************************************************************************/ 789 ****************************************************************************/
889 790
890struct acpi_db_method_info 791struct acpi_db_method_info {
891{ 792 acpi_handle thread_gate;
892 acpi_handle thread_gate; 793 char *name;
893 char *name; 794 char **args;
894 char **args; 795 u32 flags;
895 u32 flags; 796 u32 num_loops;
896 u32 num_loops; 797 char pathname[128];
897 char pathname[128];
898}; 798};
899 799
900struct acpi_integrity_info 800struct acpi_integrity_info {
901{ 801 u32 nodes;
902 u32 nodes; 802 u32 objects;
903 u32 objects;
904}; 803};
905 804
906
907#define ACPI_DB_REDIRECTABLE_OUTPUT 0x01 805#define ACPI_DB_REDIRECTABLE_OUTPUT 0x01
908#define ACPI_DB_CONSOLE_OUTPUT 0x02 806#define ACPI_DB_CONSOLE_OUTPUT 0x02
909#define ACPI_DB_DUPLICATE_OUTPUT 0x03 807#define ACPI_DB_DUPLICATE_OUTPUT 0x03
910 808
911
912/***************************************************************************** 809/*****************************************************************************
913 * 810 *
914 * Debug 811 * Debug
915 * 812 *
916 ****************************************************************************/ 813 ****************************************************************************/
917 814
918struct acpi_debug_print_info
919{
920 u32 component_id;
921 char *proc_name;
922 char *module_name;
923};
924
925
926/* Entry for a memory allocation (debug only) */ 815/* Entry for a memory allocation (debug only) */
927 816
928#define ACPI_MEM_MALLOC 0 817#define ACPI_MEM_MALLOC 0
@@ -938,51 +827,36 @@ struct acpi_debug_print_info
938 char module[ACPI_MAX_MODULE_NAME]; \ 827 char module[ACPI_MAX_MODULE_NAME]; \
939 u8 alloc_type; 828 u8 alloc_type;
940 829
941struct acpi_debug_mem_header 830struct acpi_debug_mem_header {
942{ 831ACPI_COMMON_DEBUG_MEM_HEADER};
943 ACPI_COMMON_DEBUG_MEM_HEADER
944};
945 832
946struct acpi_debug_mem_block 833struct acpi_debug_mem_block {
947{ 834 ACPI_COMMON_DEBUG_MEM_HEADER u64 user_space;
948 ACPI_COMMON_DEBUG_MEM_HEADER
949 u64 user_space;
950}; 835};
951 836
952
953#define ACPI_MEM_LIST_GLOBAL 0 837#define ACPI_MEM_LIST_GLOBAL 0
954#define ACPI_MEM_LIST_NSNODE 1 838#define ACPI_MEM_LIST_NSNODE 1
839#define ACPI_MEM_LIST_MAX 1
840#define ACPI_NUM_MEM_LISTS 2
955 841
956#define ACPI_MEM_LIST_FIRST_CACHE_LIST 2 842struct acpi_memory_list {
957#define ACPI_MEM_LIST_STATE 2 843 char *list_name;
958#define ACPI_MEM_LIST_PSNODE 3 844 void *list_head;
959#define ACPI_MEM_LIST_PSNODE_EXT 4 845 u16 object_size;
960#define ACPI_MEM_LIST_OPERAND 5 846 u16 max_depth;
961#define ACPI_MEM_LIST_WALK 6 847 u16 current_depth;
962#define ACPI_MEM_LIST_MAX 6 848 u16 link_offset;
963#define ACPI_NUM_MEM_LISTS 7
964
965
966struct acpi_memory_list
967{
968 void *list_head;
969 u16 link_offset;
970 u16 max_cache_depth;
971 u16 cache_depth;
972 u16 object_size;
973 849
974#ifdef ACPI_DBG_TRACK_ALLOCATIONS 850#ifdef ACPI_DBG_TRACK_ALLOCATIONS
975 851
976 /* Statistics for debug memory tracking only */ 852 /* Statistics for debug memory tracking only */
977 853
978 u32 total_allocated; 854 u32 total_allocated;
979 u32 total_freed; 855 u32 total_freed;
980 u32 current_total_size; 856 u32 current_total_size;
981 u32 cache_requests; 857 u32 requests;
982 u32 cache_hits; 858 u32 hits;
983 char *list_name;
984#endif 859#endif
985}; 860};
986 861
987 862#endif /* __ACLOCAL_H__ */
988#endif /* __ACLOCAL_H__ */
diff --git a/include/acpi/acmacros.h b/include/acpi/acmacros.h
index 09be937d2c39..702cc4e57f5f 100644
--- a/include/acpi/acmacros.h
+++ b/include/acpi/acmacros.h
@@ -44,7 +44,6 @@
44#ifndef __ACMACROS_H__ 44#ifndef __ACMACROS_H__
45#define __ACMACROS_H__ 45#define __ACMACROS_H__
46 46
47
48/* 47/*
49 * Data manipulation macros 48 * Data manipulation macros
50 */ 49 */
@@ -57,7 +56,6 @@
57#define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) 56#define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit))
58#define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) 57#define ACPI_MIN(a,b) (((a)<(b))?(a):(b))
59 58
60
61#if ACPI_MACHINE_WIDTH == 16 59#if ACPI_MACHINE_WIDTH == 16
62 60
63/* 61/*
@@ -168,7 +166,7 @@
168 166
169/* 32-bit source, 16/32/64 destination */ 167/* 32-bit source, 16/32/64 destination */
170 168
171#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 169#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
172 170
173#define ACPI_MOVE_32_TO_32(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[3];\ 171#define ACPI_MOVE_32_TO_32(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[3];\
174 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[2];\ 172 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[2];\
@@ -183,9 +181,9 @@
183 181
184/* 64-bit source, 16/32/64 destination */ 182/* 64-bit source, 16/32/64 destination */
185 183
186#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 184#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
187 185
188#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ 186#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
189 187
190#define ACPI_MOVE_64_TO_64(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[7];\ 188#define ACPI_MOVE_64_TO_64(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[7];\
191 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[6];\ 189 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[6];\
@@ -219,14 +217,14 @@
219 217
220/* 32-bit source, 16/32/64 destination */ 218/* 32-bit source, 16/32/64 destination */
221 219
222#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 220#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
223#define ACPI_MOVE_32_TO_32(d,s) *(u32 *)(void *)(d) = *(u32 *)(void *)(s) 221#define ACPI_MOVE_32_TO_32(d,s) *(u32 *)(void *)(d) = *(u32 *)(void *)(s)
224#define ACPI_MOVE_32_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s) 222#define ACPI_MOVE_32_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s)
225 223
226/* 64-bit source, 16/32/64 destination */ 224/* 64-bit source, 16/32/64 destination */
227 225
228#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 226#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
229#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ 227#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
230#define ACPI_MOVE_64_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s) 228#define ACPI_MOVE_64_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s)
231 229
232#else 230#else
@@ -238,14 +236,14 @@
238 236
239/* 32-bit source, 16/32/64 destination */ 237/* 32-bit source, 16/32/64 destination */
240 238
241#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 239#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
242#define ACPI_MOVE_32_TO_32(d,s) *(u32 *)(void *)(d) = *(u32 *)(void *)(s) 240#define ACPI_MOVE_32_TO_32(d,s) *(u32 *)(void *)(d) = *(u32 *)(void *)(s)
243#define ACPI_MOVE_32_TO_64(d,s) *(u64 *)(void *)(d) = *(u32 *)(void *)(s) 241#define ACPI_MOVE_32_TO_64(d,s) *(u64 *)(void *)(d) = *(u32 *)(void *)(s)
244 242
245/* 64-bit source, 16/32/64 destination */ 243/* 64-bit source, 16/32/64 destination */
246 244
247#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 245#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
248#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ 246#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
249#define ACPI_MOVE_64_TO_64(d,s) *(u64 *)(void *)(d) = *(u64 *)(void *)(s) 247#define ACPI_MOVE_64_TO_64(d,s) *(u64 *)(void *)(d) = *(u64 *)(void *)(s)
250#endif 248#endif
251 249
@@ -266,7 +264,7 @@
266 264
267/* 32-bit source, 16/32/64 destination */ 265/* 32-bit source, 16/32/64 destination */
268 266
269#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 267#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
270 268
271#define ACPI_MOVE_32_TO_32(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\ 269#define ACPI_MOVE_32_TO_32(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\
272 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];\ 270 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];\
@@ -277,8 +275,8 @@
277 275
278/* 64-bit source, 16/32/64 destination */ 276/* 64-bit source, 16/32/64 destination */
279 277
280#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ 278#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
281#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ 279#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
282#define ACPI_MOVE_64_TO_64(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\ 280#define ACPI_MOVE_64_TO_64(d,s) {(( u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\
283 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];\ 281 (( u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];\
284 (( u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[2];\ 282 (( u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[2];\
@@ -305,7 +303,6 @@
305#error unknown ACPI_MACHINE_WIDTH 303#error unknown ACPI_MACHINE_WIDTH
306#endif 304#endif
307 305
308
309/* 306/*
310 * Fast power-of-two math macros for non-optimized compilers 307 * Fast power-of-two math macros for non-optimized compilers
311 */ 308 */
@@ -329,7 +326,6 @@
329#define ACPI_MUL_16(a) _ACPI_MUL(a,4) 326#define ACPI_MUL_16(a) _ACPI_MUL(a,4)
330#define ACPI_MOD_16(a) _ACPI_MOD(a,16) 327#define ACPI_MOD_16(a) _ACPI_MOD(a,16)
331 328
332
333/* 329/*
334 * Rounding macros (Power of two boundaries only) 330 * Rounding macros (Power of two boundaries only)
335 */ 331 */
@@ -344,7 +340,6 @@
344#define ACPI_ROUND_UP_to_64_bITS(a) ACPI_ROUND_UP(a,8) 340#define ACPI_ROUND_UP_to_64_bITS(a) ACPI_ROUND_UP(a,8)
345#define ACPI_ROUND_UP_TO_NATIVE_WORD(a) ACPI_ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY) 341#define ACPI_ROUND_UP_TO_NATIVE_WORD(a) ACPI_ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY)
346 342
347
348#define ACPI_ROUND_BITS_UP_TO_BYTES(a) ACPI_DIV_8((a) + 7) 343#define ACPI_ROUND_BITS_UP_TO_BYTES(a) ACPI_DIV_8((a) + 7)
349#define ACPI_ROUND_BITS_DOWN_TO_BYTES(a) ACPI_DIV_8((a)) 344#define ACPI_ROUND_BITS_DOWN_TO_BYTES(a) ACPI_DIV_8((a))
350 345
@@ -365,7 +360,6 @@
365 360
366#define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7')) 361#define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7'))
367 362
368
369/* Bitfields within ACPI registers */ 363/* Bitfields within ACPI registers */
370 364
371#define ACPI_REGISTER_PREPARE_BITS(val, pos, mask) ((val << pos) & mask) 365#define ACPI_REGISTER_PREPARE_BITS(val, pos, mask) ((val << pos) & mask)
@@ -381,7 +375,6 @@
381#define ACPI_GET_DESCRIPTOR_TYPE(d) (((union acpi_descriptor *)(void *)(d))->descriptor_id) 375#define ACPI_GET_DESCRIPTOR_TYPE(d) (((union acpi_descriptor *)(void *)(d))->descriptor_id)
382#define ACPI_SET_DESCRIPTOR_TYPE(d,t) (((union acpi_descriptor *)(void *)(d))->descriptor_id = t) 376#define ACPI_SET_DESCRIPTOR_TYPE(d,t) (((union acpi_descriptor *)(void *)(d))->descriptor_id = t)
383 377
384
385/* Macro to test the object type */ 378/* Macro to test the object type */
386 379
387#define ACPI_GET_OBJECT_TYPE(d) (((union acpi_operand_object *)(void *)(d))->common.type) 380#define ACPI_GET_OBJECT_TYPE(d) (((union acpi_operand_object *)(void *)(d))->common.type)
@@ -430,28 +423,28 @@
430#define GET_CURRENT_ARG_TYPE(list) (list & ((u32) 0x1F)) 423#define GET_CURRENT_ARG_TYPE(list) (list & ((u32) 0x1F))
431#define INCREMENT_ARG_LIST(list) (list >>= ((u32) ARG_TYPE_WIDTH)) 424#define INCREMENT_ARG_LIST(list) (list >>= ((u32) ARG_TYPE_WIDTH))
432 425
433
434/* 426/*
435 * Reporting macros that are never compiled out 427 * Reporting macros that are never compiled out
436 */ 428 */
437#define ACPI_PARAM_LIST(pl) pl 429#define ACPI_PARAM_LIST(pl) pl
438 430
439/* 431/*
440 * Error reporting. These versions add callers module and line#. Since 432 * Error reporting. These versions add callers module and line#.
441 * _THIS_MODULE gets compiled out when ACPI_DEBUG_OUTPUT isn't defined, only 433 *
442 * use it in debug mode. 434 * Since _acpi_module_name gets compiled out when ACPI_DEBUG_OUTPUT
435 * isn't defined, only use it in debug mode.
443 */ 436 */
444#ifdef ACPI_DEBUG_OUTPUT 437#ifdef ACPI_DEBUG_OUTPUT
445 438
446#define ACPI_REPORT_INFO(fp) {acpi_ut_report_info(_THIS_MODULE,__LINE__,_COMPONENT); \ 439#define ACPI_REPORT_INFO(fp) {acpi_ut_report_info(_acpi_module_name,__LINE__,_COMPONENT); \
447 acpi_os_printf ACPI_PARAM_LIST(fp);} 440 acpi_os_printf ACPI_PARAM_LIST(fp);}
448#define ACPI_REPORT_ERROR(fp) {acpi_ut_report_error(_THIS_MODULE,__LINE__,_COMPONENT); \ 441#define ACPI_REPORT_ERROR(fp) {acpi_ut_report_error(_acpi_module_name,__LINE__,_COMPONENT); \
449 acpi_os_printf ACPI_PARAM_LIST(fp);} 442 acpi_os_printf ACPI_PARAM_LIST(fp);}
450#define ACPI_REPORT_WARNING(fp) {acpi_ut_report_warning(_THIS_MODULE,__LINE__,_COMPONENT); \ 443#define ACPI_REPORT_WARNING(fp) {acpi_ut_report_warning(_acpi_module_name,__LINE__,_COMPONENT); \
451 acpi_os_printf ACPI_PARAM_LIST(fp);} 444 acpi_os_printf ACPI_PARAM_LIST(fp);}
452#define ACPI_REPORT_NSERROR(s,e) acpi_ns_report_error(_THIS_MODULE,__LINE__,_COMPONENT, s, e); 445#define ACPI_REPORT_NSERROR(s,e) acpi_ns_report_error(_acpi_module_name,__LINE__,_COMPONENT, s, e);
453 446
454#define ACPI_REPORT_METHOD_ERROR(s,n,p,e) acpi_ns_report_method_error(_THIS_MODULE,__LINE__,_COMPONENT, s, n, p, e); 447#define ACPI_REPORT_METHOD_ERROR(s,n,p,e) acpi_ns_report_method_error(_acpi_module_name,__LINE__,_COMPONENT, s, n, p, e);
455 448
456#else 449#else
457 450
@@ -480,36 +473,58 @@
480 * Debug macros that are conditionally compiled 473 * Debug macros that are conditionally compiled
481 */ 474 */
482#ifdef ACPI_DEBUG_OUTPUT 475#ifdef ACPI_DEBUG_OUTPUT
476#define ACPI_MODULE_NAME(name) static char ACPI_UNUSED_VAR *_acpi_module_name = name;
483 477
484#define ACPI_MODULE_NAME(name) static char ACPI_UNUSED_VAR *_THIS_MODULE = name; 478/*
479 * Common parameters used for debug output functions:
480 * line number, function name, module(file) name, component ID
481 */
482#define ACPI_DEBUG_PARAMETERS __LINE__, ACPI_GET_FUNCTION_NAME, _acpi_module_name, _COMPONENT
485 483
486/* 484/*
487 * Function entry tracing. 485 * Function entry tracing
488 * The first parameter should be the procedure name as a quoted string. This is declared 486 */
489 * as a local string ("_proc_name) so that it can be also used by the function exit macros below. 487
488/*
489 * If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header,
490 * define it now. This is the case where there the compiler does not support
491 * a __FUNCTION__ macro or equivalent. We save the function name on the
492 * local stack.
493 */
494#ifndef ACPI_GET_FUNCTION_NAME
495#define ACPI_GET_FUNCTION_NAME _acpi_function_name
496/*
497 * The Name parameter should be the procedure name as a quoted string.
498 * This is declared as a local string ("my_function_name") so that it can
499 * be also used by the function exit macros below.
500 * Note: (const char) is used to be compatible with the debug interfaces
501 * and macros such as __FUNCTION__.
490 */ 502 */
491#define ACPI_FUNCTION_NAME(a) struct acpi_debug_print_info _debug_info; \ 503#define ACPI_FUNCTION_NAME(name) const char *_acpi_function_name = name;
492 _debug_info.component_id = _COMPONENT; \ 504
493 _debug_info.proc_name = a; \ 505#else
494 _debug_info.module_name = _THIS_MODULE; 506/* Compiler supports __FUNCTION__ (or equivalent) -- Ignore this macro */
495 507
496#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \ 508#define ACPI_FUNCTION_NAME(name)
497 acpi_ut_trace(__LINE__,&_debug_info) 509#endif
498#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a) \ 510
499 acpi_ut_trace_ptr(__LINE__,&_debug_info,(void *)b) 511#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \
500#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a) \ 512 acpi_ut_trace(ACPI_DEBUG_PARAMETERS)
501 acpi_ut_trace_u32(__LINE__,&_debug_info,(u32)b) 513#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a) \
502#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a) \ 514 acpi_ut_trace_ptr(ACPI_DEBUG_PARAMETERS,(void *)b)
503 acpi_ut_trace_str(__LINE__,&_debug_info,(char *)b) 515#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a) \
504 516 acpi_ut_trace_u32(ACPI_DEBUG_PARAMETERS,(u32)b)
505#define ACPI_FUNCTION_ENTRY() acpi_ut_track_stack_ptr() 517#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a) \
518 acpi_ut_trace_str(ACPI_DEBUG_PARAMETERS,(char *)b)
519
520#define ACPI_FUNCTION_ENTRY() acpi_ut_track_stack_ptr()
506 521
507/* 522/*
508 * Function exit tracing. 523 * Function exit tracing.
509 * WARNING: These macros include a return statement. This is usually considered 524 * WARNING: These macros include a return statement. This is usually considered
510 * bad form, but having a separate exit macro is very ugly and difficult to maintain. 525 * bad form, but having a separate exit macro is very ugly and difficult to maintain.
511 * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros 526 * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros
512 * so that "_proc_name" is defined. 527 * so that "_acpi_function_name" is defined.
513 */ 528 */
514#ifdef ACPI_USE_DO_WHILE_0 529#ifdef ACPI_USE_DO_WHILE_0
515#define ACPI_DO_WHILE0(a) do a while(0) 530#define ACPI_DO_WHILE0(a) do a while(0)
@@ -517,10 +532,10 @@
517#define ACPI_DO_WHILE0(a) a 532#define ACPI_DO_WHILE0(a) a
518#endif 533#endif
519 534
520#define return_VOID ACPI_DO_WHILE0 ({acpi_ut_exit(__LINE__,&_debug_info);return;}) 535#define return_VOID ACPI_DO_WHILE0 ({acpi_ut_exit(ACPI_DEBUG_PARAMETERS);return;})
521#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({acpi_ut_status_exit(__LINE__,&_debug_info,(s));return((s));}) 536#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({acpi_ut_status_exit(ACPI_DEBUG_PARAMETERS,(s));return((s));})
522#define return_VALUE(s) ACPI_DO_WHILE0 ({acpi_ut_value_exit(__LINE__,&_debug_info,(acpi_integer)(s));return((s));}) 537#define return_VALUE(s) ACPI_DO_WHILE0 ({acpi_ut_value_exit(ACPI_DEBUG_PARAMETERS,(acpi_integer)(s));return((s));})
523#define return_PTR(s) ACPI_DO_WHILE0 ({acpi_ut_ptr_exit(__LINE__,&_debug_info,(u8 *)(s));return((s));}) 538#define return_PTR(s) ACPI_DO_WHILE0 ({acpi_ut_ptr_exit(ACPI_DEBUG_PARAMETERS,(u8 *)(s));return((s));})
524 539
525/* Conditional execution */ 540/* Conditional execution */
526 541
@@ -531,12 +546,10 @@
531#define ACPI_DEBUG_ONLY_MEMBERS(a) a; 546#define ACPI_DEBUG_ONLY_MEMBERS(a) a;
532#define _VERBOSE_STRUCTURES 547#define _VERBOSE_STRUCTURES
533 548
534
535/* Stack and buffer dumping */ 549/* Stack and buffer dumping */
536 550
537#define ACPI_DUMP_STACK_ENTRY(a) acpi_ex_dump_operand((a),0) 551#define ACPI_DUMP_STACK_ENTRY(a) acpi_ex_dump_operand((a),0)
538#define ACPI_DUMP_OPERANDS(a,b,c,d,e) acpi_ex_dump_operands(a,b,c,d,e,_THIS_MODULE,__LINE__) 552#define ACPI_DUMP_OPERANDS(a,b,c,d,e) acpi_ex_dump_operands(a,b,c,d,e,_acpi_module_name,__LINE__)
539
540 553
541#define ACPI_DUMP_ENTRY(a,b) acpi_ns_dump_entry (a,b) 554#define ACPI_DUMP_ENTRY(a,b) acpi_ns_dump_entry (a,b)
542#define ACPI_DUMP_PATHNAME(a,b,c,d) acpi_ns_dump_pathname(a,b,c,d) 555#define ACPI_DUMP_PATHNAME(a,b,c,d) acpi_ns_dump_pathname(a,b,c,d)
@@ -544,7 +557,6 @@
544#define ACPI_DUMP_BUFFER(a,b) acpi_ut_dump_buffer((u8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) 557#define ACPI_DUMP_BUFFER(a,b) acpi_ut_dump_buffer((u8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT)
545#define ACPI_BREAK_MSG(a) acpi_os_signal (ACPI_SIGNAL_BREAKPOINT,(a)) 558#define ACPI_BREAK_MSG(a) acpi_os_signal (ACPI_SIGNAL_BREAKPOINT,(a))
546 559
547
548/* 560/*
549 * Generate INT3 on ACPI_ERROR (Debug only!) 561 * Generate INT3 on ACPI_ERROR (Debug only!)
550 */ 562 */
@@ -565,14 +577,13 @@
565#define ACPI_DEBUG_PRINT(pl) acpi_ut_debug_print ACPI_PARAM_LIST(pl) 577#define ACPI_DEBUG_PRINT(pl) acpi_ut_debug_print ACPI_PARAM_LIST(pl)
566#define ACPI_DEBUG_PRINT_RAW(pl) acpi_ut_debug_print_raw ACPI_PARAM_LIST(pl) 578#define ACPI_DEBUG_PRINT_RAW(pl) acpi_ut_debug_print_raw ACPI_PARAM_LIST(pl)
567 579
568
569#else 580#else
570/* 581/*
571 * This is the non-debug case -- make everything go away, 582 * This is the non-debug case -- make everything go away,
572 * leaving no executable debug code! 583 * leaving no executable debug code!
573 */ 584 */
574#define ACPI_MODULE_NAME(name) 585#define ACPI_MODULE_NAME(name)
575#define _THIS_MODULE "" 586#define _acpi_module_name ""
576 587
577#define ACPI_DEBUG_EXEC(a) 588#define ACPI_DEBUG_EXEC(a)
578#define ACPI_NORMAL_EXEC(a) a; 589#define ACPI_NORMAL_EXEC(a) a;
@@ -616,7 +627,6 @@
616#define ACPI_DEBUGGER_EXEC(a) 627#define ACPI_DEBUGGER_EXEC(a)
617#endif 628#endif
618 629
619
620/* 630/*
621 * For 16-bit code, we want to shrink some things even though 631 * For 16-bit code, we want to shrink some things even though
622 * we are using ACPI_DEBUG_OUTPUT to get the debug output 632 * we are using ACPI_DEBUG_OUTPUT to get the debug output
@@ -627,7 +637,6 @@
627#define ACPI_DEBUG_ONLY_MEMBERS(a) 637#define ACPI_DEBUG_ONLY_MEMBERS(a)
628#endif 638#endif
629 639
630
631#ifdef ACPI_DEBUG_OUTPUT 640#ifdef ACPI_DEBUG_OUTPUT
632/* 641/*
633 * 1) Set name to blanks 642 * 1) Set name to blanks
@@ -640,7 +649,6 @@
640#define ACPI_ADD_OBJECT_NAME(a,b) 649#define ACPI_ADD_OBJECT_NAME(a,b)
641#endif 650#endif
642 651
643
644/* 652/*
645 * Memory allocation tracking (DEBUG ONLY) 653 * Memory allocation tracking (DEBUG ONLY)
646 */ 654 */
@@ -648,21 +656,20 @@
648 656
649/* Memory allocation */ 657/* Memory allocation */
650 658
651#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate((acpi_size)(a),_COMPONENT,_THIS_MODULE,__LINE__) 659#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
652#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate((acpi_size)(a), _COMPONENT,_THIS_MODULE,__LINE__) 660#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__)
653#define ACPI_MEM_FREE(a) acpi_os_free(a) 661#define ACPI_MEM_FREE(a) acpi_os_free(a)
654#define ACPI_MEM_TRACKING(a) 662#define ACPI_MEM_TRACKING(a)
655 663
656
657#else 664#else
658 665
659/* Memory allocation */ 666/* Memory allocation */
660 667
661#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate_and_track((acpi_size)(a),_COMPONENT,_THIS_MODULE,__LINE__) 668#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate_and_track((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
662#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate_and_track((acpi_size)(a), _COMPONENT,_THIS_MODULE,__LINE__) 669#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate_and_track((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__)
663#define ACPI_MEM_FREE(a) acpi_ut_free_and_track(a,_COMPONENT,_THIS_MODULE,__LINE__) 670#define ACPI_MEM_FREE(a) acpi_ut_free_and_track(a,_COMPONENT,_acpi_module_name,__LINE__)
664#define ACPI_MEM_TRACKING(a) a 671#define ACPI_MEM_TRACKING(a) a
665 672
666#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 673#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
667 674
668#endif /* ACMACROS_H */ 675#endif /* ACMACROS_H */
diff --git a/include/acpi/acnames.h b/include/acpi/acnames.h
index deb7cb06f5f0..79152fbc8f8c 100644
--- a/include/acpi/acnames.h
+++ b/include/acpi/acnames.h
@@ -71,14 +71,16 @@
71 71
72/* Definitions of the predefined namespace names */ 72/* Definitions of the predefined namespace names */
73 73
74#define ACPI_UNKNOWN_NAME (u32) 0x3F3F3F3F /* Unknown name is "????" */ 74#define ACPI_UNKNOWN_NAME (u32) 0x3F3F3F3F /* Unknown name is "????" */
75#define ACPI_ROOT_NAME (u32) 0x5F5F5F5C /* Root name is "\___" */ 75#define ACPI_ROOT_NAME (u32) 0x5F5F5F5C /* Root name is "\___" */
76#define ACPI_SYS_BUS_NAME (u32) 0x5F53425F /* Sys bus name is "_SB_" */ 76#define ACPI_SYS_BUS_NAME (u32) 0x5F53425F /* Sys bus name is "_SB_" */
77 77
78#define ACPI_NS_ROOT_PATH "\\" 78#define ACPI_NS_ROOT_PATH "\\"
79#define ACPI_NS_SYSTEM_BUS "_SB_" 79#define ACPI_NS_SYSTEM_BUS "_SB_"
80 80
81/*! [Begin] no source code translation (not handled by acpisrc) */
82#define ACPI_FUNCTION_PREFIX1 'ipcA'
83#define ACPI_FUNCTION_PREFIX2 'ipca'
84/*! [End] no source code translation !*/
81 85
82#endif /* __ACNAMES_H__ */ 86#endif /* __ACNAMES_H__ */
83
84
diff --git a/include/acpi/acnamesp.h b/include/acpi/acnamesp.h
index d1b3ce80056f..dd3501f7e5d6 100644
--- a/include/acpi/acnamesp.h
+++ b/include/acpi/acnamesp.h
@@ -44,7 +44,6 @@
44#ifndef __ACNAMESP_H__ 44#ifndef __ACNAMESP_H__
45#define __ACNAMESP_H__ 45#define __ACNAMESP_H__
46 46
47
48/* To search the entire name space, pass this as search_base */ 47/* To search the entire name space, pass this as search_base */
49 48
50#define ACPI_NS_ALL ((acpi_handle)0) 49#define ACPI_NS_ALL ((acpi_handle)0)
@@ -54,8 +53,8 @@
54 * and should be one-to-one with values of acpi_object_type 53 * and should be one-to-one with values of acpi_object_type
55 */ 54 */
56#define ACPI_NS_NORMAL 0 55#define ACPI_NS_NORMAL 0
57#define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */ 56#define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */
58#define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */ 57#define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */
59 58
60/* Flags for acpi_ns_lookup, acpi_ns_search_and_enter */ 59/* Flags for acpi_ns_lookup, acpi_ns_search_and_enter */
61 60
@@ -68,357 +67,237 @@
68#define ACPI_NS_WALK_UNLOCK TRUE 67#define ACPI_NS_WALK_UNLOCK TRUE
69#define ACPI_NS_WALK_NO_UNLOCK FALSE 68#define ACPI_NS_WALK_NO_UNLOCK FALSE
70 69
71
72/* 70/*
73 * nsinit - Namespace initialization 71 * nsinit - Namespace initialization
74 */ 72 */
75acpi_status 73acpi_status acpi_ns_initialize_objects(void);
76acpi_ns_initialize_objects (
77 void);
78
79acpi_status
80acpi_ns_initialize_devices (
81 void);
82 74
75acpi_status acpi_ns_initialize_devices(void);
83 76
84/* 77/*
85 * nsload - Namespace loading 78 * nsload - Namespace loading
86 */ 79 */
87acpi_status 80acpi_status acpi_ns_load_namespace(void);
88acpi_ns_load_namespace (
89 void);
90 81
91acpi_status 82acpi_status
92acpi_ns_load_table ( 83acpi_ns_load_table(struct acpi_table_desc *table_desc,
93 struct acpi_table_desc *table_desc, 84 struct acpi_namespace_node *node);
94 struct acpi_namespace_node *node);
95
96 85
97/* 86/*
98 * nswalk - walk the namespace 87 * nswalk - walk the namespace
99 */ 88 */
100acpi_status 89acpi_status
101acpi_ns_walk_namespace ( 90acpi_ns_walk_namespace(acpi_object_type type,
102 acpi_object_type type, 91 acpi_handle start_object,
103 acpi_handle start_object, 92 u32 max_depth,
104 u32 max_depth, 93 u8 unlock_before_callback,
105 u8 unlock_before_callback, 94 acpi_walk_callback user_function,
106 acpi_walk_callback user_function, 95 void *context, void **return_value);
107 void *context, 96
108 void **return_value); 97struct acpi_namespace_node *acpi_ns_get_next_node(acpi_object_type type,
109 98 struct acpi_namespace_node
110struct acpi_namespace_node * 99 *parent,
111acpi_ns_get_next_node ( 100 struct acpi_namespace_node
112 acpi_object_type type, 101 *child);
113 struct acpi_namespace_node *parent,
114 struct acpi_namespace_node *child);
115
116 102
117/* 103/*
118 * nsparse - table parsing 104 * nsparse - table parsing
119 */ 105 */
120acpi_status 106acpi_status
121acpi_ns_parse_table ( 107acpi_ns_parse_table(struct acpi_table_desc *table_desc,
122 struct acpi_table_desc *table_desc, 108 struct acpi_namespace_node *scope);
123 struct acpi_namespace_node *scope);
124 109
125acpi_status 110acpi_status
126acpi_ns_one_complete_parse ( 111acpi_ns_one_complete_parse(u8 pass_number, struct acpi_table_desc *table_desc);
127 u32 pass_number,
128 struct acpi_table_desc *table_desc);
129
130 112
131/* 113/*
132 * nsaccess - Top-level namespace access 114 * nsaccess - Top-level namespace access
133 */ 115 */
134acpi_status 116acpi_status acpi_ns_root_initialize(void);
135acpi_ns_root_initialize (
136 void);
137 117
138acpi_status 118acpi_status
139acpi_ns_lookup ( 119acpi_ns_lookup(union acpi_generic_state *scope_info,
140 union acpi_generic_state *scope_info, 120 char *name,
141 char *name, 121 acpi_object_type type,
142 acpi_object_type type, 122 acpi_interpreter_mode interpreter_mode,
143 acpi_interpreter_mode interpreter_mode, 123 u32 flags,
144 u32 flags, 124 struct acpi_walk_state *walk_state,
145 struct acpi_walk_state *walk_state, 125 struct acpi_namespace_node **ret_node);
146 struct acpi_namespace_node **ret_node);
147
148 126
149/* 127/*
150 * nsalloc - Named object allocation/deallocation 128 * nsalloc - Named object allocation/deallocation
151 */ 129 */
152struct acpi_namespace_node * 130struct acpi_namespace_node *acpi_ns_create_node(u32 name);
153acpi_ns_create_node (
154 u32 name);
155
156void
157acpi_ns_delete_node (
158 struct acpi_namespace_node *node);
159 131
160void 132void acpi_ns_delete_node(struct acpi_namespace_node *node);
161acpi_ns_delete_namespace_subtree (
162 struct acpi_namespace_node *parent_handle);
163 133
164void 134void
165acpi_ns_delete_namespace_by_owner ( 135acpi_ns_delete_namespace_subtree(struct acpi_namespace_node *parent_handle);
166 u16 table_id);
167 136
168void 137void acpi_ns_delete_namespace_by_owner(acpi_owner_id owner_id);
169acpi_ns_detach_object (
170 struct acpi_namespace_node *node);
171 138
172void 139void acpi_ns_detach_object(struct acpi_namespace_node *node);
173acpi_ns_delete_children (
174 struct acpi_namespace_node *parent);
175 140
176int 141void acpi_ns_delete_children(struct acpi_namespace_node *parent);
177acpi_ns_compare_names (
178 char *name1,
179 char *name2);
180 142
143int acpi_ns_compare_names(char *name1, char *name2);
181 144
182/* 145/*
183 * nsdump - Namespace dump/print utilities 146 * nsdump - Namespace dump/print utilities
184 */ 147 */
185#ifdef ACPI_FUTURE_USAGE 148#ifdef ACPI_FUTURE_USAGE
186void 149void acpi_ns_dump_tables(acpi_handle search_base, u32 max_depth);
187acpi_ns_dump_tables ( 150#endif /* ACPI_FUTURE_USAGE */
188 acpi_handle search_base,
189 u32 max_depth);
190#endif /* ACPI_FUTURE_USAGE */
191 151
192void 152void acpi_ns_dump_entry(acpi_handle handle, u32 debug_level);
193acpi_ns_dump_entry (
194 acpi_handle handle,
195 u32 debug_level);
196 153
197void 154void
198acpi_ns_dump_pathname ( 155acpi_ns_dump_pathname(acpi_handle handle, char *msg, u32 level, u32 component);
199 acpi_handle handle,
200 char *msg,
201 u32 level,
202 u32 component);
203 156
204void 157void acpi_ns_print_pathname(u32 num_segments, char *pathname);
205acpi_ns_print_pathname (
206 u32 num_segments,
207 char *pathname);
208 158
209acpi_status 159acpi_status
210acpi_ns_dump_one_object ( 160acpi_ns_dump_one_object(acpi_handle obj_handle,
211 acpi_handle obj_handle, 161 u32 level, void *context, void **return_value);
212 u32 level,
213 void *context,
214 void **return_value);
215 162
216#ifdef ACPI_FUTURE_USAGE 163#ifdef ACPI_FUTURE_USAGE
217void 164void
218acpi_ns_dump_objects ( 165acpi_ns_dump_objects(acpi_object_type type,
219 acpi_object_type type, 166 u8 display_type,
220 u8 display_type, 167 u32 max_depth,
221 u32 max_depth, 168 acpi_owner_id owner_id, acpi_handle start_handle);
222 u32 ownder_id, 169#endif /* ACPI_FUTURE_USAGE */
223 acpi_handle start_handle);
224#endif /* ACPI_FUTURE_USAGE */
225
226 170
227/* 171/*
228 * nseval - Namespace evaluation functions 172 * nseval - Namespace evaluation functions
229 */ 173 */
230acpi_status 174acpi_status acpi_ns_evaluate_by_handle(struct acpi_parameter_info *info);
231acpi_ns_evaluate_by_handle (
232 struct acpi_parameter_info *info);
233 175
234acpi_status 176acpi_status
235acpi_ns_evaluate_by_name ( 177acpi_ns_evaluate_by_name(char *pathname, struct acpi_parameter_info *info);
236 char *pathname,
237 struct acpi_parameter_info *info);
238 178
239acpi_status 179acpi_status
240acpi_ns_evaluate_relative ( 180acpi_ns_evaluate_relative(char *pathname, struct acpi_parameter_info *info);
241 char *pathname,
242 struct acpi_parameter_info *info);
243
244 181
245/* 182/*
246 * nsnames - Name and Scope manipulation 183 * nsnames - Name and Scope manipulation
247 */ 184 */
248u32 185u32 acpi_ns_opens_scope(acpi_object_type type);
249acpi_ns_opens_scope (
250 acpi_object_type type);
251 186
252char * 187char *acpi_ns_get_external_pathname(struct acpi_namespace_node *node);
253acpi_ns_get_external_pathname (
254 struct acpi_namespace_node *node);
255 188
256char * 189char *acpi_ns_name_of_current_scope(struct acpi_walk_state *walk_state);
257acpi_ns_name_of_current_scope (
258 struct acpi_walk_state *walk_state);
259 190
260acpi_status 191acpi_status
261acpi_ns_handle_to_pathname ( 192acpi_ns_handle_to_pathname(acpi_handle target_handle,
262 acpi_handle target_handle, 193 struct acpi_buffer *buffer);
263 struct acpi_buffer *buffer);
264 194
265u8 195u8
266acpi_ns_pattern_match ( 196acpi_ns_pattern_match(struct acpi_namespace_node *obj_node, char *search_for);
267 struct acpi_namespace_node *obj_node,
268 char *search_for);
269 197
270acpi_status 198acpi_status
271acpi_ns_get_node_by_path ( 199acpi_ns_get_node_by_path(char *external_pathname,
272 char *external_pathname, 200 struct acpi_namespace_node *in_prefix_node,
273 struct acpi_namespace_node *in_prefix_node, 201 u32 flags, struct acpi_namespace_node **out_node);
274 u32 flags,
275 struct acpi_namespace_node **out_node);
276
277acpi_size
278acpi_ns_get_pathname_length (
279 struct acpi_namespace_node *node);
280 202
203acpi_size acpi_ns_get_pathname_length(struct acpi_namespace_node *node);
281 204
282/* 205/*
283 * nsobject - Object management for namespace nodes 206 * nsobject - Object management for namespace nodes
284 */ 207 */
285acpi_status 208acpi_status
286acpi_ns_attach_object ( 209acpi_ns_attach_object(struct acpi_namespace_node *node,
287 struct acpi_namespace_node *node, 210 union acpi_operand_object *object, acpi_object_type type);
288 union acpi_operand_object *object,
289 acpi_object_type type);
290 211
291union acpi_operand_object * 212union acpi_operand_object *acpi_ns_get_attached_object(struct
292acpi_ns_get_attached_object ( 213 acpi_namespace_node
293 struct acpi_namespace_node *node); 214 *node);
294 215
295union acpi_operand_object * 216union acpi_operand_object *acpi_ns_get_secondary_object(union
296acpi_ns_get_secondary_object ( 217 acpi_operand_object
297 union acpi_operand_object *obj_desc); 218 *obj_desc);
298 219
299acpi_status 220acpi_status
300acpi_ns_attach_data ( 221acpi_ns_attach_data(struct acpi_namespace_node *node,
301 struct acpi_namespace_node *node, 222 acpi_object_handler handler, void *data);
302 acpi_object_handler handler,
303 void *data);
304 223
305acpi_status 224acpi_status
306acpi_ns_detach_data ( 225acpi_ns_detach_data(struct acpi_namespace_node *node,
307 struct acpi_namespace_node *node, 226 acpi_object_handler handler);
308 acpi_object_handler handler);
309 227
310acpi_status 228acpi_status
311acpi_ns_get_attached_data ( 229acpi_ns_get_attached_data(struct acpi_namespace_node *node,
312 struct acpi_namespace_node *node, 230 acpi_object_handler handler, void **data);
313 acpi_object_handler handler,
314 void **data);
315
316 231
317/* 232/*
318 * nssearch - Namespace searching and entry 233 * nssearch - Namespace searching and entry
319 */ 234 */
320acpi_status 235acpi_status
321acpi_ns_search_and_enter ( 236acpi_ns_search_and_enter(u32 entry_name,
322 u32 entry_name, 237 struct acpi_walk_state *walk_state,
323 struct acpi_walk_state *walk_state, 238 struct acpi_namespace_node *node,
324 struct acpi_namespace_node *node, 239 acpi_interpreter_mode interpreter_mode,
325 acpi_interpreter_mode interpreter_mode, 240 acpi_object_type type,
326 acpi_object_type type, 241 u32 flags, struct acpi_namespace_node **ret_node);
327 u32 flags,
328 struct acpi_namespace_node **ret_node);
329 242
330acpi_status 243acpi_status
331acpi_ns_search_node ( 244acpi_ns_search_node(u32 entry_name,
332 u32 entry_name, 245 struct acpi_namespace_node *node,
333 struct acpi_namespace_node *node, 246 acpi_object_type type,
334 acpi_object_type type, 247 struct acpi_namespace_node **ret_node);
335 struct acpi_namespace_node **ret_node);
336 248
337void 249void
338acpi_ns_install_node ( 250acpi_ns_install_node(struct acpi_walk_state *walk_state,
339 struct acpi_walk_state *walk_state, 251 struct acpi_namespace_node *parent_node,
340 struct acpi_namespace_node *parent_node, 252 struct acpi_namespace_node *node, acpi_object_type type);
341 struct acpi_namespace_node *node,
342 acpi_object_type type);
343
344 253
345/* 254/*
346 * nsutils - Utility functions 255 * nsutils - Utility functions
347 */ 256 */
348u8 257u8 acpi_ns_valid_root_prefix(char prefix);
349acpi_ns_valid_root_prefix (
350 char prefix);
351 258
352acpi_object_type 259acpi_object_type acpi_ns_get_type(struct acpi_namespace_node *node);
353acpi_ns_get_type (
354 struct acpi_namespace_node *node);
355 260
356u32 261u32 acpi_ns_local(acpi_object_type type);
357acpi_ns_local (
358 acpi_object_type type);
359 262
360void 263void
361acpi_ns_report_error ( 264acpi_ns_report_error(char *module_name,
362 char *module_name, 265 u32 line_number,
363 u32 line_number, 266 u32 component_id,
364 u32 component_id, 267 char *internal_name, acpi_status lookup_status);
365 char *internal_name,
366 acpi_status lookup_status);
367 268
368void 269void
369acpi_ns_report_method_error ( 270acpi_ns_report_method_error(char *module_name,
370 char *module_name, 271 u32 line_number,
371 u32 line_number, 272 u32 component_id,
372 u32 component_id, 273 char *message,
373 char *message, 274 struct acpi_namespace_node *node,
374 struct acpi_namespace_node *node, 275 char *path, acpi_status lookup_status);
375 char *path,
376 acpi_status lookup_status);
377 276
378void 277void acpi_ns_print_node_pathname(struct acpi_namespace_node *node, char *msg);
379acpi_ns_print_node_pathname (
380 struct acpi_namespace_node *node,
381 char *msg);
382 278
383acpi_status 279acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info);
384acpi_ns_build_internal_name (
385 struct acpi_namestring_info *info);
386 280
387void 281void acpi_ns_get_internal_name_length(struct acpi_namestring_info *info);
388acpi_ns_get_internal_name_length (
389 struct acpi_namestring_info *info);
390 282
391acpi_status 283acpi_status acpi_ns_internalize_name(char *dotted_name, char **converted_name);
392acpi_ns_internalize_name (
393 char *dotted_name,
394 char **converted_name);
395 284
396acpi_status 285acpi_status
397acpi_ns_externalize_name ( 286acpi_ns_externalize_name(u32 internal_name_length,
398 u32 internal_name_length, 287 char *internal_name,
399 char *internal_name, 288 u32 * converted_name_length, char **converted_name);
400 u32 *converted_name_length,
401 char **converted_name);
402 289
403struct acpi_namespace_node * 290struct acpi_namespace_node *acpi_ns_map_handle_to_node(acpi_handle handle);
404acpi_ns_map_handle_to_node (
405 acpi_handle handle);
406 291
407acpi_handle 292acpi_handle acpi_ns_convert_entry_to_handle(struct acpi_namespace_node *node);
408acpi_ns_convert_entry_to_handle(
409 struct acpi_namespace_node *node);
410
411void
412acpi_ns_terminate (
413 void);
414 293
415struct acpi_namespace_node * 294void acpi_ns_terminate(void);
416acpi_ns_get_parent_node (
417 struct acpi_namespace_node *node);
418 295
296struct acpi_namespace_node *acpi_ns_get_parent_node(struct acpi_namespace_node
297 *node);
419 298
420struct acpi_namespace_node * 299struct acpi_namespace_node *acpi_ns_get_next_valid_node(struct
421acpi_ns_get_next_valid_node ( 300 acpi_namespace_node
422 struct acpi_namespace_node *node); 301 *node);
423 302
424#endif /* __ACNAMESP_H__ */ 303#endif /* __ACNAMESP_H__ */
diff --git a/include/acpi/acobject.h b/include/acpi/acobject.h
index e079b94e4fce..4a326ba6d482 100644
--- a/include/acpi/acobject.h
+++ b/include/acpi/acobject.h
@@ -45,7 +45,6 @@
45#ifndef _ACOBJECT_H 45#ifndef _ACOBJECT_H
46#define _ACOBJECT_H 46#define _ACOBJECT_H
47 47
48
49/* 48/*
50 * The union acpi_operand_object is used to pass AML operands from the dispatcher 49 * The union acpi_operand_object is used to pass AML operands from the dispatcher
51 * to the interpreter, and to keep track of the various handlers such as 50 * to the interpreter, and to keep track of the various handlers such as
@@ -81,7 +80,6 @@
81#define AOPOBJ_SETUP_COMPLETE 0x10 80#define AOPOBJ_SETUP_COMPLETE 0x10
82#define AOPOBJ_SINGLE_DATUM 0x20 81#define AOPOBJ_SINGLE_DATUM 0x20
83 82
84
85/* 83/*
86 * Common bitfield for the field objects 84 * Common bitfield for the field objects
87 * "Field Datum" -- a datum from the actual field object 85 * "Field Datum" -- a datum from the actual field object
@@ -96,8 +94,7 @@
96 u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\ 94 u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\
97 u8 access_bit_width; /* Read/Write size in bits (8-64) */\ 95 u8 access_bit_width; /* Read/Write size in bits (8-64) */\
98 u32 value; /* Value to store into the Bank or Index register */\ 96 u32 value; /* Value to store into the Bank or Index register */\
99 struct acpi_namespace_node *node; /* Link back to parent node */ 97 struct acpi_namespace_node *node; /* Link back to parent node */
100
101 98
102/* 99/*
103 * Fields common to both Strings and Buffers 100 * Fields common to both Strings and Buffers
@@ -105,15 +102,13 @@
105#define ACPI_COMMON_BUFFER_INFO \ 102#define ACPI_COMMON_BUFFER_INFO \
106 u32 length; 103 u32 length;
107 104
108
109/* 105/*
110 * Common fields for objects that support ASL notifications 106 * Common fields for objects that support ASL notifications
111 */ 107 */
112#define ACPI_COMMON_NOTIFY_INFO \ 108#define ACPI_COMMON_NOTIFY_INFO \
113 union acpi_operand_object *system_notify; /* Handler for system notifies */\ 109 union acpi_operand_object *system_notify; /* Handler for system notifies */\
114 union acpi_operand_object *device_notify; /* Handler for driver notifies */\ 110 union acpi_operand_object *device_notify; /* Handler for driver notifies */\
115 union acpi_operand_object *handler; /* Handler for Address space */ 111 union acpi_operand_object *handler; /* Handler for Address space */
116
117 112
118/****************************************************************************** 113/******************************************************************************
119 * 114 *
@@ -121,161 +116,110 @@
121 * 116 *
122 *****************************************************************************/ 117 *****************************************************************************/
123 118
124struct acpi_object_common 119struct acpi_object_common {
125{ 120ACPI_OBJECT_COMMON_HEADER};
126 ACPI_OBJECT_COMMON_HEADER
127};
128 121
129 122struct acpi_object_integer {
130struct acpi_object_integer 123 ACPI_OBJECT_COMMON_HEADER acpi_integer value;
131{
132 ACPI_OBJECT_COMMON_HEADER
133 acpi_integer value;
134}; 124};
135 125
136
137/* 126/*
138 * Note: The String and Buffer object must be identical through the Pointer 127 * Note: The String and Buffer object must be identical through the Pointer
139 * element. There is code that depends on this. 128 * element. There is code that depends on this.
140 */ 129 */
141struct acpi_object_string /* Null terminated, ASCII characters only */ 130struct acpi_object_string { /* Null terminated, ASCII characters only */
142{ 131 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO char *pointer; /* String in AML stream or allocated string */
143 ACPI_OBJECT_COMMON_HEADER
144 ACPI_COMMON_BUFFER_INFO
145 char *pointer; /* String in AML stream or allocated string */
146}; 132};
147 133
148 134struct acpi_object_buffer {
149struct acpi_object_buffer 135 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO u8 * pointer; /* Buffer in AML stream or allocated buffer */
150{ 136 struct acpi_namespace_node *node; /* Link back to parent node */
151 ACPI_OBJECT_COMMON_HEADER 137 u8 *aml_start;
152 ACPI_COMMON_BUFFER_INFO 138 u32 aml_length;
153 u8 *pointer; /* Buffer in AML stream or allocated buffer */
154 struct acpi_namespace_node *node; /* Link back to parent node */
155 u8 *aml_start;
156 u32 aml_length;
157}; 139};
158 140
159 141struct acpi_object_package {
160struct acpi_object_package 142 ACPI_OBJECT_COMMON_HEADER u32 count; /* # of elements in package */
161{ 143 u32 aml_length;
162 ACPI_OBJECT_COMMON_HEADER 144 u8 *aml_start;
163 145 struct acpi_namespace_node *node; /* Link back to parent node */
164 u32 count; /* # of elements in package */ 146 union acpi_operand_object **elements; /* Array of pointers to acpi_objects */
165 u32 aml_length;
166 u8 *aml_start;
167 struct acpi_namespace_node *node; /* Link back to parent node */
168 union acpi_operand_object **elements; /* Array of pointers to acpi_objects */
169}; 147};
170 148
171
172/****************************************************************************** 149/******************************************************************************
173 * 150 *
174 * Complex data types 151 * Complex data types
175 * 152 *
176 *****************************************************************************/ 153 *****************************************************************************/
177 154
178struct acpi_object_event 155struct acpi_object_event {
179{ 156 ACPI_OBJECT_COMMON_HEADER void *semaphore;
180 ACPI_OBJECT_COMMON_HEADER
181 void *semaphore;
182}; 157};
183 158
184
185#define ACPI_INFINITE_CONCURRENCY 0xFF 159#define ACPI_INFINITE_CONCURRENCY 0xFF
186 160
187typedef 161typedef
188acpi_status (*ACPI_INTERNAL_METHOD) ( 162acpi_status(*ACPI_INTERNAL_METHOD) (struct acpi_walk_state * walk_state);
189 struct acpi_walk_state *walk_state); 163
190 164struct acpi_object_method {
191struct acpi_object_method 165 ACPI_OBJECT_COMMON_HEADER u8 method_flags;
192{ 166 u8 param_count;
193 ACPI_OBJECT_COMMON_HEADER 167 u32 aml_length;
194 u8 method_flags; 168 void *semaphore;
195 u8 param_count; 169 u8 *aml_start;
196 u32 aml_length; 170 ACPI_INTERNAL_METHOD implementation;
197 void *semaphore; 171 u8 concurrency;
198 u8 *aml_start; 172 u8 thread_count;
199 ACPI_INTERNAL_METHOD implementation; 173 acpi_owner_id owner_id;
200 u8 concurrency;
201 u8 thread_count;
202 acpi_owner_id owning_id;
203}; 174};
204 175
205 176struct acpi_object_mutex {
206struct acpi_object_mutex 177 ACPI_OBJECT_COMMON_HEADER u8 sync_level; /* 0-15, specified in Mutex() call */
207{ 178 u16 acquisition_depth; /* Allow multiple Acquires, same thread */
208 ACPI_OBJECT_COMMON_HEADER 179 struct acpi_thread_state *owner_thread; /* Current owner of the mutex */
209 u8 sync_level; /* 0-15, specified in Mutex() call */ 180 void *semaphore; /* Actual OS synchronization object */
210 u16 acquisition_depth; /* Allow multiple Acquires, same thread */ 181 union acpi_operand_object *prev; /* Link for list of acquired mutexes */
211 struct acpi_thread_state *owner_thread; /* Current owner of the mutex */ 182 union acpi_operand_object *next; /* Link for list of acquired mutexes */
212 void *semaphore; /* Actual OS synchronization object */ 183 struct acpi_namespace_node *node; /* Containing namespace node */
213 union acpi_operand_object *prev; /* Link for list of acquired mutexes */ 184 u8 original_sync_level; /* Owner's original sync level (0-15) */
214 union acpi_operand_object *next; /* Link for list of acquired mutexes */
215 struct acpi_namespace_node *node; /* Containing namespace node */
216 u8 original_sync_level; /* Owner's original sync level (0-15) */
217}; 185};
218 186
219 187struct acpi_object_region {
220struct acpi_object_region 188 ACPI_OBJECT_COMMON_HEADER u8 space_id;
221{ 189 union acpi_operand_object *handler; /* Handler for region access */
222 ACPI_OBJECT_COMMON_HEADER 190 struct acpi_namespace_node *node; /* Containing namespace node */
223 191 union acpi_operand_object *next;
224 u8 space_id; 192 u32 length;
225 union acpi_operand_object *handler; /* Handler for region access */ 193 acpi_physical_address address;
226 struct acpi_namespace_node *node; /* Containing namespace node */
227 union acpi_operand_object *next;
228 u32 length;
229 acpi_physical_address address;
230}; 194};
231 195
232
233/****************************************************************************** 196/******************************************************************************
234 * 197 *
235 * Objects that can be notified. All share a common notify_info area. 198 * Objects that can be notified. All share a common notify_info area.
236 * 199 *
237 *****************************************************************************/ 200 *****************************************************************************/
238 201
239struct acpi_object_notify_common /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */ 202struct acpi_object_notify_common { /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
240{ 203ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
241 ACPI_OBJECT_COMMON_HEADER
242 ACPI_COMMON_NOTIFY_INFO
243};
244
245
246struct acpi_object_device
247{
248 ACPI_OBJECT_COMMON_HEADER
249 ACPI_COMMON_NOTIFY_INFO
250 struct acpi_gpe_block_info *gpe_block;
251};
252
253 204
254struct acpi_object_power_resource 205struct acpi_object_device {
255{
256 ACPI_OBJECT_COMMON_HEADER 206 ACPI_OBJECT_COMMON_HEADER
257 ACPI_COMMON_NOTIFY_INFO 207 ACPI_COMMON_NOTIFY_INFO struct acpi_gpe_block_info *gpe_block;
258 u32 system_level;
259 u32 resource_order;
260}; 208};
261 209
262 210struct acpi_object_power_resource {
263struct acpi_object_processor 211 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO u32 system_level;
264{ 212 u32 resource_order;
265 ACPI_OBJECT_COMMON_HEADER
266 ACPI_COMMON_NOTIFY_INFO
267 u32 proc_id;
268 u32 length;
269 acpi_io_address address;
270}; 213};
271 214
272 215struct acpi_object_processor {
273struct acpi_object_thermal_zone 216 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO u32 proc_id;
274{ 217 u32 length;
275 ACPI_OBJECT_COMMON_HEADER 218 acpi_io_address address;
276 ACPI_COMMON_NOTIFY_INFO
277}; 219};
278 220
221struct acpi_object_thermal_zone {
222ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
279 223
280/****************************************************************************** 224/******************************************************************************
281 * 225 *
@@ -283,90 +227,63 @@ struct acpi_object_thermal_zone
283 * 227 *
284 *****************************************************************************/ 228 *****************************************************************************/
285 229
286struct acpi_object_field_common /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ 230struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
287{ 231 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing Operation Region object */
288 ACPI_OBJECT_COMMON_HEADER 232 /* (REGION/BANK fields only) */
289 ACPI_COMMON_FIELD_INFO
290 union acpi_operand_object *region_obj; /* Containing Operation Region object */
291 /* (REGION/BANK fields only) */
292}; 233};
293 234
294 235struct acpi_object_region_field {
295struct acpi_object_region_field 236 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */
296{
297 ACPI_OBJECT_COMMON_HEADER
298 ACPI_COMMON_FIELD_INFO
299 union acpi_operand_object *region_obj; /* Containing op_region object */
300}; 237};
301 238
302 239struct acpi_object_bank_field {
303struct acpi_object_bank_field 240 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */
304{ 241 union acpi_operand_object *bank_obj; /* bank_select Register object */
305 ACPI_OBJECT_COMMON_HEADER
306 ACPI_COMMON_FIELD_INFO
307 union acpi_operand_object *region_obj; /* Containing op_region object */
308 union acpi_operand_object *bank_obj; /* bank_select Register object */
309}; 242};
310 243
311 244struct acpi_object_index_field {
312struct acpi_object_index_field 245 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO
313{ 246 /*
314 ACPI_OBJECT_COMMON_HEADER 247 * No "region_obj" pointer needed since the Index and Data registers
315 ACPI_COMMON_FIELD_INFO 248 * are each field definitions unto themselves.
316 249 */
317 /* 250 union acpi_operand_object *index_obj; /* Index register */
318 * No "region_obj" pointer needed since the Index and Data registers 251 union acpi_operand_object *data_obj; /* Data register */
319 * are each field definitions unto themselves.
320 */
321 union acpi_operand_object *index_obj; /* Index register */
322 union acpi_operand_object *data_obj; /* Data register */
323}; 252};
324 253
325
326/* The buffer_field is different in that it is part of a Buffer, not an op_region */ 254/* The buffer_field is different in that it is part of a Buffer, not an op_region */
327 255
328struct acpi_object_buffer_field 256struct acpi_object_buffer_field {
329{ 257 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *buffer_obj; /* Containing Buffer object */
330 ACPI_OBJECT_COMMON_HEADER
331 ACPI_COMMON_FIELD_INFO
332 union acpi_operand_object *buffer_obj; /* Containing Buffer object */
333}; 258};
334 259
335
336/****************************************************************************** 260/******************************************************************************
337 * 261 *
338 * Objects for handlers 262 * Objects for handlers
339 * 263 *
340 *****************************************************************************/ 264 *****************************************************************************/
341 265
342struct acpi_object_notify_handler 266struct acpi_object_notify_handler {
343{ 267 ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Parent device */
344 ACPI_OBJECT_COMMON_HEADER 268 acpi_notify_handler handler;
345 struct acpi_namespace_node *node; /* Parent device */ 269 void *context;
346 acpi_notify_handler handler;
347 void *context;
348}; 270};
349 271
350
351/* Flags for address handler */ 272/* Flags for address handler */
352 273
353#define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x1 274#define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x1
354 275
355 276struct acpi_object_addr_handler {
356struct acpi_object_addr_handler 277 ACPI_OBJECT_COMMON_HEADER u8 space_id;
357{ 278 u16 hflags;
358 ACPI_OBJECT_COMMON_HEADER 279 acpi_adr_space_handler handler;
359 u8 space_id; 280 struct acpi_namespace_node *node; /* Parent device */
360 u16 hflags; 281 void *context;
361 acpi_adr_space_handler handler; 282 acpi_adr_space_setup setup;
362 struct acpi_namespace_node *node; /* Parent device */ 283 union acpi_operand_object *region_list; /* regions using this handler */
363 void *context; 284 union acpi_operand_object *next;
364 acpi_adr_space_setup setup;
365 union acpi_operand_object *region_list; /* regions using this handler */
366 union acpi_operand_object *next;
367}; 285};
368 286
369
370/****************************************************************************** 287/******************************************************************************
371 * 288 *
372 * Special internal objects 289 * Special internal objects
@@ -377,18 +294,15 @@ struct acpi_object_addr_handler
377 * The Reference object type is used for these opcodes: 294 * The Reference object type is used for these opcodes:
378 * Arg[0-6], Local[0-7], index_op, name_op, zero_op, one_op, ones_op, debug_op 295 * Arg[0-6], Local[0-7], index_op, name_op, zero_op, one_op, ones_op, debug_op
379 */ 296 */
380struct acpi_object_reference 297struct acpi_object_reference {
381{ 298 ACPI_OBJECT_COMMON_HEADER u8 target_type; /* Used for index_op */
382 ACPI_OBJECT_COMMON_HEADER 299 u16 opcode;
383 u8 target_type; /* Used for index_op */ 300 u32 offset; /* Used for arg_op, local_op, and index_op */
384 u16 opcode; 301 void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */
385 u32 offset; /* Used for arg_op, local_op, and index_op */ 302 struct acpi_namespace_node *node;
386 void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */ 303 union acpi_operand_object **where;
387 struct acpi_namespace_node *node;
388 union acpi_operand_object **where;
389}; 304};
390 305
391
392/* 306/*
393 * Extra object is used as additional storage for types that 307 * Extra object is used as additional storage for types that
394 * have AML code in their declarations (term_args) that must be 308 * have AML code in their declarations (term_args) that must be
@@ -396,73 +310,62 @@ struct acpi_object_reference
396 * 310 *
397 * Currently: Region and field_unit types 311 * Currently: Region and field_unit types
398 */ 312 */
399struct acpi_object_extra 313struct acpi_object_extra {
400{ 314 ACPI_OBJECT_COMMON_HEADER u8 byte_fill1;
401 ACPI_OBJECT_COMMON_HEADER 315 u16 word_fill1;
402 u8 byte_fill1; 316 u32 aml_length;
403 u16 word_fill1; 317 u8 *aml_start;
404 u32 aml_length; 318 struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
405 u8 *aml_start; 319 void *region_context; /* Region-specific data */
406 struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
407 void *region_context; /* Region-specific data */
408}; 320};
409 321
410
411/* Additional data that can be attached to namespace nodes */ 322/* Additional data that can be attached to namespace nodes */
412 323
413struct acpi_object_data 324struct acpi_object_data {
414{ 325 ACPI_OBJECT_COMMON_HEADER acpi_object_handler handler;
415 ACPI_OBJECT_COMMON_HEADER 326 void *pointer;
416 acpi_object_handler handler;
417 void *pointer;
418}; 327};
419 328
420
421/* Structure used when objects are cached for reuse */ 329/* Structure used when objects are cached for reuse */
422 330
423struct acpi_object_cache_list 331struct acpi_object_cache_list {
424{ 332 ACPI_OBJECT_COMMON_HEADER union acpi_operand_object *next; /* Link for object cache and internal lists */
425 ACPI_OBJECT_COMMON_HEADER
426 union acpi_operand_object *next; /* Link for object cache and internal lists*/
427}; 333};
428 334
429
430/****************************************************************************** 335/******************************************************************************
431 * 336 *
432 * union acpi_operand_object Descriptor - a giant union of all of the above 337 * union acpi_operand_object Descriptor - a giant union of all of the above
433 * 338 *
434 *****************************************************************************/ 339 *****************************************************************************/
435 340
436union acpi_operand_object 341union acpi_operand_object {
437{ 342 struct acpi_object_common common;
438 struct acpi_object_common common; 343 struct acpi_object_integer integer;
439 struct acpi_object_integer integer; 344 struct acpi_object_string string;
440 struct acpi_object_string string; 345 struct acpi_object_buffer buffer;
441 struct acpi_object_buffer buffer; 346 struct acpi_object_package package;
442 struct acpi_object_package package; 347 struct acpi_object_event event;
443 struct acpi_object_event event; 348 struct acpi_object_method method;
444 struct acpi_object_method method; 349 struct acpi_object_mutex mutex;
445 struct acpi_object_mutex mutex; 350 struct acpi_object_region region;
446 struct acpi_object_region region; 351 struct acpi_object_notify_common common_notify;
447 struct acpi_object_notify_common common_notify; 352 struct acpi_object_device device;
448 struct acpi_object_device device; 353 struct acpi_object_power_resource power_resource;
449 struct acpi_object_power_resource power_resource; 354 struct acpi_object_processor processor;
450 struct acpi_object_processor processor; 355 struct acpi_object_thermal_zone thermal_zone;
451 struct acpi_object_thermal_zone thermal_zone; 356 struct acpi_object_field_common common_field;
452 struct acpi_object_field_common common_field; 357 struct acpi_object_region_field field;
453 struct acpi_object_region_field field; 358 struct acpi_object_buffer_field buffer_field;
454 struct acpi_object_buffer_field buffer_field; 359 struct acpi_object_bank_field bank_field;
455 struct acpi_object_bank_field bank_field; 360 struct acpi_object_index_field index_field;
456 struct acpi_object_index_field index_field; 361 struct acpi_object_notify_handler notify;
457 struct acpi_object_notify_handler notify; 362 struct acpi_object_addr_handler address_space;
458 struct acpi_object_addr_handler address_space; 363 struct acpi_object_reference reference;
459 struct acpi_object_reference reference; 364 struct acpi_object_extra extra;
460 struct acpi_object_extra extra; 365 struct acpi_object_data data;
461 struct acpi_object_data data; 366 struct acpi_object_cache_list cache;
462 struct acpi_object_cache_list cache;
463}; 367};
464 368
465
466/****************************************************************************** 369/******************************************************************************
467 * 370 *
468 * union acpi_descriptor - objects that share a common descriptor identifier 371 * union acpi_descriptor - objects that share a common descriptor identifier
@@ -471,7 +374,7 @@ union acpi_operand_object
471 374
472/* Object descriptor types */ 375/* Object descriptor types */
473 376
474#define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */ 377#define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */
475#define ACPI_DESC_TYPE_STATE 0x02 378#define ACPI_DESC_TYPE_STATE 0x02
476#define ACPI_DESC_TYPE_STATE_UPDATE 0x03 379#define ACPI_DESC_TYPE_STATE_UPDATE 0x03
477#define ACPI_DESC_TYPE_STATE_PACKAGE 0x04 380#define ACPI_DESC_TYPE_STATE_PACKAGE 0x04
@@ -488,14 +391,11 @@ union acpi_operand_object
488#define ACPI_DESC_TYPE_NAMED 0x0F 391#define ACPI_DESC_TYPE_NAMED 0x0F
489#define ACPI_DESC_TYPE_MAX 0x0F 392#define ACPI_DESC_TYPE_MAX 0x0F
490 393
491 394union acpi_descriptor {
492union acpi_descriptor 395 u8 descriptor_id; /* To differentiate various internal objs */
493{ 396 union acpi_operand_object object;
494 u8 descriptor_id; /* To differentiate various internal objs */\ 397 struct acpi_namespace_node node;
495 union acpi_operand_object object; 398 union acpi_parse_object op;
496 struct acpi_namespace_node node;
497 union acpi_parse_object op;
498}; 399};
499 400
500 401#endif /* _ACOBJECT_H */
501#endif /* _ACOBJECT_H */
diff --git a/include/acpi/acopcode.h b/include/acpi/acopcode.h
index 118ecba4cf05..64da42992199 100644
--- a/include/acpi/acopcode.h
+++ b/include/acpi/acopcode.h
@@ -62,7 +62,6 @@
62#define _NAM 0x6C 62#define _NAM 0x6C
63#define _PFX 0x6D 63#define _PFX 0x6D
64 64
65
66/* 65/*
67 * All AML opcodes and the parse-time arguments for each. Used by the AML 66 * All AML opcodes and the parse-time arguments for each. Used by the AML
68 * parser Each list is compressed into a 32-bit number and stored in the 67 * parser Each list is compressed into a 32-bit number and stored in the
@@ -191,7 +190,6 @@
191#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA) 190#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA)
192#define ARGP_ZERO_OP ARG_NONE 191#define ARGP_ZERO_OP ARG_NONE
193 192
194
195/* 193/*
196 * All AML opcodes and the runtime arguments for each. Used by the AML 194 * All AML opcodes and the runtime arguments for each. Used by the AML
197 * interpreter Each list is compressed into a 32-bit number and stored 195 * interpreter Each list is compressed into a 32-bit number and stored
@@ -246,7 +244,7 @@
246#define ARGI_FIELD_OP ARGI_INVALID_OPCODE 244#define ARGI_FIELD_OP ARGI_INVALID_OPCODE
247#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) 245#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
248#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) 246#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
249#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) 247#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
250#define ARGI_IF_OP ARGI_INVALID_OPCODE 248#define ARGI_IF_OP ARGI_INVALID_OPCODE
251#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF) 249#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
252#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE 250#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
@@ -322,4 +320,4 @@
322#define ARGI_WORD_OP ARGI_INVALID_OPCODE 320#define ARGI_WORD_OP ARGI_INVALID_OPCODE
323#define ARGI_ZERO_OP ARG_NONE 321#define ARGI_ZERO_OP ARG_NONE
324 322
325#endif /* __ACOPCODE_H__ */ 323#endif /* __ACOPCODE_H__ */
diff --git a/include/acpi/acoutput.h b/include/acpi/acoutput.h
index 2fbe180fee6b..68d7edf0f697 100644
--- a/include/acpi/acoutput.h
+++ b/include/acpi/acoutput.h
@@ -73,12 +73,10 @@
73#define ACPI_ALL_COMPONENTS 0x00003FFF 73#define ACPI_ALL_COMPONENTS 0x00003FFF
74#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) 74#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS)
75 75
76
77/* Component IDs reserved for ACPI drivers */ 76/* Component IDs reserved for ACPI drivers */
78 77
79#define ACPI_ALL_DRIVERS 0xFFFF0000 78#define ACPI_ALL_DRIVERS 0xFFFF0000
80 79
81
82/* 80/*
83 * Raw debug output levels, do not use these in the DEBUG_PRINT macros 81 * Raw debug output levels, do not use these in the DEBUG_PRINT macros
84 */ 82 */
@@ -132,11 +130,10 @@
132 130
133#define ACPI_LV_VERBOSE 0xF0000000 131#define ACPI_LV_VERBOSE 0xF0000000
134 132
135
136/* 133/*
137 * Debug level macros that are used in the DEBUG_PRINT macros 134 * Debug level macros that are used in the DEBUG_PRINT macros
138 */ 135 */
139#define ACPI_DEBUG_LEVEL(dl) (u32) dl,__LINE__,&_debug_info 136#define ACPI_DEBUG_LEVEL(dl) (u32) dl,ACPI_DEBUG_PARAMETERS
140 137
141/* Exception level -- used in the global "debug_level" */ 138/* Exception level -- used in the global "debug_level" */
142 139
@@ -147,7 +144,6 @@
147#define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO) 144#define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO)
148#define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS) 145#define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS)
149 146
150
151/* Trace level -- also used in the global "debug_level" */ 147/* Trace level -- also used in the global "debug_level" */
152 148
153#define ACPI_DB_INIT_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES) 149#define ACPI_DB_INIT_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES)
@@ -174,12 +170,10 @@
174 170
175#define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL) 171#define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL)
176 172
177
178/* Defaults for debug_level, debug and normal */ 173/* Defaults for debug_level, debug and normal */
179 174
180#define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT) 175#define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT)
181#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT) 176#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT)
182#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL) 177#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
183 178
184 179#endif /* __ACOUTPUT_H__ */
185#endif /* __ACOUTPUT_H__ */
diff --git a/include/acpi/acparser.h b/include/acpi/acparser.h
index 698276571818..d352d40de1f3 100644
--- a/include/acpi/acparser.h
+++ b/include/acpi/acparser.h
@@ -41,18 +41,15 @@
41 * POSSIBILITY OF SUCH DAMAGES. 41 * POSSIBILITY OF SUCH DAMAGES.
42 */ 42 */
43 43
44
45#ifndef __ACPARSER_H__ 44#ifndef __ACPARSER_H__
46#define __ACPARSER_H__ 45#define __ACPARSER_H__
47 46
48
49#define OP_HAS_RETURN_VALUE 1 47#define OP_HAS_RETURN_VALUE 1
50 48
51/* variable # arguments */ 49/* variable # arguments */
52 50
53#define ACPI_VAR_ARGS ACPI_UINT32_MAX 51#define ACPI_VAR_ARGS ACPI_UINT32_MAX
54 52
55
56#define ACPI_PARSE_DELETE_TREE 0x0001 53#define ACPI_PARSE_DELETE_TREE 0x0001
57#define ACPI_PARSE_NO_TREE_DELETE 0x0000 54#define ACPI_PARSE_NO_TREE_DELETE 0x0000
58#define ACPI_PARSE_TREE_MASK 0x0001 55#define ACPI_PARSE_TREE_MASK 0x0001
@@ -63,7 +60,7 @@
63#define ACPI_PARSE_MODE_MASK 0x0030 60#define ACPI_PARSE_MODE_MASK 0x0030
64 61
65#define ACPI_PARSE_DEFERRED_OP 0x0100 62#define ACPI_PARSE_DEFERRED_OP 0x0100
66 63#define ACPI_PARSE_DISASSEMBLE 0x0200
67 64
68/****************************************************************************** 65/******************************************************************************
69 * 66 *
@@ -71,251 +68,165 @@
71 * 68 *
72 *****************************************************************************/ 69 *****************************************************************************/
73 70
74
75/* 71/*
76 * psxface - Parser external interfaces 72 * psxface - Parser external interfaces
77 */ 73 */
78acpi_status 74acpi_status acpi_ps_execute_method(struct acpi_parameter_info *info);
79acpi_psx_load_table (
80 u8 *pcode_addr,
81 u32 pcode_length);
82
83acpi_status
84acpi_psx_execute (
85 struct acpi_parameter_info *info);
86
87 75
88/* 76/*
89 * psargs - Parse AML opcode arguments 77 * psargs - Parse AML opcode arguments
90 */ 78 */
91u8 * 79u8 *acpi_ps_get_next_package_end(struct acpi_parse_state *parser_state);
92acpi_ps_get_next_package_end (
93 struct acpi_parse_state *parser_state);
94 80
95char * 81char *acpi_ps_get_next_namestring(struct acpi_parse_state *parser_state);
96acpi_ps_get_next_namestring (
97 struct acpi_parse_state *parser_state);
98 82
99void 83void
100acpi_ps_get_next_simple_arg ( 84acpi_ps_get_next_simple_arg(struct acpi_parse_state *parser_state,
101 struct acpi_parse_state *parser_state, 85 u32 arg_type, union acpi_parse_object *arg);
102 u32 arg_type,
103 union acpi_parse_object *arg);
104 86
105acpi_status 87acpi_status
106acpi_ps_get_next_namepath ( 88acpi_ps_get_next_namepath(struct acpi_walk_state *walk_state,
107 struct acpi_walk_state *walk_state, 89 struct acpi_parse_state *parser_state,
108 struct acpi_parse_state *parser_state, 90 union acpi_parse_object *arg, u8 method_call);
109 union acpi_parse_object *arg,
110 u8 method_call);
111 91
112acpi_status 92acpi_status
113acpi_ps_get_next_arg ( 93acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
114 struct acpi_walk_state *walk_state, 94 struct acpi_parse_state *parser_state,
115 struct acpi_parse_state *parser_state, 95 u32 arg_type, union acpi_parse_object **return_arg);
116 u32 arg_type,
117 union acpi_parse_object **return_arg);
118
119 96
120/* 97/*
121 * psfind 98 * psfind
122 */ 99 */
123union acpi_parse_object * 100union acpi_parse_object *acpi_ps_find_name(union acpi_parse_object *scope,
124acpi_ps_find_name ( 101 u32 name, u32 opcode);
125 union acpi_parse_object *scope,
126 u32 name,
127 u32 opcode);
128
129union acpi_parse_object*
130acpi_ps_get_parent (
131 union acpi_parse_object *op);
132 102
103union acpi_parse_object *acpi_ps_get_parent(union acpi_parse_object *op);
133 104
134/* 105/*
135 * psopcode - AML Opcode information 106 * psopcode - AML Opcode information
136 */ 107 */
137const struct acpi_opcode_info * 108const struct acpi_opcode_info *acpi_ps_get_opcode_info(u16 opcode);
138acpi_ps_get_opcode_info (
139 u16 opcode);
140
141char *
142acpi_ps_get_opcode_name (
143 u16 opcode);
144 109
110char *acpi_ps_get_opcode_name(u16 opcode);
145 111
146/* 112/*
147 * psparse - top level parsing routines 113 * psparse - top level parsing routines
148 */ 114 */
149acpi_status 115acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state);
150acpi_ps_parse_aml (
151 struct acpi_walk_state *walk_state);
152 116
153u32 117u32 acpi_ps_get_opcode_size(u32 opcode);
154acpi_ps_get_opcode_size (
155 u32 opcode);
156 118
157u16 119u16 acpi_ps_peek_opcode(struct acpi_parse_state *state);
158acpi_ps_peek_opcode (
159 struct acpi_parse_state *state);
160 120
121acpi_status
122acpi_ps_complete_this_op(struct acpi_walk_state *walk_state,
123 union acpi_parse_object *op);
124
125acpi_status
126acpi_ps_next_parse_state(struct acpi_walk_state *walk_state,
127 union acpi_parse_object *op,
128 acpi_status callback_status);
129
130/*
131 * psloop - main parse loop
132 */
133acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state);
161 134
162/* 135/*
163 * psscope - Scope stack management routines 136 * psscope - Scope stack management routines
164 */ 137 */
165acpi_status 138acpi_status
166acpi_ps_init_scope ( 139acpi_ps_init_scope(struct acpi_parse_state *parser_state,
167 struct acpi_parse_state *parser_state, 140 union acpi_parse_object *root);
168 union acpi_parse_object *root);
169 141
170union acpi_parse_object * 142union acpi_parse_object *acpi_ps_get_parent_scope(struct acpi_parse_state
171acpi_ps_get_parent_scope ( 143 *state);
172 struct acpi_parse_state *state);
173 144
174u8 145u8 acpi_ps_has_completed_scope(struct acpi_parse_state *parser_state);
175acpi_ps_has_completed_scope (
176 struct acpi_parse_state *parser_state);
177 146
178void 147void
179acpi_ps_pop_scope ( 148acpi_ps_pop_scope(struct acpi_parse_state *parser_state,
180 struct acpi_parse_state *parser_state, 149 union acpi_parse_object **op,
181 union acpi_parse_object **op, 150 u32 * arg_list, u32 * arg_count);
182 u32 *arg_list,
183 u32 *arg_count);
184 151
185acpi_status 152acpi_status
186acpi_ps_push_scope ( 153acpi_ps_push_scope(struct acpi_parse_state *parser_state,
187 struct acpi_parse_state *parser_state, 154 union acpi_parse_object *op,
188 union acpi_parse_object *op, 155 u32 remaining_args, u32 arg_count);
189 u32 remaining_args,
190 u32 arg_count);
191
192void
193acpi_ps_cleanup_scope (
194 struct acpi_parse_state *state);
195 156
157void acpi_ps_cleanup_scope(struct acpi_parse_state *state);
196 158
197/* 159/*
198 * pstree - parse tree manipulation routines 160 * pstree - parse tree manipulation routines
199 */ 161 */
200void 162void
201acpi_ps_append_arg( 163acpi_ps_append_arg(union acpi_parse_object *op, union acpi_parse_object *arg);
202 union acpi_parse_object *op,
203 union acpi_parse_object *arg);
204
205union acpi_parse_object*
206acpi_ps_find (
207 union acpi_parse_object *scope,
208 char *path,
209 u16 opcode,
210 u32 create);
211
212union acpi_parse_object *
213acpi_ps_get_arg(
214 union acpi_parse_object *op,
215 u32 argn);
216 164
217#ifdef ACPI_FUTURE_USAGE 165union acpi_parse_object *acpi_ps_find(union acpi_parse_object *scope,
218union acpi_parse_object * 166 char *path, u16 opcode, u32 create);
219acpi_ps_get_depth_next (
220 union acpi_parse_object *origin,
221 union acpi_parse_object *op);
222#endif /* ACPI_FUTURE_USAGE */
223 167
168union acpi_parse_object *acpi_ps_get_arg(union acpi_parse_object *op, u32 argn);
169
170#ifdef ACPI_FUTURE_USAGE
171union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,
172 union acpi_parse_object *op);
173#endif /* ACPI_FUTURE_USAGE */
224 174
225/* 175/*
226 * pswalk - parse tree walk routines 176 * pswalk - parse tree walk routines
227 */ 177 */
228acpi_status 178acpi_status
229acpi_ps_walk_parsed_aml ( 179acpi_ps_walk_parsed_aml(union acpi_parse_object *start_op,
230 union acpi_parse_object *start_op, 180 union acpi_parse_object *end_op,
231 union acpi_parse_object *end_op, 181 union acpi_operand_object *mth_desc,
232 union acpi_operand_object *mth_desc, 182 struct acpi_namespace_node *start_node,
233 struct acpi_namespace_node *start_node, 183 union acpi_operand_object **params,
234 union acpi_operand_object **params, 184 union acpi_operand_object **caller_return_desc,
235 union acpi_operand_object **caller_return_desc, 185 acpi_owner_id owner_id,
236 acpi_owner_id owner_id, 186 acpi_parse_downwards descending_callback,
237 acpi_parse_downwards descending_callback, 187 acpi_parse_upwards ascending_callback);
238 acpi_parse_upwards ascending_callback);
239
240acpi_status
241acpi_ps_get_next_walk_op (
242 struct acpi_walk_state *walk_state,
243 union acpi_parse_object *op,
244 acpi_parse_upwards ascending_callback);
245 188
246acpi_status 189acpi_status
247acpi_ps_delete_completed_op ( 190acpi_ps_get_next_walk_op(struct acpi_walk_state *walk_state,
248 struct acpi_walk_state *walk_state); 191 union acpi_parse_object *op,
192 acpi_parse_upwards ascending_callback);
249 193
250void 194acpi_status acpi_ps_delete_completed_op(struct acpi_walk_state *walk_state);
251acpi_ps_delete_parse_tree (
252 union acpi_parse_object *root);
253 195
196void acpi_ps_delete_parse_tree(union acpi_parse_object *root);
254 197
255/* 198/*
256 * psutils - parser utilities 199 * psutils - parser utilities
257 */ 200 */
258union acpi_parse_object * 201union acpi_parse_object *acpi_ps_create_scope_op(void);
259acpi_ps_create_scope_op (
260 void);
261 202
262void 203void acpi_ps_init_op(union acpi_parse_object *op, u16 opcode);
263acpi_ps_init_op (
264 union acpi_parse_object *op,
265 u16 opcode);
266 204
267union acpi_parse_object * 205union acpi_parse_object *acpi_ps_alloc_op(u16 opcode);
268acpi_ps_alloc_op (
269 u16 opcode);
270 206
271void 207void acpi_ps_free_op(union acpi_parse_object *op);
272acpi_ps_free_op (
273 union acpi_parse_object *op);
274 208
275u8 209u8 acpi_ps_is_leading_char(u32 c);
276acpi_ps_is_leading_char (
277 u32 c);
278 210
279u8 211u8 acpi_ps_is_prefix_char(u32 c);
280acpi_ps_is_prefix_char (
281 u32 c);
282 212
283#ifdef ACPI_FUTURE_USAGE 213#ifdef ACPI_FUTURE_USAGE
284u32 214u32 acpi_ps_get_name(union acpi_parse_object *op);
285acpi_ps_get_name( 215#endif /* ACPI_FUTURE_USAGE */
286 union acpi_parse_object *op);
287#endif /* ACPI_FUTURE_USAGE */
288
289void
290acpi_ps_set_name(
291 union acpi_parse_object *op,
292 u32 name);
293
294#ifdef ACPI_ENABLE_OBJECT_CACHE
295void
296acpi_ps_delete_parse_cache (
297 void);
298#endif
299 216
217void acpi_ps_set_name(union acpi_parse_object *op, u32 name);
300 218
301/* 219/*
302 * psdump - display parser tree 220 * psdump - display parser tree
303 */ 221 */
304u32 222u32
305acpi_ps_sprint_path ( 223acpi_ps_sprint_path(char *buffer_start,
306 char *buffer_start, 224 u32 buffer_size, union acpi_parse_object *op);
307 u32 buffer_size,
308 union acpi_parse_object *op);
309 225
310u32 226u32
311acpi_ps_sprint_op ( 227acpi_ps_sprint_op(char *buffer_start,
312 char *buffer_start, 228 u32 buffer_size, union acpi_parse_object *op);
313 u32 buffer_size,
314 union acpi_parse_object *op);
315
316void
317acpi_ps_show (
318 union acpi_parse_object *op);
319 229
230void acpi_ps_show(union acpi_parse_object *op);
320 231
321#endif /* __ACPARSER_H__ */ 232#endif /* __ACPARSER_H__ */
diff --git a/include/acpi/acpi.h b/include/acpi/acpi.h
index a69d78942040..ccf34f9dac64 100644
--- a/include/acpi/acpi.h
+++ b/include/acpi/acpi.h
@@ -49,22 +49,21 @@
49 * We put them here because we don't want to duplicate them 49 * We put them here because we don't want to duplicate them
50 * in the rest of the source code again and again. 50 * in the rest of the source code again and again.
51 */ 51 */
52#include "acnames.h" /* Global ACPI names and strings */ 52#include "acnames.h" /* Global ACPI names and strings */
53#include "acconfig.h" /* Configuration constants */ 53#include "acconfig.h" /* Configuration constants */
54#include "platform/acenv.h" /* Target environment specific items */ 54#include "platform/acenv.h" /* Target environment specific items */
55#include "actypes.h" /* Fundamental common data types */ 55#include "actypes.h" /* Fundamental common data types */
56#include "acexcep.h" /* ACPI exception codes */ 56#include "acexcep.h" /* ACPI exception codes */
57#include "acmacros.h" /* C macros */ 57#include "acmacros.h" /* C macros */
58#include "actbl.h" /* ACPI table definitions */ 58#include "actbl.h" /* ACPI table definitions */
59#include "aclocal.h" /* Internal data types */ 59#include "aclocal.h" /* Internal data types */
60#include "acoutput.h" /* Error output and Debug macros */ 60#include "acoutput.h" /* Error output and Debug macros */
61#include "acpiosxf.h" /* Interfaces to the ACPI-to-OS layer*/ 61#include "acpiosxf.h" /* Interfaces to the ACPI-to-OS layer */
62#include "acpixf.h" /* ACPI core subsystem external interfaces */ 62#include "acpixf.h" /* ACPI core subsystem external interfaces */
63#include "acobject.h" /* ACPI internal object */ 63#include "acobject.h" /* ACPI internal object */
64#include "acstruct.h" /* Common structures */ 64#include "acstruct.h" /* Common structures */
65#include "acglobal.h" /* All global variables */ 65#include "acglobal.h" /* All global variables */
66#include "achware.h" /* Hardware defines and interfaces */ 66#include "achware.h" /* Hardware defines and interfaces */
67#include "acutils.h" /* Utility interfaces */ 67#include "acutils.h" /* Utility interfaces */
68 68
69 69#endif /* __ACPI_H__ */
70#endif /* __ACPI_H__ */
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 8d0e1290bc76..0b54e9a4a8a1 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -35,48 +35,41 @@
35/* TBD: Make dynamic */ 35/* TBD: Make dynamic */
36#define ACPI_MAX_HANDLES 10 36#define ACPI_MAX_HANDLES 10
37struct acpi_handle_list { 37struct acpi_handle_list {
38 u32 count; 38 u32 count;
39 acpi_handle handles[ACPI_MAX_HANDLES]; 39 acpi_handle handles[ACPI_MAX_HANDLES];
40}; 40};
41 41
42
43/* acpi_utils.h */ 42/* acpi_utils.h */
44acpi_status 43acpi_status
45acpi_extract_package ( 44acpi_extract_package(union acpi_object *package,
46 union acpi_object *package, 45 struct acpi_buffer *format, struct acpi_buffer *buffer);
47 struct acpi_buffer *format,
48 struct acpi_buffer *buffer);
49acpi_status 46acpi_status
50acpi_evaluate_integer ( 47acpi_evaluate_integer(acpi_handle handle,
51 acpi_handle handle, 48 acpi_string pathname,
52 acpi_string pathname, 49 struct acpi_object_list *arguments, unsigned long *data);
53 struct acpi_object_list *arguments,
54 unsigned long *data);
55acpi_status 50acpi_status
56acpi_evaluate_reference ( 51acpi_evaluate_reference(acpi_handle handle,
57 acpi_handle handle, 52 acpi_string pathname,
58 acpi_string pathname, 53 struct acpi_object_list *arguments,
59 struct acpi_object_list *arguments, 54 struct acpi_handle_list *list);
60 struct acpi_handle_list *list);
61
62 55
63#ifdef CONFIG_ACPI_BUS 56#ifdef CONFIG_ACPI
64 57
65#include <linux/proc_fs.h> 58#include <linux/proc_fs.h>
66 59
67#define ACPI_BUS_FILE_ROOT "acpi" 60#define ACPI_BUS_FILE_ROOT "acpi"
68extern struct proc_dir_entry *acpi_root_dir; 61extern struct proc_dir_entry *acpi_root_dir;
69extern FADT_DESCRIPTOR acpi_fadt; 62extern FADT_DESCRIPTOR acpi_fadt;
70 63
71enum acpi_bus_removal_type { 64enum acpi_bus_removal_type {
72 ACPI_BUS_REMOVAL_NORMAL = 0, 65 ACPI_BUS_REMOVAL_NORMAL = 0,
73 ACPI_BUS_REMOVAL_EJECT, 66 ACPI_BUS_REMOVAL_EJECT,
74 ACPI_BUS_REMOVAL_SUPRISE, 67 ACPI_BUS_REMOVAL_SUPRISE,
75 ACPI_BUS_REMOVAL_TYPE_COUNT 68 ACPI_BUS_REMOVAL_TYPE_COUNT
76}; 69};
77 70
78enum acpi_bus_device_type { 71enum acpi_bus_device_type {
79 ACPI_BUS_TYPE_DEVICE = 0, 72 ACPI_BUS_TYPE_DEVICE = 0,
80 ACPI_BUS_TYPE_POWER, 73 ACPI_BUS_TYPE_POWER,
81 ACPI_BUS_TYPE_PROCESSOR, 74 ACPI_BUS_TYPE_PROCESSOR,
82 ACPI_BUS_TYPE_THERMAL, 75 ACPI_BUS_TYPE_THERMAL,
@@ -89,61 +82,60 @@ enum acpi_bus_device_type {
89struct acpi_driver; 82struct acpi_driver;
90struct acpi_device; 83struct acpi_device;
91 84
92
93/* 85/*
94 * ACPI Driver 86 * ACPI Driver
95 * ----------- 87 * -----------
96 */ 88 */
97 89
98typedef int (*acpi_op_add) (struct acpi_device *device); 90typedef int (*acpi_op_add) (struct acpi_device * device);
99typedef int (*acpi_op_remove) (struct acpi_device *device, int type); 91typedef int (*acpi_op_remove) (struct acpi_device * device, int type);
100typedef int (*acpi_op_lock) (struct acpi_device *device, int type); 92typedef int (*acpi_op_lock) (struct acpi_device * device, int type);
101typedef int (*acpi_op_start) (struct acpi_device *device); 93typedef int (*acpi_op_start) (struct acpi_device * device);
102typedef int (*acpi_op_stop) (struct acpi_device *device, int type); 94typedef int (*acpi_op_stop) (struct acpi_device * device, int type);
103typedef int (*acpi_op_suspend) (struct acpi_device *device, int state); 95typedef int (*acpi_op_suspend) (struct acpi_device * device, int state);
104typedef int (*acpi_op_resume) (struct acpi_device *device, int state); 96typedef int (*acpi_op_resume) (struct acpi_device * device, int state);
105typedef int (*acpi_op_scan) (struct acpi_device *device); 97typedef int (*acpi_op_scan) (struct acpi_device * device);
106typedef int (*acpi_op_bind) (struct acpi_device *device); 98typedef int (*acpi_op_bind) (struct acpi_device * device);
107typedef int (*acpi_op_unbind) (struct acpi_device *device); 99typedef int (*acpi_op_unbind) (struct acpi_device * device);
108typedef int (*acpi_op_match) (struct acpi_device *device, 100typedef int (*acpi_op_match) (struct acpi_device * device,
109 struct acpi_driver *driver); 101 struct acpi_driver * driver);
110 102
111struct acpi_bus_ops { 103struct acpi_bus_ops {
112 u32 acpi_op_add:1; 104 u32 acpi_op_add:1;
113 u32 acpi_op_remove:1; 105 u32 acpi_op_remove:1;
114 u32 acpi_op_lock:1; 106 u32 acpi_op_lock:1;
115 u32 acpi_op_start:1; 107 u32 acpi_op_start:1;
116 u32 acpi_op_stop:1; 108 u32 acpi_op_stop:1;
117 u32 acpi_op_suspend:1; 109 u32 acpi_op_suspend:1;
118 u32 acpi_op_resume:1; 110 u32 acpi_op_resume:1;
119 u32 acpi_op_scan:1; 111 u32 acpi_op_scan:1;
120 u32 acpi_op_bind:1; 112 u32 acpi_op_bind:1;
121 u32 acpi_op_unbind:1; 113 u32 acpi_op_unbind:1;
122 u32 acpi_op_match:1; 114 u32 acpi_op_match:1;
123 u32 reserved:21; 115 u32 reserved:21;
124}; 116};
125 117
126struct acpi_device_ops { 118struct acpi_device_ops {
127 acpi_op_add add; 119 acpi_op_add add;
128 acpi_op_remove remove; 120 acpi_op_remove remove;
129 acpi_op_lock lock; 121 acpi_op_lock lock;
130 acpi_op_start start; 122 acpi_op_start start;
131 acpi_op_stop stop; 123 acpi_op_stop stop;
132 acpi_op_suspend suspend; 124 acpi_op_suspend suspend;
133 acpi_op_resume resume; 125 acpi_op_resume resume;
134 acpi_op_scan scan; 126 acpi_op_scan scan;
135 acpi_op_bind bind; 127 acpi_op_bind bind;
136 acpi_op_unbind unbind; 128 acpi_op_unbind unbind;
137 acpi_op_match match; 129 acpi_op_match match;
138}; 130};
139 131
140struct acpi_driver { 132struct acpi_driver {
141 struct list_head node; 133 struct list_head node;
142 char name[80]; 134 char name[80];
143 char class[80]; 135 char class[80];
144 atomic_t references; 136 atomic_t references;
145 char *ids; /* Supported Hardware IDs */ 137 char *ids; /* Supported Hardware IDs */
146 struct acpi_device_ops ops; 138 struct acpi_device_ops ops;
147}; 139};
148 140
149/* 141/*
@@ -154,60 +146,57 @@ struct acpi_driver {
154/* Status (_STA) */ 146/* Status (_STA) */
155 147
156struct acpi_device_status { 148struct acpi_device_status {
157 u32 present:1; 149 u32 present:1;
158 u32 enabled:1; 150 u32 enabled:1;
159 u32 show_in_ui:1; 151 u32 show_in_ui:1;
160 u32 functional:1; 152 u32 functional:1;
161 u32 battery_present:1; 153 u32 battery_present:1;
162 u32 reserved:27; 154 u32 reserved:27;
163}; 155};
164 156
165
166/* Flags */ 157/* Flags */
167 158
168struct acpi_device_flags { 159struct acpi_device_flags {
169 u32 dynamic_status:1; 160 u32 dynamic_status:1;
170 u32 hardware_id:1; 161 u32 hardware_id:1;
171 u32 compatible_ids:1; 162 u32 compatible_ids:1;
172 u32 bus_address:1; 163 u32 bus_address:1;
173 u32 unique_id:1; 164 u32 unique_id:1;
174 u32 removable:1; 165 u32 removable:1;
175 u32 ejectable:1; 166 u32 ejectable:1;
176 u32 lockable:1; 167 u32 lockable:1;
177 u32 suprise_removal_ok:1; 168 u32 suprise_removal_ok:1;
178 u32 power_manageable:1; 169 u32 power_manageable:1;
179 u32 performance_manageable:1; 170 u32 performance_manageable:1;
180 u32 wake_capable:1; /* Wakeup(_PRW) supported? */ 171 u32 wake_capable:1; /* Wakeup(_PRW) supported? */
181 u32 reserved:20; 172 u32 reserved:20;
182}; 173};
183 174
184
185/* File System */ 175/* File System */
186 176
187struct acpi_device_dir { 177struct acpi_device_dir {
188 struct proc_dir_entry *entry; 178 struct proc_dir_entry *entry;
189}; 179};
190 180
191#define acpi_device_dir(d) ((d)->dir.entry) 181#define acpi_device_dir(d) ((d)->dir.entry)
192 182
193
194/* Plug and Play */ 183/* Plug and Play */
195 184
196typedef char acpi_bus_id[5]; 185typedef char acpi_bus_id[5];
197typedef unsigned long acpi_bus_address; 186typedef unsigned long acpi_bus_address;
198typedef char acpi_hardware_id[9]; 187typedef char acpi_hardware_id[9];
199typedef char acpi_unique_id[9]; 188typedef char acpi_unique_id[9];
200typedef char acpi_device_name[40]; 189typedef char acpi_device_name[40];
201typedef char acpi_device_class[20]; 190typedef char acpi_device_class[20];
202 191
203struct acpi_device_pnp { 192struct acpi_device_pnp {
204 acpi_bus_id bus_id; /* Object name */ 193 acpi_bus_id bus_id; /* Object name */
205 acpi_bus_address bus_address; /* _ADR */ 194 acpi_bus_address bus_address; /* _ADR */
206 acpi_hardware_id hardware_id; /* _HID */ 195 acpi_hardware_id hardware_id; /* _HID */
207 struct acpi_compatible_id_list *cid_list; /* _CIDs */ 196 struct acpi_compatible_id_list *cid_list; /* _CIDs */
208 acpi_unique_id unique_id; /* _UID */ 197 acpi_unique_id unique_id; /* _UID */
209 acpi_device_name device_name; /* Driver-determined */ 198 acpi_device_name device_name; /* Driver-determined */
210 acpi_device_class device_class; /* " */ 199 acpi_device_class device_class; /* " */
211}; 200};
212 201
213#define acpi_device_bid(d) ((d)->pnp.bus_id) 202#define acpi_device_bid(d) ((d)->pnp.bus_id)
@@ -217,114 +206,111 @@ struct acpi_device_pnp {
217#define acpi_device_name(d) ((d)->pnp.device_name) 206#define acpi_device_name(d) ((d)->pnp.device_name)
218#define acpi_device_class(d) ((d)->pnp.device_class) 207#define acpi_device_class(d) ((d)->pnp.device_class)
219 208
220
221/* Power Management */ 209/* Power Management */
222 210
223struct acpi_device_power_flags { 211struct acpi_device_power_flags {
224 u32 explicit_get:1; /* _PSC present? */ 212 u32 explicit_get:1; /* _PSC present? */
225 u32 power_resources:1; /* Power resources */ 213 u32 power_resources:1; /* Power resources */
226 u32 inrush_current:1; /* Serialize Dx->D0 */ 214 u32 inrush_current:1; /* Serialize Dx->D0 */
227 u32 power_removed:1; /* Optimize Dx->D0 */ 215 u32 power_removed:1; /* Optimize Dx->D0 */
228 u32 reserved:28; 216 u32 reserved:28;
229}; 217};
230 218
231struct acpi_device_power_state { 219struct acpi_device_power_state {
232 struct { 220 struct {
233 u8 valid:1; 221 u8 valid:1;
234 u8 explicit_set:1; /* _PSx present? */ 222 u8 explicit_set:1; /* _PSx present? */
235 u8 reserved:6; 223 u8 reserved:6;
236 } flags; 224 } flags;
237 int power; /* % Power (compared to D0) */ 225 int power; /* % Power (compared to D0) */
238 int latency; /* Dx->D0 time (microseconds) */ 226 int latency; /* Dx->D0 time (microseconds) */
239 struct acpi_handle_list resources; /* Power resources referenced */ 227 struct acpi_handle_list resources; /* Power resources referenced */
240}; 228};
241 229
242struct acpi_device_power { 230struct acpi_device_power {
243 int state; /* Current state */ 231 int state; /* Current state */
244 struct acpi_device_power_flags flags; 232 struct acpi_device_power_flags flags;
245 struct acpi_device_power_state states[4]; /* Power states (D0-D3) */ 233 struct acpi_device_power_state states[4]; /* Power states (D0-D3) */
246}; 234};
247 235
248
249/* Performance Management */ 236/* Performance Management */
250 237
251struct acpi_device_perf_flags { 238struct acpi_device_perf_flags {
252 u8 reserved:8; 239 u8 reserved:8;
253}; 240};
254 241
255struct acpi_device_perf_state { 242struct acpi_device_perf_state {
256 struct { 243 struct {
257 u8 valid:1; 244 u8 valid:1;
258 u8 reserved:7; 245 u8 reserved:7;
259 } flags; 246 } flags;
260 u8 power; /* % Power (compared to P0) */ 247 u8 power; /* % Power (compared to P0) */
261 u8 performance; /* % Performance ( " ) */ 248 u8 performance; /* % Performance ( " ) */
262 int latency; /* Px->P0 time (microseconds) */ 249 int latency; /* Px->P0 time (microseconds) */
263}; 250};
264 251
265struct acpi_device_perf { 252struct acpi_device_perf {
266 int state; 253 int state;
267 struct acpi_device_perf_flags flags; 254 struct acpi_device_perf_flags flags;
268 int state_count; 255 int state_count;
269 struct acpi_device_perf_state *states; 256 struct acpi_device_perf_state *states;
270}; 257};
271 258
272/* Wakeup Management */ 259/* Wakeup Management */
273struct acpi_device_wakeup_flags { 260struct acpi_device_wakeup_flags {
274 u8 valid:1; /* Can successfully enable wakeup? */ 261 u8 valid:1; /* Can successfully enable wakeup? */
275 u8 run_wake:1; /* Run-Wake GPE devices */ 262 u8 run_wake:1; /* Run-Wake GPE devices */
276}; 263};
277 264
278struct acpi_device_wakeup_state { 265struct acpi_device_wakeup_state {
279 u8 enabled:1; 266 u8 enabled:1;
280 u8 active:1; 267 u8 active:1;
281}; 268};
282 269
283struct acpi_device_wakeup { 270struct acpi_device_wakeup {
284 acpi_handle gpe_device; 271 acpi_handle gpe_device;
285 acpi_integer gpe_number;; 272 acpi_integer gpe_number;;
286 acpi_integer sleep_state; 273 acpi_integer sleep_state;
287 struct acpi_handle_list resources; 274 struct acpi_handle_list resources;
288 struct acpi_device_wakeup_state state; 275 struct acpi_device_wakeup_state state;
289 struct acpi_device_wakeup_flags flags; 276 struct acpi_device_wakeup_flags flags;
290}; 277};
291 278
292/* Device */ 279/* Device */
293 280
294struct acpi_device { 281struct acpi_device {
295 acpi_handle handle; 282 acpi_handle handle;
296 struct acpi_device *parent; 283 struct acpi_device *parent;
297 struct list_head children; 284 struct list_head children;
298 struct list_head node; 285 struct list_head node;
299 struct list_head wakeup_list; 286 struct list_head wakeup_list;
300 struct list_head g_list; 287 struct list_head g_list;
301 struct acpi_device_status status; 288 struct acpi_device_status status;
302 struct acpi_device_flags flags; 289 struct acpi_device_flags flags;
303 struct acpi_device_pnp pnp; 290 struct acpi_device_pnp pnp;
304 struct acpi_device_power power; 291 struct acpi_device_power power;
305 struct acpi_device_wakeup wakeup; 292 struct acpi_device_wakeup wakeup;
306 struct acpi_device_perf performance; 293 struct acpi_device_perf performance;
307 struct acpi_device_dir dir; 294 struct acpi_device_dir dir;
308 struct acpi_device_ops ops; 295 struct acpi_device_ops ops;
309 struct acpi_driver *driver; 296 struct acpi_driver *driver;
310 void *driver_data; 297 void *driver_data;
311 struct kobject kobj; 298 struct kobject kobj;
312}; 299};
313 300
314#define acpi_driver_data(d) ((d)->driver_data) 301#define acpi_driver_data(d) ((d)->driver_data)
315 302
316
317/* 303/*
318 * Events 304 * Events
319 * ------ 305 * ------
320 */ 306 */
321 307
322struct acpi_bus_event { 308struct acpi_bus_event {
323 struct list_head node; 309 struct list_head node;
324 acpi_device_class device_class; 310 acpi_device_class device_class;
325 acpi_bus_id bus_id; 311 acpi_bus_id bus_id;
326 u32 type; 312 u32 type;
327 u32 data; 313 u32 data;
328}; 314};
329 315
330extern struct subsystem acpi_subsys; 316extern struct subsystem acpi_subsys;
@@ -335,34 +321,32 @@ extern struct subsystem acpi_subsys;
335 321
336int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device); 322int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device);
337void acpi_bus_data_handler(acpi_handle handle, u32 function, void *context); 323void acpi_bus_data_handler(acpi_handle handle, u32 function, void *context);
338int acpi_bus_get_status (struct acpi_device *device); 324int acpi_bus_get_status(struct acpi_device *device);
339int acpi_bus_get_power (acpi_handle handle, int *state); 325int acpi_bus_get_power(acpi_handle handle, int *state);
340int acpi_bus_set_power (acpi_handle handle, int state); 326int acpi_bus_set_power(acpi_handle handle, int state);
341int acpi_bus_generate_event (struct acpi_device *device, u8 type, int data); 327int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data);
342int acpi_bus_receive_event (struct acpi_bus_event *event); 328int acpi_bus_receive_event(struct acpi_bus_event *event);
343int acpi_bus_register_driver (struct acpi_driver *driver); 329int acpi_bus_register_driver(struct acpi_driver *driver);
344int acpi_bus_unregister_driver (struct acpi_driver *driver); 330int acpi_bus_unregister_driver(struct acpi_driver *driver);
345int acpi_bus_add (struct acpi_device **child, struct acpi_device *parent, 331int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent,
346 acpi_handle handle, int type); 332 acpi_handle handle, int type);
347int acpi_bus_start (struct acpi_device *device); 333int acpi_bus_start(struct acpi_device *device);
348 334
349 335int acpi_match_ids(struct acpi_device *device, char *ids);
350int acpi_match_ids (struct acpi_device *device, char *ids);
351int acpi_create_dir(struct acpi_device *); 336int acpi_create_dir(struct acpi_device *);
352void acpi_remove_dir(struct acpi_device *); 337void acpi_remove_dir(struct acpi_device *);
353 338
354
355/* 339/*
356 * Bind physical devices with ACPI devices 340 * Bind physical devices with ACPI devices
357 */ 341 */
358#include <linux/device.h> 342#include <linux/device.h>
359struct acpi_bus_type { 343struct acpi_bus_type {
360 struct list_head list; 344 struct list_head list;
361 struct bus_type *bus; 345 struct bus_type *bus;
362 /* For general devices under the bus*/ 346 /* For general devices under the bus */
363 int (*find_device)(struct device *, acpi_handle*); 347 int (*find_device) (struct device *, acpi_handle *);
364 /* For bridges, such as PCI root bridge, IDE controller */ 348 /* For bridges, such as PCI root bridge, IDE controller */
365 int (*find_bridge)(struct device *, acpi_handle *); 349 int (*find_bridge) (struct device *, acpi_handle *);
366}; 350};
367int register_acpi_bus_type(struct acpi_bus_type *); 351int register_acpi_bus_type(struct acpi_bus_type *);
368int unregister_acpi_bus_type(struct acpi_bus_type *); 352int unregister_acpi_bus_type(struct acpi_bus_type *);
@@ -372,6 +356,6 @@ acpi_handle acpi_get_child(acpi_handle, acpi_integer);
372acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int); 356acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int);
373#define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->firmware_data)) 357#define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->firmware_data))
374 358
375#endif /*CONFIG_ACPI_BUS*/ 359#endif /* CONFIG_ACPI */
376 360
377#endif /*__ACPI_BUS_H__*/ 361#endif /*__ACPI_BUS_H__*/
diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h
index 579fe191b7e7..c1b4e1f882e4 100644
--- a/include/acpi/acpi_drivers.h
+++ b/include/acpi/acpi_drivers.h
@@ -29,7 +29,6 @@
29#include <linux/acpi.h> 29#include <linux/acpi.h>
30#include <acpi/acpi_bus.h> 30#include <acpi/acpi_bus.h>
31 31
32
33#define ACPI_MAX_STRING 80 32#define ACPI_MAX_STRING 80
34 33
35#define ACPI_BUS_COMPONENT 0x00010000 34#define ACPI_BUS_COMPONENT 0x00010000
@@ -44,60 +43,55 @@
44#define ACPI_BUTTON_HID_POWERF "ACPI_FPB" 43#define ACPI_BUTTON_HID_POWERF "ACPI_FPB"
45#define ACPI_BUTTON_HID_SLEEPF "ACPI_FSB" 44#define ACPI_BUTTON_HID_SLEEPF "ACPI_FSB"
46 45
47
48/* -------------------------------------------------------------------------- 46/* --------------------------------------------------------------------------
49 PCI 47 PCI
50 -------------------------------------------------------------------------- */ 48 -------------------------------------------------------------------------- */
51 49
52#ifdef CONFIG_ACPI_PCI
53
54#define ACPI_PCI_COMPONENT 0x00400000 50#define ACPI_PCI_COMPONENT 0x00400000
55 51
56/* ACPI PCI Interrupt Link (pci_link.c) */ 52/* ACPI PCI Interrupt Link (pci_link.c) */
57 53
58int acpi_irq_penalty_init (void); 54int acpi_irq_penalty_init(void);
59int acpi_pci_link_allocate_irq (acpi_handle handle, int index, int *edge_level, 55int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *edge_level,
60 int *active_high_low, char **name); 56 int *active_high_low, char **name);
61int acpi_pci_link_free_irq(acpi_handle handle); 57int acpi_pci_link_free_irq(acpi_handle handle);
62 58
63/* ACPI PCI Interrupt Routing (pci_irq.c) */ 59/* ACPI PCI Interrupt Routing (pci_irq.c) */
64 60
65int acpi_pci_irq_add_prt (acpi_handle handle, int segment, int bus); 61int acpi_pci_irq_add_prt(acpi_handle handle, int segment, int bus);
66void acpi_pci_irq_del_prt (int segment, int bus); 62void acpi_pci_irq_del_prt(int segment, int bus);
67 63
68/* ACPI PCI Device Binding (pci_bind.c) */ 64/* ACPI PCI Device Binding (pci_bind.c) */
69 65
70struct pci_bus; 66struct pci_bus;
71 67
72acpi_status acpi_get_pci_id (acpi_handle handle, struct acpi_pci_id *id); 68acpi_status acpi_get_pci_id(acpi_handle handle, struct acpi_pci_id *id);
73int acpi_pci_bind (struct acpi_device *device); 69int acpi_pci_bind(struct acpi_device *device);
74int acpi_pci_unbind (struct acpi_device *device); 70int acpi_pci_unbind(struct acpi_device *device);
75int acpi_pci_bind_root (struct acpi_device *device, struct acpi_pci_id *id, struct pci_bus *bus); 71int acpi_pci_bind_root(struct acpi_device *device, struct acpi_pci_id *id,
72 struct pci_bus *bus);
76 73
77/* Arch-defined function to add a bus to the system */ 74/* Arch-defined function to add a bus to the system */
78 75
79struct pci_bus *pci_acpi_scan_root(struct acpi_device *device, int domain, int bus); 76struct pci_bus *pci_acpi_scan_root(struct acpi_device *device, int domain,
80 77 int bus);
81#endif /*CONFIG_ACPI_PCI*/
82
83 78
84/* -------------------------------------------------------------------------- 79/* --------------------------------------------------------------------------
85 Power Resource 80 Power Resource
86 -------------------------------------------------------------------------- */ 81 -------------------------------------------------------------------------- */
87 82
88#ifdef CONFIG_ACPI_POWER 83#ifdef CONFIG_ACPI_POWER
89int acpi_enable_wakeup_device_power (struct acpi_device *dev); 84int acpi_enable_wakeup_device_power(struct acpi_device *dev);
90int acpi_disable_wakeup_device_power (struct acpi_device *dev); 85int acpi_disable_wakeup_device_power(struct acpi_device *dev);
91int acpi_power_get_inferred_state (struct acpi_device *device); 86int acpi_power_get_inferred_state(struct acpi_device *device);
92int acpi_power_transition (struct acpi_device *device, int state); 87int acpi_power_transition(struct acpi_device *device, int state);
93#endif 88#endif
94 89
95
96/* -------------------------------------------------------------------------- 90/* --------------------------------------------------------------------------
97 Embedded Controller 91 Embedded Controller
98 -------------------------------------------------------------------------- */ 92 -------------------------------------------------------------------------- */
99#ifdef CONFIG_ACPI_EC 93#ifdef CONFIG_ACPI_EC
100int acpi_ec_ecdt_probe (void); 94int acpi_ec_ecdt_probe(void);
101#endif 95#endif
102 96
103/* -------------------------------------------------------------------------- 97/* --------------------------------------------------------------------------
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h
index ea489f235216..98e0b8cd14ed 100644
--- a/include/acpi/acpiosxf.h
+++ b/include/acpi/acpiosxf.h
@@ -7,7 +7,6 @@
7 * 7 *
8 *****************************************************************************/ 8 *****************************************************************************/
9 9
10
11/* 10/*
12 * Copyright (C) 2000 - 2005, R. Byron Moore 11 * Copyright (C) 2000 - 2005, R. Byron Moore
13 * All rights reserved. 12 * All rights reserved.
@@ -51,7 +50,6 @@
51#include "platform/acenv.h" 50#include "platform/acenv.h"
52#include "actypes.h" 51#include "actypes.h"
53 52
54
55/* Priorities for acpi_os_queue_for_execution */ 53/* Priorities for acpi_os_queue_for_execution */
56 54
57#define OSD_PRIORITY_GPE 1 55#define OSD_PRIORITY_GPE 1
@@ -62,200 +60,136 @@
62#define ACPI_NO_UNIT_LIMIT ((u32) -1) 60#define ACPI_NO_UNIT_LIMIT ((u32) -1)
63#define ACPI_MUTEX_SEM 1 61#define ACPI_MUTEX_SEM 1
64 62
65
66/* Functions for acpi_os_signal */ 63/* Functions for acpi_os_signal */
67 64
68#define ACPI_SIGNAL_FATAL 0 65#define ACPI_SIGNAL_FATAL 0
69#define ACPI_SIGNAL_BREAKPOINT 1 66#define ACPI_SIGNAL_BREAKPOINT 1
70 67
71struct acpi_signal_fatal_info 68struct acpi_signal_fatal_info {
72{ 69 u32 type;
73 u32 type; 70 u32 code;
74 u32 code; 71 u32 argument;
75 u32 argument;
76}; 72};
77 73
78
79/* 74/*
80 * OSL Initialization and shutdown primitives 75 * OSL Initialization and shutdown primitives
81 */ 76 */
82acpi_status 77acpi_status acpi_os_initialize(void);
83acpi_os_initialize (
84 void);
85
86acpi_status
87acpi_os_terminate (
88 void);
89 78
79acpi_status acpi_os_terminate(void);
90 80
91/* 81/*
92 * ACPI Table interfaces 82 * ACPI Table interfaces
93 */ 83 */
94acpi_status 84acpi_status acpi_os_get_root_pointer(u32 flags, struct acpi_pointer *address);
95acpi_os_get_root_pointer (
96 u32 flags,
97 struct acpi_pointer *address);
98 85
99acpi_status 86acpi_status
100acpi_os_predefined_override ( 87acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
101 const struct acpi_predefined_names *init_val, 88 acpi_string * new_val);
102 acpi_string *new_val);
103 89
104acpi_status 90acpi_status
105acpi_os_table_override ( 91acpi_os_table_override(struct acpi_table_header *existing_table,
106 struct acpi_table_header *existing_table, 92 struct acpi_table_header **new_table);
107 struct acpi_table_header **new_table);
108
109 93
110/* 94/*
111 * Synchronization primitives 95 * Synchronization primitives
112 */ 96 */
113acpi_status 97acpi_status
114acpi_os_create_semaphore ( 98acpi_os_create_semaphore(u32 max_units,
115 u32 max_units, 99 u32 initial_units, acpi_handle * out_handle);
116 u32 initial_units,
117 acpi_handle *out_handle);
118
119acpi_status
120acpi_os_delete_semaphore (
121 acpi_handle handle);
122 100
123acpi_status 101acpi_status acpi_os_delete_semaphore(acpi_handle handle);
124acpi_os_wait_semaphore (
125 acpi_handle handle,
126 u32 units,
127 u16 timeout);
128 102
129acpi_status 103acpi_status acpi_os_wait_semaphore(acpi_handle handle, u32 units, u16 timeout);
130acpi_os_signal_semaphore (
131 acpi_handle handle,
132 u32 units);
133 104
134acpi_status 105acpi_status acpi_os_signal_semaphore(acpi_handle handle, u32 units);
135acpi_os_create_lock (
136 acpi_handle *out_handle);
137 106
138void 107acpi_status acpi_os_create_lock(acpi_handle * out_handle);
139acpi_os_delete_lock (
140 acpi_handle handle);
141 108
142void 109void acpi_os_delete_lock(acpi_handle handle);
143acpi_os_acquire_lock (
144 acpi_handle handle,
145 u32 flags);
146 110
147void 111unsigned long acpi_os_acquire_lock(acpi_handle handle);
148acpi_os_release_lock (
149 acpi_handle handle,
150 u32 flags);
151 112
113void acpi_os_release_lock(acpi_handle handle, unsigned long flags);
152 114
153/* 115/*
154 * Memory allocation and mapping 116 * Memory allocation and mapping
155 */ 117 */
156void * 118void *acpi_os_allocate(acpi_size size);
157acpi_os_allocate (
158 acpi_size size);
159 119
160void 120void acpi_os_free(void *memory);
161acpi_os_free (
162 void * memory);
163 121
164acpi_status 122acpi_status
165acpi_os_map_memory ( 123acpi_os_map_memory(acpi_physical_address physical_address,
166 acpi_physical_address physical_address, 124 acpi_size size, void __iomem ** logical_address);
167 acpi_size size,
168 void __iomem **logical_address);
169 125
170void 126void acpi_os_unmap_memory(void __iomem * logical_address, acpi_size size);
171acpi_os_unmap_memory (
172 void __iomem *logical_address,
173 acpi_size size);
174 127
175#ifdef ACPI_FUTURE_USAGE 128#ifdef ACPI_FUTURE_USAGE
176acpi_status 129acpi_status
177acpi_os_get_physical_address ( 130acpi_os_get_physical_address(void *logical_address,
178 void *logical_address, 131 acpi_physical_address * physical_address);
179 acpi_physical_address *physical_address);
180#endif 132#endif
181 133
134/*
135 * Memory/Object Cache
136 */
137acpi_status
138acpi_os_create_cache(char *cache_name,
139 u16 object_size,
140 u16 max_depth, acpi_cache_t ** return_cache);
141
142acpi_status acpi_os_delete_cache(acpi_cache_t * cache);
143
144acpi_status acpi_os_purge_cache(acpi_cache_t * cache);
145
146void *acpi_os_acquire_object(acpi_cache_t * cache);
147
148acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object);
182 149
183/* 150/*
184 * Interrupt handlers 151 * Interrupt handlers
185 */ 152 */
186acpi_status 153acpi_status
187acpi_os_install_interrupt_handler ( 154acpi_os_install_interrupt_handler(u32 gsi,
188 u32 gsi, 155 acpi_osd_handler service_routine,
189 acpi_osd_handler service_routine, 156 void *context);
190 void *context);
191 157
192acpi_status 158acpi_status
193acpi_os_remove_interrupt_handler ( 159acpi_os_remove_interrupt_handler(u32 gsi, acpi_osd_handler service_routine);
194 u32 gsi,
195 acpi_osd_handler service_routine);
196
197 160
198/* 161/*
199 * Threads and Scheduling 162 * Threads and Scheduling
200 */ 163 */
201u32 164u32 acpi_os_get_thread_id(void);
202acpi_os_get_thread_id (
203 void);
204 165
205acpi_status 166acpi_status
206acpi_os_queue_for_execution ( 167acpi_os_queue_for_execution(u32 priority,
207 u32 priority, 168 acpi_osd_exec_callback function, void *context);
208 acpi_osd_exec_callback function,
209 void *context);
210 169
211void 170void acpi_os_wait_events_complete(void *context);
212acpi_os_wait_events_complete(
213 void * context);
214 171
215void 172void acpi_os_wait_events_complete(void *context);
216acpi_os_wait_events_complete (
217 void *context);
218 173
219void 174void acpi_os_sleep(acpi_integer milliseconds);
220acpi_os_sleep (
221 acpi_integer milliseconds);
222
223void
224acpi_os_stall (
225 u32 microseconds);
226 175
176void acpi_os_stall(u32 microseconds);
227 177
228/* 178/*
229 * Platform and hardware-independent I/O interfaces 179 * Platform and hardware-independent I/O interfaces
230 */ 180 */
231acpi_status 181acpi_status acpi_os_read_port(acpi_io_address address, u32 * value, u32 width);
232acpi_os_read_port (
233 acpi_io_address address,
234 u32 *value,
235 u32 width);
236
237acpi_status
238acpi_os_write_port (
239 acpi_io_address address,
240 u32 value,
241 u32 width);
242 182
183acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width);
243 184
244/* 185/*
245 * Platform and hardware-independent physical memory interfaces 186 * Platform and hardware-independent physical memory interfaces
246 */ 187 */
247acpi_status 188acpi_status
248acpi_os_read_memory ( 189acpi_os_read_memory(acpi_physical_address address, u32 * value, u32 width);
249 acpi_physical_address address,
250 u32 *value,
251 u32 width);
252 190
253acpi_status 191acpi_status
254acpi_os_write_memory ( 192acpi_os_write_memory(acpi_physical_address address, u32 value, u32 width);
255 acpi_physical_address address,
256 u32 value,
257 u32 width);
258
259 193
260/* 194/*
261 * Platform and hardware-independent PCI configuration space access 195 * Platform and hardware-independent PCI configuration space access
@@ -263,111 +197,69 @@ acpi_os_write_memory (
263 * certain compilers complain. 197 * certain compilers complain.
264 */ 198 */
265acpi_status 199acpi_status
266acpi_os_read_pci_configuration ( 200acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id,
267 struct acpi_pci_id *pci_id, 201 u32 reg, void *value, u32 width);
268 u32 reg,
269 void *value,
270 u32 width);
271 202
272acpi_status 203acpi_status
273acpi_os_write_pci_configuration ( 204acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id,
274 struct acpi_pci_id *pci_id, 205 u32 reg, acpi_integer value, u32 width);
275 u32 reg,
276 acpi_integer value,
277 u32 width);
278 206
279/* 207/*
280 * Interim function needed for PCI IRQ routing 208 * Interim function needed for PCI IRQ routing
281 */ 209 */
282void 210void
283acpi_os_derive_pci_id( 211acpi_os_derive_pci_id(acpi_handle rhandle,
284 acpi_handle rhandle, 212 acpi_handle chandle, struct acpi_pci_id **pci_id);
285 acpi_handle chandle,
286 struct acpi_pci_id **pci_id);
287 213
288/* 214/*
289 * Miscellaneous 215 * Miscellaneous
290 */ 216 */
291u8 217u8 acpi_os_readable(void *pointer, acpi_size length);
292acpi_os_readable (
293 void *pointer,
294 acpi_size length);
295 218
296#ifdef ACPI_FUTURE_USAGE 219#ifdef ACPI_FUTURE_USAGE
297u8 220u8 acpi_os_writable(void *pointer, acpi_size length);
298acpi_os_writable (
299 void *pointer,
300 acpi_size length);
301#endif 221#endif
302 222
303u64 223u64 acpi_os_get_timer(void);
304acpi_os_get_timer (
305 void);
306 224
307acpi_status 225acpi_status acpi_os_signal(u32 function, void *info);
308acpi_os_signal (
309 u32 function,
310 void *info);
311 226
312/* 227/*
313 * Debug print routines 228 * Debug print routines
314 */ 229 */
315void ACPI_INTERNAL_VAR_XFACE 230void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...);
316acpi_os_printf (
317 const char *format,
318 ...);
319
320void
321acpi_os_vprintf (
322 const char *format,
323 va_list args);
324 231
325void 232void acpi_os_vprintf(const char *format, va_list args);
326acpi_os_redirect_output (
327 void *destination);
328 233
234void acpi_os_redirect_output(void *destination);
329 235
330#ifdef ACPI_FUTURE_USAGE 236#ifdef ACPI_FUTURE_USAGE
331/* 237/*
332 * Debug input 238 * Debug input
333 */ 239 */
334u32 240u32 acpi_os_get_line(char *buffer);
335acpi_os_get_line (
336 char *buffer);
337#endif 241#endif
338 242
339
340/* 243/*
341 * Directory manipulation 244 * Directory manipulation
342 */ 245 */
343void * 246void *acpi_os_open_directory(char *pathname,
344acpi_os_open_directory ( 247 char *wildcard_spec, char requested_file_type);
345 char *pathname,
346 char *wildcard_spec,
347 char requested_file_type);
348 248
349/* requeste_file_type values */ 249/* requeste_file_type values */
350 250
351#define REQUEST_FILE_ONLY 0 251#define REQUEST_FILE_ONLY 0
352#define REQUEST_DIR_ONLY 1 252#define REQUEST_DIR_ONLY 1
353 253
254char *acpi_os_get_next_filename(void *dir_handle);
354 255
355char * 256void acpi_os_close_directory(void *dir_handle);
356acpi_os_get_next_filename (
357 void *dir_handle);
358
359void
360acpi_os_close_directory (
361 void *dir_handle);
362 257
363/* 258/*
364 * Debug 259 * Debug
365 */ 260 */
366void 261void
367acpi_os_dbg_assert( 262acpi_os_dbg_assert(void *failed_assertion,
368 void *failed_assertion, 263 void *file_name, u32 line_number, char *message);
369 void *file_name,
370 u32 line_number,
371 char *message);
372 264
373#endif /* __ACPIOSXF_H__ */ 265#endif /* __ACPIOSXF_H__ */
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index f8f619f8e4f8..2a9dbc13b0f2 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -42,447 +42,283 @@
42 * POSSIBILITY OF SUCH DAMAGES. 42 * POSSIBILITY OF SUCH DAMAGES.
43 */ 43 */
44 44
45
46#ifndef __ACXFACE_H__ 45#ifndef __ACXFACE_H__
47#define __ACXFACE_H__ 46#define __ACXFACE_H__
48 47
49#include "actypes.h" 48#include "actypes.h"
50#include "actbl.h" 49#include "actbl.h"
51 50
52
53/* 51/*
54 * Global interfaces 52 * Global interfaces
55 */ 53 */
56acpi_status 54acpi_status acpi_initialize_subsystem(void);
57acpi_initialize_subsystem (
58 void);
59 55
60acpi_status 56acpi_status acpi_enable_subsystem(u32 flags);
61acpi_enable_subsystem (
62 u32 flags);
63 57
64acpi_status 58acpi_status acpi_initialize_objects(u32 flags);
65acpi_initialize_objects (
66 u32 flags);
67 59
68acpi_status 60acpi_status acpi_terminate(void);
69acpi_terminate (
70 void);
71 61
72#ifdef ACPI_FUTURE_USAGE 62#ifdef ACPI_FUTURE_USAGE
73acpi_status 63acpi_status acpi_subsystem_status(void);
74acpi_subsystem_status (
75 void);
76#endif 64#endif
77 65
78acpi_status 66acpi_status acpi_enable(void);
79acpi_enable (
80 void);
81 67
82acpi_status 68acpi_status acpi_disable(void);
83acpi_disable (
84 void);
85 69
86#ifdef ACPI_FUTURE_USAGE 70#ifdef ACPI_FUTURE_USAGE
87acpi_status 71acpi_status acpi_get_system_info(struct acpi_buffer *ret_buffer);
88acpi_get_system_info (
89 struct acpi_buffer *ret_buffer);
90#endif 72#endif
91 73
92const char * 74const char *acpi_format_exception(acpi_status exception);
93acpi_format_exception (
94 acpi_status exception);
95 75
96acpi_status 76acpi_status acpi_purge_cached_objects(void);
97acpi_purge_cached_objects (
98 void);
99 77
100#ifdef ACPI_FUTURE_USAGE 78#ifdef ACPI_FUTURE_USAGE
101acpi_status 79acpi_status
102acpi_install_initialization_handler ( 80acpi_install_initialization_handler(acpi_init_handler handler, u32 function);
103 acpi_init_handler handler,
104 u32 function);
105#endif 81#endif
106 82
107/* 83/*
108 * ACPI Memory managment 84 * ACPI Memory managment
109 */ 85 */
110void * 86void *acpi_allocate(u32 size);
111acpi_allocate (
112 u32 size);
113
114void *
115acpi_callocate (
116 u32 size);
117 87
118void 88void *acpi_callocate(u32 size);
119acpi_free (
120 void *address);
121 89
90void acpi_free(void *address);
122 91
123/* 92/*
124 * ACPI table manipulation interfaces 93 * ACPI table manipulation interfaces
125 */ 94 */
126acpi_status 95acpi_status
127acpi_find_root_pointer ( 96acpi_find_root_pointer(u32 flags, struct acpi_pointer *rsdp_address);
128 u32 flags,
129 struct acpi_pointer *rsdp_address);
130 97
131acpi_status 98acpi_status acpi_load_tables(void);
132acpi_load_tables (
133 void);
134 99
135#ifdef ACPI_FUTURE_USAGE 100#ifdef ACPI_FUTURE_USAGE
136acpi_status 101acpi_status acpi_load_table(struct acpi_table_header *table_ptr);
137acpi_load_table (
138 struct acpi_table_header *table_ptr);
139 102
140acpi_status 103acpi_status acpi_unload_table(acpi_table_type table_type);
141acpi_unload_table (
142 acpi_table_type table_type);
143 104
144acpi_status 105acpi_status
145acpi_get_table_header ( 106acpi_get_table_header(acpi_table_type table_type,
146 acpi_table_type table_type, 107 u32 instance, struct acpi_table_header *out_table_header);
147 u32 instance, 108#endif /* ACPI_FUTURE_USAGE */
148 struct acpi_table_header *out_table_header);
149#endif /* ACPI_FUTURE_USAGE */
150 109
151acpi_status 110acpi_status
152acpi_get_table ( 111acpi_get_table(acpi_table_type table_type,
153 acpi_table_type table_type, 112 u32 instance, struct acpi_buffer *ret_buffer);
154 u32 instance,
155 struct acpi_buffer *ret_buffer);
156 113
157acpi_status 114acpi_status
158acpi_get_firmware_table ( 115acpi_get_firmware_table(acpi_string signature,
159 acpi_string signature, 116 u32 instance,
160 u32 instance, 117 u32 flags, struct acpi_table_header **table_pointer);
161 u32 flags,
162 struct acpi_table_header **table_pointer);
163
164 118
165/* 119/*
166 * Namespace and name interfaces 120 * Namespace and name interfaces
167 */ 121 */
168acpi_status 122acpi_status
169acpi_walk_namespace ( 123acpi_walk_namespace(acpi_object_type type,
170 acpi_object_type type, 124 acpi_handle start_object,
171 acpi_handle start_object, 125 u32 max_depth,
172 u32 max_depth, 126 acpi_walk_callback user_function,
173 acpi_walk_callback user_function, 127 void *context, void **return_value);
174 void *context,
175 void **return_value);
176 128
177acpi_status 129acpi_status
178acpi_get_devices ( 130acpi_get_devices(char *HID,
179 char *HID, 131 acpi_walk_callback user_function,
180 acpi_walk_callback user_function, 132 void *context, void **return_value);
181 void *context,
182 void **return_value);
183 133
184acpi_status 134acpi_status
185acpi_get_name ( 135acpi_get_name(acpi_handle handle,
186 acpi_handle handle, 136 u32 name_type, struct acpi_buffer *ret_path_ptr);
187 u32 name_type,
188 struct acpi_buffer *ret_path_ptr);
189 137
190acpi_status 138acpi_status
191acpi_get_handle ( 139acpi_get_handle(acpi_handle parent,
192 acpi_handle parent, 140 acpi_string pathname, acpi_handle * ret_handle);
193 acpi_string pathname,
194 acpi_handle *ret_handle);
195 141
196acpi_status 142acpi_status
197acpi_attach_data ( 143acpi_attach_data(acpi_handle obj_handle,
198 acpi_handle obj_handle, 144 acpi_object_handler handler, void *data);
199 acpi_object_handler handler,
200 void *data);
201 145
202acpi_status 146acpi_status
203acpi_detach_data ( 147acpi_detach_data(acpi_handle obj_handle, acpi_object_handler handler);
204 acpi_handle obj_handle,
205 acpi_object_handler handler);
206 148
207acpi_status 149acpi_status
208acpi_get_data ( 150acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data);
209 acpi_handle obj_handle,
210 acpi_object_handler handler,
211 void **data);
212
213 151
214/* 152/*
215 * Object manipulation and enumeration 153 * Object manipulation and enumeration
216 */ 154 */
217acpi_status 155acpi_status
218acpi_evaluate_object ( 156acpi_evaluate_object(acpi_handle object,
219 acpi_handle object, 157 acpi_string pathname,
220 acpi_string pathname, 158 struct acpi_object_list *parameter_objects,
221 struct acpi_object_list *parameter_objects, 159 struct acpi_buffer *return_object_buffer);
222 struct acpi_buffer *return_object_buffer);
223 160
224#ifdef ACPI_FUTURE_USAGE 161#ifdef ACPI_FUTURE_USAGE
225acpi_status 162acpi_status
226acpi_evaluate_object_typed ( 163acpi_evaluate_object_typed(acpi_handle object,
227 acpi_handle object, 164 acpi_string pathname,
228 acpi_string pathname, 165 struct acpi_object_list *external_params,
229 struct acpi_object_list *external_params, 166 struct acpi_buffer *return_buffer,
230 struct acpi_buffer *return_buffer, 167 acpi_object_type return_type);
231 acpi_object_type return_type);
232#endif 168#endif
233 169
234acpi_status 170acpi_status
235acpi_get_object_info ( 171acpi_get_object_info(acpi_handle handle, struct acpi_buffer *return_buffer);
236 acpi_handle handle,
237 struct acpi_buffer *return_buffer);
238 172
239acpi_status 173acpi_status
240acpi_get_next_object ( 174acpi_get_next_object(acpi_object_type type,
241 acpi_object_type type, 175 acpi_handle parent,
242 acpi_handle parent, 176 acpi_handle child, acpi_handle * out_handle);
243 acpi_handle child,
244 acpi_handle *out_handle);
245 177
246acpi_status 178acpi_status acpi_get_type(acpi_handle object, acpi_object_type * out_type);
247acpi_get_type (
248 acpi_handle object,
249 acpi_object_type *out_type);
250
251acpi_status
252acpi_get_parent (
253 acpi_handle object,
254 acpi_handle *out_handle);
255 179
180acpi_status acpi_get_parent(acpi_handle object, acpi_handle * out_handle);
256 181
257/* 182/*
258 * Event handler interfaces 183 * Event handler interfaces
259 */ 184 */
260acpi_status 185acpi_status
261acpi_install_fixed_event_handler ( 186acpi_install_fixed_event_handler(u32 acpi_event,
262 u32 acpi_event, 187 acpi_event_handler handler, void *context);
263 acpi_event_handler handler,
264 void *context);
265 188
266acpi_status 189acpi_status
267acpi_remove_fixed_event_handler ( 190acpi_remove_fixed_event_handler(u32 acpi_event, acpi_event_handler handler);
268 u32 acpi_event,
269 acpi_event_handler handler);
270 191
271acpi_status 192acpi_status
272acpi_install_notify_handler ( 193acpi_install_notify_handler(acpi_handle device,
273 acpi_handle device, 194 u32 handler_type,
274 u32 handler_type, 195 acpi_notify_handler handler, void *context);
275 acpi_notify_handler handler,
276 void *context);
277 196
278acpi_status 197acpi_status
279acpi_remove_notify_handler ( 198acpi_remove_notify_handler(acpi_handle device,
280 acpi_handle device, 199 u32 handler_type, acpi_notify_handler handler);
281 u32 handler_type,
282 acpi_notify_handler handler);
283 200
284acpi_status 201acpi_status
285acpi_install_address_space_handler ( 202acpi_install_address_space_handler(acpi_handle device,
286 acpi_handle device, 203 acpi_adr_space_type space_id,
287 acpi_adr_space_type space_id, 204 acpi_adr_space_handler handler,
288 acpi_adr_space_handler handler, 205 acpi_adr_space_setup setup, void *context);
289 acpi_adr_space_setup setup,
290 void *context);
291 206
292acpi_status 207acpi_status
293acpi_remove_address_space_handler ( 208acpi_remove_address_space_handler(acpi_handle device,
294 acpi_handle device, 209 acpi_adr_space_type space_id,
295 acpi_adr_space_type space_id, 210 acpi_adr_space_handler handler);
296 acpi_adr_space_handler handler);
297 211
298acpi_status 212acpi_status
299acpi_install_gpe_handler ( 213acpi_install_gpe_handler(acpi_handle gpe_device,
300 acpi_handle gpe_device, 214 u32 gpe_number,
301 u32 gpe_number, 215 u32 type, acpi_event_handler address, void *context);
302 u32 type,
303 acpi_event_handler address,
304 void *context);
305 216
306#ifdef ACPI_FUTURE_USAGE 217#ifdef ACPI_FUTURE_USAGE
307acpi_status 218acpi_status acpi_install_exception_handler(acpi_exception_handler handler);
308acpi_install_exception_handler (
309 acpi_exception_handler handler);
310#endif 219#endif
311 220
312
313/* 221/*
314 * Event interfaces 222 * Event interfaces
315 */ 223 */
316acpi_status 224acpi_status acpi_acquire_global_lock(u16 timeout, u32 * handle);
317acpi_acquire_global_lock (
318 u16 timeout,
319 u32 *handle);
320 225
321acpi_status 226acpi_status acpi_release_global_lock(u32 handle);
322acpi_release_global_lock (
323 u32 handle);
324 227
325acpi_status 228acpi_status
326acpi_remove_gpe_handler ( 229acpi_remove_gpe_handler(acpi_handle gpe_device,
327 acpi_handle gpe_device, 230 u32 gpe_number, acpi_event_handler address);
328 u32 gpe_number,
329 acpi_event_handler address);
330 231
331acpi_status 232acpi_status acpi_enable_event(u32 event, u32 flags);
332acpi_enable_event (
333 u32 event,
334 u32 flags);
335 233
336acpi_status 234acpi_status acpi_disable_event(u32 event, u32 flags);
337acpi_disable_event (
338 u32 event,
339 u32 flags);
340 235
341acpi_status 236acpi_status acpi_clear_event(u32 event);
342acpi_clear_event (
343 u32 event);
344 237
345#ifdef ACPI_FUTURE_USAGE 238#ifdef ACPI_FUTURE_USAGE
346acpi_status 239acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status);
347acpi_get_event_status ( 240#endif /* ACPI_FUTURE_USAGE */
348 u32 event,
349 acpi_event_status *event_status);
350#endif /* ACPI_FUTURE_USAGE */
351 241
352acpi_status 242acpi_status acpi_set_gpe_type(acpi_handle gpe_device, u32 gpe_number, u8 type);
353acpi_set_gpe_type (
354 acpi_handle gpe_device,
355 u32 gpe_number,
356 u8 type);
357 243
358acpi_status 244acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags);
359acpi_enable_gpe (
360 acpi_handle gpe_device,
361 u32 gpe_number,
362 u32 flags);
363 245
364acpi_status 246acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags);
365acpi_disable_gpe (
366 acpi_handle gpe_device,
367 u32 gpe_number,
368 u32 flags);
369 247
370acpi_status 248acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags);
371acpi_clear_gpe (
372 acpi_handle gpe_device,
373 u32 gpe_number,
374 u32 flags);
375 249
376#ifdef ACPI_FUTURE_USAGE 250#ifdef ACPI_FUTURE_USAGE
377acpi_status 251acpi_status
378acpi_get_gpe_status ( 252acpi_get_gpe_status(acpi_handle gpe_device,
379 acpi_handle gpe_device, 253 u32 gpe_number,
380 u32 gpe_number, 254 u32 flags, acpi_event_status * event_status);
381 u32 flags, 255#endif /* ACPI_FUTURE_USAGE */
382 acpi_event_status *event_status);
383#endif /* ACPI_FUTURE_USAGE */
384 256
385acpi_status 257acpi_status
386acpi_install_gpe_block ( 258acpi_install_gpe_block(acpi_handle gpe_device,
387 acpi_handle gpe_device, 259 struct acpi_generic_address *gpe_block_address,
388 struct acpi_generic_address *gpe_block_address, 260 u32 register_count, u32 interrupt_number);
389 u32 register_count,
390 u32 interrupt_level);
391
392acpi_status
393acpi_remove_gpe_block (
394 acpi_handle gpe_device);
395 261
262acpi_status acpi_remove_gpe_block(acpi_handle gpe_device);
396 263
397/* 264/*
398 * Resource interfaces 265 * Resource interfaces
399 */ 266 */
400typedef 267typedef
401acpi_status (*ACPI_WALK_RESOURCE_CALLBACK) ( 268acpi_status(*ACPI_WALK_RESOURCE_CALLBACK) (struct acpi_resource * resource,
402 struct acpi_resource *resource, 269 void *context);
403 void *context);
404
405 270
406acpi_status 271acpi_status
407acpi_get_current_resources( 272acpi_get_current_resources(acpi_handle device_handle,
408 acpi_handle device_handle, 273 struct acpi_buffer *ret_buffer);
409 struct acpi_buffer *ret_buffer);
410 274
411#ifdef ACPI_FUTURE_USAGE 275#ifdef ACPI_FUTURE_USAGE
412acpi_status 276acpi_status
413acpi_get_possible_resources( 277acpi_get_possible_resources(acpi_handle device_handle,
414 acpi_handle device_handle, 278 struct acpi_buffer *ret_buffer);
415 struct acpi_buffer *ret_buffer);
416#endif 279#endif
417 280
418acpi_status 281acpi_status
419acpi_walk_resources ( 282acpi_walk_resources(acpi_handle device_handle,
420 acpi_handle device_handle, 283 char *path,
421 char *path, 284 ACPI_WALK_RESOURCE_CALLBACK user_function, void *context);
422 ACPI_WALK_RESOURCE_CALLBACK user_function,
423 void *context);
424 285
425acpi_status 286acpi_status
426acpi_set_current_resources ( 287acpi_set_current_resources(acpi_handle device_handle,
427 acpi_handle device_handle, 288 struct acpi_buffer *in_buffer);
428 struct acpi_buffer *in_buffer);
429 289
430acpi_status 290acpi_status
431acpi_get_irq_routing_table ( 291acpi_get_irq_routing_table(acpi_handle bus_device_handle,
432 acpi_handle bus_device_handle, 292 struct acpi_buffer *ret_buffer);
433 struct acpi_buffer *ret_buffer);
434 293
435acpi_status 294acpi_status
436acpi_resource_to_address64 ( 295acpi_resource_to_address64(struct acpi_resource *resource,
437 struct acpi_resource *resource, 296 struct acpi_resource_address64 *out);
438 struct acpi_resource_address64 *out);
439 297
440/* 298/*
441 * Hardware (ACPI device) interfaces 299 * Hardware (ACPI device) interfaces
442 */ 300 */
443acpi_status 301acpi_status acpi_get_register(u32 register_id, u32 * return_value, u32 flags);
444acpi_get_register (
445 u32 register_id,
446 u32 *return_value,
447 u32 flags);
448 302
449acpi_status 303acpi_status acpi_set_register(u32 register_id, u32 value, u32 flags);
450acpi_set_register (
451 u32 register_id,
452 u32 value,
453 u32 flags);
454 304
455acpi_status 305acpi_status
456acpi_set_firmware_waking_vector ( 306acpi_set_firmware_waking_vector(acpi_physical_address physical_address);
457 acpi_physical_address physical_address);
458 307
459#ifdef ACPI_FUTURE_USAGE 308#ifdef ACPI_FUTURE_USAGE
460acpi_status 309acpi_status
461acpi_get_firmware_waking_vector ( 310acpi_get_firmware_waking_vector(acpi_physical_address * physical_address);
462 acpi_physical_address *physical_address);
463#endif 311#endif
464 312
465acpi_status 313acpi_status
466acpi_get_sleep_type_data ( 314acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b);
467 u8 sleep_state,
468 u8 *slp_typ_a,
469 u8 *slp_typ_b);
470 315
471acpi_status 316acpi_status acpi_enter_sleep_state_prep(u8 sleep_state);
472acpi_enter_sleep_state_prep (
473 u8 sleep_state);
474 317
475acpi_status asmlinkage 318acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state);
476acpi_enter_sleep_state (
477 u8 sleep_state);
478 319
479acpi_status asmlinkage 320acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void);
480acpi_enter_sleep_state_s4bios (
481 void);
482
483acpi_status
484acpi_leave_sleep_state (
485 u8 sleep_state);
486 321
322acpi_status acpi_leave_sleep_state(u8 sleep_state);
487 323
488#endif /* __ACXFACE_H__ */ 324#endif /* __ACXFACE_H__ */
diff --git a/include/acpi/acresrc.h b/include/acpi/acresrc.h
index ed679264c12c..38e798b05d08 100644
--- a/include/acpi/acresrc.h
+++ b/include/acpi/acresrc.h
@@ -44,303 +44,216 @@
44#ifndef __ACRESRC_H__ 44#ifndef __ACRESRC_H__
45#define __ACRESRC_H__ 45#define __ACRESRC_H__
46 46
47
48/* 47/*
49 * Function prototypes called from Acpi* APIs 48 * Function prototypes called from Acpi* APIs
50 */ 49 */
51acpi_status 50acpi_status
52acpi_rs_get_prt_method_data ( 51acpi_rs_get_prt_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer);
53 acpi_handle handle,
54 struct acpi_buffer *ret_buffer);
55
56 52
57acpi_status 53acpi_status
58acpi_rs_get_crs_method_data ( 54acpi_rs_get_crs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer);
59 acpi_handle handle,
60 struct acpi_buffer *ret_buffer);
61 55
62#ifdef ACPI_FUTURE_USAGE 56#ifdef ACPI_FUTURE_USAGE
63acpi_status 57acpi_status
64acpi_rs_get_prs_method_data ( 58acpi_rs_get_prs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer);
65 acpi_handle handle, 59#endif /* ACPI_FUTURE_USAGE */
66 struct acpi_buffer *ret_buffer);
67#endif /* ACPI_FUTURE_USAGE */
68 60
69acpi_status 61acpi_status
70acpi_rs_get_method_data ( 62acpi_rs_get_method_data(acpi_handle handle,
71 acpi_handle handle, 63 char *path, struct acpi_buffer *ret_buffer);
72 char *path,
73 struct acpi_buffer *ret_buffer);
74 64
75acpi_status 65acpi_status
76acpi_rs_set_srs_method_data ( 66acpi_rs_set_srs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer);
77 acpi_handle handle,
78 struct acpi_buffer *ret_buffer);
79 67
80acpi_status 68acpi_status
81acpi_rs_create_resource_list ( 69acpi_rs_create_resource_list(union acpi_operand_object *byte_stream_buffer,
82 union acpi_operand_object *byte_stream_buffer, 70 struct acpi_buffer *output_buffer);
83 struct acpi_buffer *output_buffer);
84 71
85acpi_status 72acpi_status
86acpi_rs_create_byte_stream ( 73acpi_rs_create_byte_stream(struct acpi_resource *linked_list_buffer,
87 struct acpi_resource *linked_list_buffer, 74 struct acpi_buffer *output_buffer);
88 struct acpi_buffer *output_buffer);
89 75
90acpi_status 76acpi_status
91acpi_rs_create_pci_routing_table ( 77acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
92 union acpi_operand_object *package_object, 78 struct acpi_buffer *output_buffer);
93 struct acpi_buffer *output_buffer);
94
95 79
96/* 80/*
97 * rsdump 81 * rsdump
98 */ 82 */
99#ifdef ACPI_FUTURE_USAGE 83#ifdef ACPI_FUTURE_USAGE
100void 84void acpi_rs_dump_resource_list(struct acpi_resource *resource);
101acpi_rs_dump_resource_list (
102 struct acpi_resource *resource);
103
104void
105acpi_rs_dump_irq_list (
106 u8 *route_table);
107#endif /* ACPI_FUTURE_USAGE */
108 85
86void acpi_rs_dump_irq_list(u8 * route_table);
87#endif /* ACPI_FUTURE_USAGE */
109 88
110/* 89/*
111 * rscalc 90 * rscalc
112 */ 91 */
113acpi_status 92acpi_status
114acpi_rs_get_byte_stream_start ( 93acpi_rs_get_byte_stream_start(u8 * byte_stream_buffer,
115 u8 *byte_stream_buffer, 94 u8 ** byte_stream_start, u32 * size);
116 u8 **byte_stream_start,
117 u32 *size);
118 95
119acpi_status 96acpi_status
120acpi_rs_get_list_length ( 97acpi_rs_get_list_length(u8 * byte_stream_buffer,
121 u8 *byte_stream_buffer, 98 u32 byte_stream_buffer_length, acpi_size * size_needed);
122 u32 byte_stream_buffer_length,
123 acpi_size *size_needed);
124 99
125acpi_status 100acpi_status
126acpi_rs_get_byte_stream_length ( 101acpi_rs_get_byte_stream_length(struct acpi_resource *linked_list_buffer,
127 struct acpi_resource *linked_list_buffer, 102 acpi_size * size_needed);
128 acpi_size *size_needed);
129 103
130acpi_status 104acpi_status
131acpi_rs_get_pci_routing_table_length ( 105acpi_rs_get_pci_routing_table_length(union acpi_operand_object *package_object,
132 union acpi_operand_object *package_object, 106 acpi_size * buffer_size_needed);
133 acpi_size *buffer_size_needed);
134 107
135acpi_status 108acpi_status
136acpi_rs_byte_stream_to_list ( 109acpi_rs_byte_stream_to_list(u8 * byte_stream_buffer,
137 u8 *byte_stream_buffer, 110 u32 byte_stream_buffer_length, u8 * output_buffer);
138 u32 byte_stream_buffer_length,
139 u8 *output_buffer);
140 111
141acpi_status 112acpi_status
142acpi_rs_list_to_byte_stream ( 113acpi_rs_list_to_byte_stream(struct acpi_resource *linked_list,
143 struct acpi_resource *linked_list, 114 acpi_size byte_stream_size_needed,
144 acpi_size byte_stream_size_needed, 115 u8 * output_buffer);
145 u8 *output_buffer);
146 116
147acpi_status 117acpi_status
148acpi_rs_io_resource ( 118acpi_rs_io_resource(u8 * byte_stream_buffer,
149 u8 *byte_stream_buffer, 119 acpi_size * bytes_consumed,
150 acpi_size *bytes_consumed, 120 u8 ** output_buffer, acpi_size * structure_size);
151 u8 **output_buffer,
152 acpi_size *structure_size);
153 121
154acpi_status 122acpi_status
155acpi_rs_fixed_io_resource ( 123acpi_rs_fixed_io_resource(u8 * byte_stream_buffer,
156 u8 *byte_stream_buffer, 124 acpi_size * bytes_consumed,
157 acpi_size *bytes_consumed, 125 u8 ** output_buffer, acpi_size * structure_size);
158 u8 **output_buffer,
159 acpi_size *structure_size);
160 126
161acpi_status 127acpi_status
162acpi_rs_io_stream ( 128acpi_rs_io_stream(struct acpi_resource *linked_list,
163 struct acpi_resource *linked_list, 129 u8 ** output_buffer, acpi_size * bytes_consumed);
164 u8 **output_buffer,
165 acpi_size *bytes_consumed);
166 130
167acpi_status 131acpi_status
168acpi_rs_fixed_io_stream ( 132acpi_rs_fixed_io_stream(struct acpi_resource *linked_list,
169 struct acpi_resource *linked_list, 133 u8 ** output_buffer, acpi_size * bytes_consumed);
170 u8 **output_buffer,
171 acpi_size *bytes_consumed);
172 134
173acpi_status 135acpi_status
174acpi_rs_irq_resource ( 136acpi_rs_irq_resource(u8 * byte_stream_buffer,
175 u8 *byte_stream_buffer, 137 acpi_size * bytes_consumed,
176 acpi_size *bytes_consumed, 138 u8 ** output_buffer, acpi_size * structure_size);
177 u8 **output_buffer,
178 acpi_size *structure_size);
179 139
180acpi_status 140acpi_status
181acpi_rs_irq_stream ( 141acpi_rs_irq_stream(struct acpi_resource *linked_list,
182 struct acpi_resource *linked_list, 142 u8 ** output_buffer, acpi_size * bytes_consumed);
183 u8 **output_buffer,
184 acpi_size *bytes_consumed);
185 143
186acpi_status 144acpi_status
187acpi_rs_dma_resource ( 145acpi_rs_dma_resource(u8 * byte_stream_buffer,
188 u8 *byte_stream_buffer, 146 acpi_size * bytes_consumed,
189 acpi_size *bytes_consumed, 147 u8 ** output_buffer, acpi_size * structure_size);
190 u8 **output_buffer,
191 acpi_size *structure_size);
192 148
193acpi_status 149acpi_status
194acpi_rs_dma_stream ( 150acpi_rs_dma_stream(struct acpi_resource *linked_list,
195 struct acpi_resource *linked_list, 151 u8 ** output_buffer, acpi_size * bytes_consumed);
196 u8 **output_buffer,
197 acpi_size *bytes_consumed);
198 152
199acpi_status 153acpi_status
200acpi_rs_address16_resource ( 154acpi_rs_address16_resource(u8 * byte_stream_buffer,
201 u8 *byte_stream_buffer, 155 acpi_size * bytes_consumed,
202 acpi_size *bytes_consumed, 156 u8 ** output_buffer, acpi_size * structure_size);
203 u8 **output_buffer,
204 acpi_size *structure_size);
205 157
206acpi_status 158acpi_status
207acpi_rs_address16_stream ( 159acpi_rs_address16_stream(struct acpi_resource *linked_list,
208 struct acpi_resource *linked_list, 160 u8 ** output_buffer, acpi_size * bytes_consumed);
209 u8 **output_buffer,
210 acpi_size *bytes_consumed);
211 161
212acpi_status 162acpi_status
213acpi_rs_address32_resource ( 163acpi_rs_address32_resource(u8 * byte_stream_buffer,
214 u8 *byte_stream_buffer, 164 acpi_size * bytes_consumed,
215 acpi_size *bytes_consumed, 165 u8 ** output_buffer, acpi_size * structure_size);
216 u8 **output_buffer,
217 acpi_size *structure_size);
218 166
219acpi_status 167acpi_status
220acpi_rs_address32_stream ( 168acpi_rs_address32_stream(struct acpi_resource *linked_list,
221 struct acpi_resource *linked_list, 169 u8 ** output_buffer, acpi_size * bytes_consumed);
222 u8 **output_buffer,
223 acpi_size *bytes_consumed);
224 170
225acpi_status 171acpi_status
226acpi_rs_address64_resource ( 172acpi_rs_address64_resource(u8 * byte_stream_buffer,
227 u8 *byte_stream_buffer, 173 acpi_size * bytes_consumed,
228 acpi_size *bytes_consumed, 174 u8 ** output_buffer, acpi_size * structure_size);
229 u8 **output_buffer,
230 acpi_size *structure_size);
231 175
232acpi_status 176acpi_status
233acpi_rs_address64_stream ( 177acpi_rs_address64_stream(struct acpi_resource *linked_list,
234 struct acpi_resource *linked_list, 178 u8 ** output_buffer, acpi_size * bytes_consumed);
235 u8 **output_buffer,
236 acpi_size *bytes_consumed);
237 179
238acpi_status 180acpi_status
239acpi_rs_start_depend_fns_resource ( 181acpi_rs_start_depend_fns_resource(u8 * byte_stream_buffer,
240 u8 *byte_stream_buffer, 182 acpi_size * bytes_consumed,
241 acpi_size *bytes_consumed, 183 u8 ** output_buffer,
242 u8 **output_buffer, 184 acpi_size * structure_size);
243 acpi_size *structure_size);
244 185
245acpi_status 186acpi_status
246acpi_rs_end_depend_fns_resource ( 187acpi_rs_end_depend_fns_resource(u8 * byte_stream_buffer,
247 u8 *byte_stream_buffer, 188 acpi_size * bytes_consumed,
248 acpi_size *bytes_consumed, 189 u8 ** output_buffer,
249 u8 **output_buffer, 190 acpi_size * structure_size);
250 acpi_size *structure_size);
251 191
252acpi_status 192acpi_status
253acpi_rs_start_depend_fns_stream ( 193acpi_rs_start_depend_fns_stream(struct acpi_resource *linked_list,
254 struct acpi_resource *linked_list, 194 u8 ** output_buffer,
255 u8 **output_buffer, 195 acpi_size * bytes_consumed);
256 acpi_size *bytes_consumed);
257 196
258acpi_status 197acpi_status
259acpi_rs_end_depend_fns_stream ( 198acpi_rs_end_depend_fns_stream(struct acpi_resource *linked_list,
260 struct acpi_resource *linked_list, 199 u8 ** output_buffer, acpi_size * bytes_consumed);
261 u8 **output_buffer,
262 acpi_size *bytes_consumed);
263 200
264acpi_status 201acpi_status
265acpi_rs_memory24_resource ( 202acpi_rs_memory24_resource(u8 * byte_stream_buffer,
266 u8 *byte_stream_buffer, 203 acpi_size * bytes_consumed,
267 acpi_size *bytes_consumed, 204 u8 ** output_buffer, acpi_size * structure_size);
268 u8 **output_buffer,
269 acpi_size *structure_size);
270 205
271acpi_status 206acpi_status
272acpi_rs_memory24_stream ( 207acpi_rs_memory24_stream(struct acpi_resource *linked_list,
273 struct acpi_resource *linked_list, 208 u8 ** output_buffer, acpi_size * bytes_consumed);
274 u8 **output_buffer,
275 acpi_size *bytes_consumed);
276 209
277acpi_status 210acpi_status
278acpi_rs_memory32_range_resource ( 211acpi_rs_memory32_range_resource(u8 * byte_stream_buffer,
279 u8 *byte_stream_buffer, 212 acpi_size * bytes_consumed,
280 acpi_size *bytes_consumed, 213 u8 ** output_buffer,
281 u8 **output_buffer, 214 acpi_size * structure_size);
282 acpi_size *structure_size);
283 215
284acpi_status 216acpi_status
285acpi_rs_fixed_memory32_resource ( 217acpi_rs_fixed_memory32_resource(u8 * byte_stream_buffer,
286 u8 *byte_stream_buffer, 218 acpi_size * bytes_consumed,
287 acpi_size *bytes_consumed, 219 u8 ** output_buffer,
288 u8 **output_buffer, 220 acpi_size * structure_size);
289 acpi_size *structure_size);
290 221
291acpi_status 222acpi_status
292acpi_rs_memory32_range_stream ( 223acpi_rs_memory32_range_stream(struct acpi_resource *linked_list,
293 struct acpi_resource *linked_list, 224 u8 ** output_buffer, acpi_size * bytes_consumed);
294 u8 **output_buffer,
295 acpi_size *bytes_consumed);
296 225
297acpi_status 226acpi_status
298acpi_rs_fixed_memory32_stream ( 227acpi_rs_fixed_memory32_stream(struct acpi_resource *linked_list,
299 struct acpi_resource *linked_list, 228 u8 ** output_buffer, acpi_size * bytes_consumed);
300 u8 **output_buffer,
301 acpi_size *bytes_consumed);
302 229
303acpi_status 230acpi_status
304acpi_rs_extended_irq_resource ( 231acpi_rs_extended_irq_resource(u8 * byte_stream_buffer,
305 u8 *byte_stream_buffer, 232 acpi_size * bytes_consumed,
306 acpi_size *bytes_consumed, 233 u8 ** output_buffer, acpi_size * structure_size);
307 u8 **output_buffer,
308 acpi_size *structure_size);
309 234
310acpi_status 235acpi_status
311acpi_rs_extended_irq_stream ( 236acpi_rs_extended_irq_stream(struct acpi_resource *linked_list,
312 struct acpi_resource *linked_list, 237 u8 ** output_buffer, acpi_size * bytes_consumed);
313 u8 **output_buffer,
314 acpi_size *bytes_consumed);
315 238
316acpi_status 239acpi_status
317acpi_rs_end_tag_resource ( 240acpi_rs_end_tag_resource(u8 * byte_stream_buffer,
318 u8 *byte_stream_buffer, 241 acpi_size * bytes_consumed,
319 acpi_size *bytes_consumed, 242 u8 ** output_buffer, acpi_size * structure_size);
320 u8 **output_buffer,
321 acpi_size *structure_size);
322 243
323acpi_status 244acpi_status
324acpi_rs_end_tag_stream ( 245acpi_rs_end_tag_stream(struct acpi_resource *linked_list,
325 struct acpi_resource *linked_list, 246 u8 ** output_buffer, acpi_size * bytes_consumed);
326 u8 **output_buffer,
327 acpi_size *bytes_consumed);
328 247
329acpi_status 248acpi_status
330acpi_rs_vendor_resource ( 249acpi_rs_vendor_resource(u8 * byte_stream_buffer,
331 u8 *byte_stream_buffer, 250 acpi_size * bytes_consumed,
332 acpi_size *bytes_consumed, 251 u8 ** output_buffer, acpi_size * structure_size);
333 u8 **output_buffer,
334 acpi_size *structure_size);
335 252
336acpi_status 253acpi_status
337acpi_rs_vendor_stream ( 254acpi_rs_vendor_stream(struct acpi_resource *linked_list,
338 struct acpi_resource *linked_list, 255 u8 ** output_buffer, acpi_size * bytes_consumed);
339 u8 **output_buffer,
340 acpi_size *bytes_consumed);
341 256
342u8 257u8 acpi_rs_get_resource_type(u8 resource_start_byte);
343acpi_rs_get_resource_type (
344 u8 resource_start_byte);
345 258
346#endif /* __ACRESRC_H__ */ 259#endif /* __ACRESRC_H__ */
diff --git a/include/acpi/acstruct.h b/include/acpi/acstruct.h
index e6b9e36a2eda..99d235339801 100644
--- a/include/acpi/acstruct.h
+++ b/include/acpi/acstruct.h
@@ -44,14 +44,12 @@
44#ifndef __ACSTRUCT_H__ 44#ifndef __ACSTRUCT_H__
45#define __ACSTRUCT_H__ 45#define __ACSTRUCT_H__
46 46
47
48/***************************************************************************** 47/*****************************************************************************
49 * 48 *
50 * Tree walking typedefs and structs 49 * Tree walking typedefs and structs
51 * 50 *
52 ****************************************************************************/ 51 ****************************************************************************/
53 52
54
55/* 53/*
56 * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through 54 * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through
57 * the tree (for whatever reason), and for control method execution. 55 * the tree (for whatever reason), and for control method execution.
@@ -65,152 +63,142 @@
65#define ACPI_WALK_CONST_REQUIRED 3 63#define ACPI_WALK_CONST_REQUIRED 3
66#define ACPI_WALK_CONST_OPTIONAL 4 64#define ACPI_WALK_CONST_OPTIONAL 4
67 65
68struct acpi_walk_state 66struct acpi_walk_state {
69{ 67 u8 data_type; /* To differentiate various internal objs MUST BE FIRST! */
70 u8 data_type; /* To differentiate various internal objs MUST BE FIRST!*/\ 68 u8 walk_type;
71 u8 walk_type; 69 acpi_owner_id owner_id; /* Owner of objects created during the walk */
72 acpi_owner_id owner_id; /* Owner of objects created during the walk */ 70 u8 last_predicate; /* Result of last predicate */
73 u8 last_predicate; /* Result of last predicate */ 71 u8 current_result; /* */
74 u8 reserved; /* For alignment */ 72 u8 next_op_info; /* Info about next_op */
75 u8 current_result; /* */ 73 u8 num_operands; /* Stack pointer for Operands[] array */
76 u8 next_op_info; /* Info about next_op */ 74 u8 return_used;
77 u8 num_operands; /* Stack pointer for Operands[] array */ 75 u16 opcode; /* Current AML opcode */
78 u8 return_used; 76 u8 scope_depth;
79 u16 opcode; /* Current AML opcode */ 77 u8 pass_number; /* Parse pass during table load */
80 u8 scope_depth; 78 u32 arg_count; /* push for fixed or var args */
81 u8 reserved1; 79 u32 aml_offset;
82 u32 arg_count; /* push for fixed or var args */ 80 u32 arg_types;
83 u32 aml_offset; 81 u32 method_breakpoint; /* For single stepping */
84 u32 arg_types; 82 u32 user_breakpoint; /* User AML breakpoint */
85 u32 method_breakpoint; /* For single stepping */ 83 u32 parse_flags;
86 u32 user_breakpoint; /* User AML breakpoint */ 84 u32 prev_arg_types;
87 u32 parse_flags; 85
88 u32 prev_arg_types; 86 u8 *aml_last_while;
89 87 struct acpi_namespace_node arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */
90 u8 *aml_last_while; 88 union acpi_operand_object **caller_return_desc;
91 struct acpi_namespace_node arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */ 89 union acpi_generic_state *control_state; /* List of control states (nested IFs) */
92 union acpi_operand_object **caller_return_desc; 90 struct acpi_namespace_node *deferred_node; /* Used when executing deferred opcodes */
93 union acpi_generic_state *control_state; /* List of control states (nested IFs) */ 91 struct acpi_gpe_event_info *gpe_event_info; /* Info for GPE (_Lxx/_Exx methods only */
94 struct acpi_namespace_node *deferred_node; /* Used when executing deferred opcodes */ 92 union acpi_operand_object *implicit_return_obj;
95 struct acpi_gpe_event_info *gpe_event_info; /* Info for GPE (_Lxx/_Exx methods only */ 93 struct acpi_namespace_node local_variables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
96 union acpi_operand_object *implicit_return_obj; 94 struct acpi_namespace_node *method_call_node; /* Called method Node */
97 struct acpi_namespace_node local_variables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */ 95 union acpi_parse_object *method_call_op; /* method_call Op if running a method */
98 struct acpi_namespace_node *method_call_node; /* Called method Node*/ 96 union acpi_operand_object *method_desc; /* Method descriptor if running a method */
99 union acpi_parse_object *method_call_op; /* method_call Op if running a method */ 97 struct acpi_namespace_node *method_node; /* Method node if running a method. */
100 union acpi_operand_object *method_desc; /* Method descriptor if running a method */ 98 union acpi_parse_object *op; /* Current parser op */
101 struct acpi_namespace_node *method_node; /* Method node if running a method. */ 99 union acpi_operand_object *operands[ACPI_OBJ_NUM_OPERANDS + 1]; /* Operands passed to the interpreter (+1 for NULL terminator) */
102 union acpi_parse_object *op; /* Current parser op */ 100 const struct acpi_opcode_info *op_info; /* Info on current opcode */
103 union acpi_operand_object *operands[ACPI_OBJ_NUM_OPERANDS+1]; /* Operands passed to the interpreter (+1 for NULL terminator) */ 101 union acpi_parse_object *origin; /* Start of walk [Obsolete] */
104 const struct acpi_opcode_info *op_info; /* Info on current opcode */ 102 union acpi_operand_object **params;
105 union acpi_parse_object *origin; /* Start of walk [Obsolete] */ 103 struct acpi_parse_state parser_state; /* Current state of parser */
106 union acpi_operand_object **params; 104 union acpi_operand_object *result_obj;
107 struct acpi_parse_state parser_state; /* Current state of parser */ 105 union acpi_generic_state *results; /* Stack of accumulated results */
108 union acpi_operand_object *result_obj; 106 union acpi_operand_object *return_desc; /* Return object, if any */
109 union acpi_generic_state *results; /* Stack of accumulated results */ 107 union acpi_generic_state *scope_info; /* Stack of nested scopes */
110 union acpi_operand_object *return_desc; /* Return object, if any */ 108
111 union acpi_generic_state *scope_info; /* Stack of nested scopes */ 109 union acpi_parse_object *prev_op; /* Last op that was processed */
112 110 union acpi_parse_object *next_op; /* next op to be processed */
113 union acpi_parse_object *prev_op; /* Last op that was processed */ 111 acpi_parse_downwards descending_callback;
114 union acpi_parse_object *next_op; /* next op to be processed */ 112 acpi_parse_upwards ascending_callback;
115 acpi_parse_downwards descending_callback; 113 struct acpi_thread_state *thread;
116 acpi_parse_upwards ascending_callback; 114 struct acpi_walk_state *next; /* Next walk_state in list */
117 struct acpi_thread_state *thread;
118 struct acpi_walk_state *next; /* Next walk_state in list */
119}; 115};
120 116
121
122/* Info used by acpi_ps_init_objects */ 117/* Info used by acpi_ps_init_objects */
123 118
124struct acpi_init_walk_info 119struct acpi_init_walk_info {
125{ 120 u16 method_count;
126 u16 method_count; 121 u16 device_count;
127 u16 device_count; 122 u16 op_region_count;
128 u16 op_region_count; 123 u16 field_count;
129 u16 field_count; 124 u16 buffer_count;
130 u16 buffer_count; 125 u16 package_count;
131 u16 package_count; 126 u16 op_region_init;
132 u16 op_region_init; 127 u16 field_init;
133 u16 field_init; 128 u16 buffer_init;
134 u16 buffer_init; 129 u16 package_init;
135 u16 package_init; 130 u16 object_count;
136 u16 object_count; 131 struct acpi_table_desc *table_desc;
137 struct acpi_table_desc *table_desc;
138}; 132};
139 133
140
141/* Info used by acpi_ns_initialize_devices */ 134/* Info used by acpi_ns_initialize_devices */
142 135
143struct acpi_device_walk_info 136struct acpi_device_walk_info {
144{ 137 u16 device_count;
145 u16 device_count; 138 u16 num_STA;
146 u16 num_STA; 139 u16 num_INI;
147 u16 num_INI; 140 struct acpi_table_desc *table_desc;
148 struct acpi_table_desc *table_desc;
149}; 141};
150 142
151
152/* TBD: [Restructure] Merge with struct above */ 143/* TBD: [Restructure] Merge with struct above */
153 144
154struct acpi_walk_info 145struct acpi_walk_info {
155{ 146 u32 debug_level;
156 u32 debug_level; 147 u32 count;
157 u32 owner_id; 148 acpi_owner_id owner_id;
158 u8 display_type; 149 u8 display_type;
159}; 150};
160 151
161/* Display Types */ 152/* Display Types */
162 153
163#define ACPI_DISPLAY_SUMMARY 0 154#define ACPI_DISPLAY_SUMMARY (u8) 0
164#define ACPI_DISPLAY_OBJECTS 1 155#define ACPI_DISPLAY_OBJECTS (u8) 1
156#define ACPI_DISPLAY_MASK (u8) 1
165 157
166struct acpi_get_devices_info 158#define ACPI_DISPLAY_SHORT (u8) 2
167{
168 acpi_walk_callback user_function;
169 void *context;
170 char *hid;
171};
172 159
160struct acpi_get_devices_info {
161 acpi_walk_callback user_function;
162 void *context;
163 char *hid;
164};
173 165
174union acpi_aml_operands 166union acpi_aml_operands {
175{ 167 union acpi_operand_object *operands[7];
176 union acpi_operand_object *operands[7];
177 168
178 struct 169 struct {
179 { 170 struct acpi_object_integer *type;
180 struct acpi_object_integer *type; 171 struct acpi_object_integer *code;
181 struct acpi_object_integer *code; 172 struct acpi_object_integer *argument;
182 struct acpi_object_integer *argument;
183 173
184 } fatal; 174 } fatal;
185 175
186 struct 176 struct {
187 { 177 union acpi_operand_object *source;
188 union acpi_operand_object *source; 178 struct acpi_object_integer *index;
189 struct acpi_object_integer *index; 179 union acpi_operand_object *target;
190 union acpi_operand_object *target;
191 180
192 } index; 181 } index;
193 182
194 struct 183 struct {
195 { 184 union acpi_operand_object *source;
196 union acpi_operand_object *source; 185 struct acpi_object_integer *index;
197 struct acpi_object_integer *index; 186 struct acpi_object_integer *length;
198 struct acpi_object_integer *length; 187 union acpi_operand_object *target;
199 union acpi_operand_object *target;
200 188
201 } mid; 189 } mid;
202}; 190};
203 191
204
205/* Internal method parameter list */ 192/* Internal method parameter list */
206 193
207struct acpi_parameter_info 194struct acpi_parameter_info {
208{ 195 struct acpi_namespace_node *node;
209 struct acpi_namespace_node *node; 196 union acpi_operand_object *obj_desc;
210 union acpi_operand_object **parameters; 197 union acpi_operand_object **parameters;
211 union acpi_operand_object *return_object; 198 union acpi_operand_object *return_object;
212 u8 parameter_type; 199 u8 pass_number;
213 u8 return_object_type; 200 u8 parameter_type;
201 u8 return_object_type;
214}; 202};
215 203
216/* Types for parameter_type above */ 204/* Types for parameter_type above */
@@ -218,5 +206,4 @@ struct acpi_parameter_info
218#define ACPI_PARAM_ARGS 0 206#define ACPI_PARAM_ARGS 0
219#define ACPI_PARAM_GPE 1 207#define ACPI_PARAM_GPE 1
220 208
221
222#endif 209#endif
diff --git a/include/acpi/actables.h b/include/acpi/actables.h
index 39df92e21a0d..f92c1858b808 100644
--- a/include/acpi/actables.h
+++ b/include/acpi/actables.h
@@ -44,146 +44,101 @@
44#ifndef __ACTABLES_H__ 44#ifndef __ACTABLES_H__
45#define __ACTABLES_H__ 45#define __ACTABLES_H__
46 46
47
48/* Used in acpi_tb_map_acpi_table for size parameter if table header is to be used */ 47/* Used in acpi_tb_map_acpi_table for size parameter if table header is to be used */
49 48
50#define SIZE_IN_HEADER 0 49#define SIZE_IN_HEADER 0
51 50
52
53/* 51/*
54 * tbconvrt - Table conversion routines 52 * tbconvrt - Table conversion routines
55 */ 53 */
56acpi_status 54acpi_status acpi_tb_convert_to_xsdt(struct acpi_table_desc *table_info);
57acpi_tb_convert_to_xsdt (
58 struct acpi_table_desc *table_info);
59 55
60acpi_status 56acpi_status acpi_tb_convert_table_fadt(void);
61acpi_tb_convert_table_fadt (
62 void);
63 57
64acpi_status 58acpi_status acpi_tb_build_common_facs(struct acpi_table_desc *table_info);
65acpi_tb_build_common_facs (
66 struct acpi_table_desc *table_info);
67 59
68u32 60u32
69acpi_tb_get_table_count ( 61acpi_tb_get_table_count(struct rsdp_descriptor *RSDP,
70 struct rsdp_descriptor *RSDP, 62 struct acpi_table_header *RSDT);
71 struct acpi_table_header *RSDT);
72
73 63
74/* 64/*
75 * tbget - Table "get" routines 65 * tbget - Table "get" routines
76 */ 66 */
77acpi_status 67acpi_status
78acpi_tb_get_table ( 68acpi_tb_get_table(struct acpi_pointer *address,
79 struct acpi_pointer *address, 69 struct acpi_table_desc *table_info);
80 struct acpi_table_desc *table_info);
81
82acpi_status
83acpi_tb_get_table_header (
84 struct acpi_pointer *address,
85 struct acpi_table_header *return_header);
86 70
87acpi_status 71acpi_status
88acpi_tb_get_table_body ( 72acpi_tb_get_table_header(struct acpi_pointer *address,
89 struct acpi_pointer *address, 73 struct acpi_table_header *return_header);
90 struct acpi_table_header *header,
91 struct acpi_table_desc *table_info);
92 74
93acpi_status 75acpi_status
94acpi_tb_get_table_ptr ( 76acpi_tb_get_table_body(struct acpi_pointer *address,
95 acpi_table_type table_type, 77 struct acpi_table_header *header,
96 u32 instance, 78 struct acpi_table_desc *table_info);
97 struct acpi_table_header **table_ptr_loc);
98 79
99acpi_status 80acpi_status
100acpi_tb_verify_rsdp ( 81acpi_tb_get_table_ptr(acpi_table_type table_type,
101 struct acpi_pointer *address); 82 u32 instance, struct acpi_table_header **table_ptr_loc);
102 83
103void 84acpi_status acpi_tb_verify_rsdp(struct acpi_pointer *address);
104acpi_tb_get_rsdt_address (
105 struct acpi_pointer *out_address);
106 85
107acpi_status 86void acpi_tb_get_rsdt_address(struct acpi_pointer *out_address);
108acpi_tb_validate_rsdt (
109 struct acpi_table_header *table_ptr);
110 87
88acpi_status acpi_tb_validate_rsdt(struct acpi_table_header *table_ptr);
111 89
112/* 90/*
113 * tbgetall - get multiple required tables 91 * tbgetall - get multiple required tables
114 */ 92 */
115acpi_status 93acpi_status acpi_tb_get_required_tables(void);
116acpi_tb_get_required_tables (
117 void);
118
119 94
120/* 95/*
121 * tbinstall - Table installation 96 * tbinstall - Table installation
122 */ 97 */
123acpi_status 98acpi_status acpi_tb_install_table(struct acpi_table_desc *table_info);
124acpi_tb_install_table (
125 struct acpi_table_desc *table_info);
126 99
127acpi_status 100acpi_status
128acpi_tb_recognize_table ( 101acpi_tb_recognize_table(struct acpi_table_desc *table_info, u8 search_type);
129 struct acpi_table_desc *table_info,
130 u8 search_type);
131 102
132acpi_status 103acpi_status
133acpi_tb_init_table_descriptor ( 104acpi_tb_init_table_descriptor(acpi_table_type table_type,
134 acpi_table_type table_type, 105 struct acpi_table_desc *table_info);
135 struct acpi_table_desc *table_info);
136
137 106
138/* 107/*
139 * tbremove - Table removal and deletion 108 * tbremove - Table removal and deletion
140 */ 109 */
141void 110void acpi_tb_delete_all_tables(void);
142acpi_tb_delete_all_tables (
143 void);
144
145void
146acpi_tb_delete_tables_by_type (
147 acpi_table_type type);
148 111
149void 112void acpi_tb_delete_tables_by_type(acpi_table_type type);
150acpi_tb_delete_single_table (
151 struct acpi_table_desc *table_desc);
152 113
153struct acpi_table_desc * 114void acpi_tb_delete_single_table(struct acpi_table_desc *table_desc);
154acpi_tb_uninstall_table (
155 struct acpi_table_desc *table_desc);
156 115
116struct acpi_table_desc *acpi_tb_uninstall_table(struct acpi_table_desc
117 *table_desc);
157 118
158/* 119/*
159 * tbxfroot - RSDP, RSDT utilities 120 * tbxfroot - RSDP, RSDT utilities
160 */ 121 */
161acpi_status 122acpi_status
162acpi_tb_find_table ( 123acpi_tb_find_table(char *signature,
163 char *signature, 124 char *oem_id,
164 char *oem_id, 125 char *oem_table_id, struct acpi_table_header **table_ptr);
165 char *oem_table_id,
166 struct acpi_table_header **table_ptr);
167 126
168acpi_status 127acpi_status acpi_tb_get_table_rsdt(void);
169acpi_tb_get_table_rsdt (
170 void);
171 128
129acpi_status acpi_tb_validate_rsdp(struct rsdp_descriptor *rsdp);
172 130
173/* 131/*
174 * tbutils - common table utilities 132 * tbutils - common table utilities
175 */ 133 */
134acpi_status acpi_tb_is_table_installed(struct acpi_table_desc *new_table_desc);
135
176acpi_status 136acpi_status
177acpi_tb_verify_table_checksum ( 137acpi_tb_verify_table_checksum(struct acpi_table_header *table_header);
178 struct acpi_table_header *table_header);
179 138
180u8 139u8 acpi_tb_generate_checksum(void *buffer, u32 length);
181acpi_tb_checksum (
182 void *buffer,
183 u32 length);
184 140
185acpi_status 141acpi_status
186acpi_tb_validate_table_header ( 142acpi_tb_validate_table_header(struct acpi_table_header *table_header);
187 struct acpi_table_header *table_header);
188 143
189#endif /* __ACTABLES_H__ */ 144#endif /* __ACTABLES_H__ */
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index b5cdcca444c8..a46f406e1c94 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -44,27 +44,24 @@
44#ifndef __ACTBL_H__ 44#ifndef __ACTBL_H__
45#define __ACTBL_H__ 45#define __ACTBL_H__
46 46
47
48/* 47/*
49 * Values for description table header signatures 48 * Values for description table header signatures
50 */ 49 */
51#define RSDP_NAME "RSDP" 50#define RSDP_NAME "RSDP"
52#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ 51#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */
53#define APIC_SIG "APIC" /* Multiple APIC Description Table */ 52#define APIC_SIG "APIC" /* Multiple APIC Description Table */
54#define DSDT_SIG "DSDT" /* Differentiated System Description Table */ 53#define DSDT_SIG "DSDT" /* Differentiated System Description Table */
55#define FADT_SIG "FACP" /* Fixed ACPI Description Table */ 54#define FADT_SIG "FACP" /* Fixed ACPI Description Table */
56#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */ 55#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */
57#define PSDT_SIG "PSDT" /* Persistent System Description Table */ 56#define PSDT_SIG "PSDT" /* Persistent System Description Table */
58#define RSDT_SIG "RSDT" /* Root System Description Table */ 57#define RSDT_SIG "RSDT" /* Root System Description Table */
59#define XSDT_SIG "XSDT" /* Extended System Description Table */ 58#define XSDT_SIG "XSDT" /* Extended System Description Table */
60#define SSDT_SIG "SSDT" /* Secondary System Description Table */ 59#define SSDT_SIG "SSDT" /* Secondary System Description Table */
61#define SBST_SIG "SBST" /* Smart Battery Specification Table */ 60#define SBST_SIG "SBST" /* Smart Battery Specification Table */
62#define SPIC_SIG "SPIC" /* IOSAPIC table */ 61#define SPIC_SIG "SPIC" /* IOSAPIC table */
63#define BOOT_SIG "BOOT" /* Boot table */ 62#define BOOT_SIG "BOOT" /* Boot table */
64 63
65 64#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
66#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
67
68 65
69/* 66/*
70 * Common table types. The base code can remain 67 * Common table types. The base code can remain
@@ -75,7 +72,6 @@
75#define FACS_DESCRIPTOR struct facs_descriptor_rev2 72#define FACS_DESCRIPTOR struct facs_descriptor_rev2
76#define FADT_DESCRIPTOR struct fadt_descriptor_rev2 73#define FADT_DESCRIPTOR struct fadt_descriptor_rev2
77 74
78
79#pragma pack(1) 75#pragma pack(1)
80 76
81/* 77/*
@@ -84,45 +80,37 @@
84 * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.) 80 * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
85 * are in separate files. 81 * are in separate files.
86 */ 82 */
87struct rsdp_descriptor /* Root System Descriptor Pointer */ 83struct rsdp_descriptor { /* Root System Descriptor Pointer */
88{ 84 char signature[8]; /* ACPI signature, contains "RSD PTR " */
89 char signature [8]; /* ACPI signature, contains "RSD PTR " */ 85 u8 checksum; /* ACPI 1.0 checksum */
90 u8 checksum; /* To make sum of struct == 0 */ 86 char oem_id[6]; /* OEM identification */
91 char oem_id [6]; /* OEM identification */ 87 u8 revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */
92 u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */ 88 u32 rsdt_physical_address; /* 32-bit physical address of the RSDT */
93 u32 rsdt_physical_address; /* 32-bit physical address of RSDT */ 89 u32 length; /* XSDT Length in bytes, including header */
94 u32 length; /* XSDT Length in bytes including hdr */ 90 u64 xsdt_physical_address; /* 64-bit physical address of the XSDT */
95 u64 xsdt_physical_address; /* 64-bit physical address of XSDT */ 91 u8 extended_checksum; /* Checksum of entire table (ACPI 2.0) */
96 u8 extended_checksum; /* Checksum of entire table */ 92 char reserved[3]; /* Reserved, must be zero */
97 char reserved [3]; /* Reserved field must be 0 */
98}; 93};
99 94
100 95struct acpi_common_facs { /* Common FACS for internal use */
101struct acpi_common_facs /* Common FACS for internal use */ 96 u32 *global_lock;
102{ 97 u64 *firmware_waking_vector;
103 u32 *global_lock; 98 u8 vector_width;
104 u64 *firmware_waking_vector;
105 u8 vector_width;
106}; 99};
107 100
108
109#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \ 101#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
110 char signature [4]; /* ACPI signature (4 ASCII characters) */\ 102 char signature[4]; /* ASCII table signature */\
111 u32 length; /* Length of table, in bytes, including header */\ 103 u32 length; /* Length of table in bytes, including this header */\
112 u8 revision; /* ACPI Specification minor version # */\ 104 u8 revision; /* ACPI Specification minor version # */\
113 u8 checksum; /* To make sum of entire table == 0 */\ 105 u8 checksum; /* To make sum of entire table == 0 */\
114 char oem_id [6]; /* OEM identification */\ 106 char oem_id[6]; /* ASCII OEM identification */\
115 char oem_table_id [8]; /* OEM table identification */\ 107 char oem_table_id[8]; /* ASCII OEM table identification */\
116 u32 oem_revision; /* OEM revision number */\ 108 u32 oem_revision; /* OEM revision number */\
117 char asl_compiler_id [4]; /* ASL compiler vendor ID */\ 109 char asl_compiler_id [4]; /* ASCII ASL compiler vendor ID */\
118 u32 asl_compiler_revision; /* ASL compiler revision number */ 110 u32 asl_compiler_revision; /* ASL compiler version */
119
120
121struct acpi_table_header /* ACPI common table header */
122{
123 ACPI_TABLE_HEADER_DEF
124};
125 111
112struct acpi_table_header { /* ACPI common table header */
113ACPI_TABLE_HEADER_DEF};
126 114
127/* 115/*
128 * MADT values and structures 116 * MADT values and structures
@@ -135,12 +123,15 @@ struct acpi_table_header /* ACPI common table header */
135 123
136/* Master MADT */ 124/* Master MADT */
137 125
138struct multiple_apic_table 126struct multiple_apic_table {
139{ 127 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
140 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 128 u32 local_apic_address; /* Physical address of local APIC */
141 u32 local_apic_address; /* Physical address of local APIC */ 129
142 u32 PCATcompat : 1; /* A one indicates system also has dual 8259s */ 130 /* Flags (32 bits) */
143 u32 reserved1 : 31; 131
132 u8 PCATcompat:1; /* 00: System also has dual 8259s */
133 u8:7; /* 01-07: Reserved, must be zero */
134 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
144}; 135};
145 136
146/* Values for Type in APIC_HEADER_DEF */ 137/* Values for Type in APIC_HEADER_DEF */
@@ -154,7 +145,7 @@ struct multiple_apic_table
154#define APIC_IO_SAPIC 6 145#define APIC_IO_SAPIC 6
155#define APIC_LOCAL_SAPIC 7 146#define APIC_LOCAL_SAPIC 7
156#define APIC_XRUPT_SOURCE 8 147#define APIC_XRUPT_SOURCE 8
157#define APIC_RESERVED 9 /* 9 and greater are reserved */ 148#define APIC_RESERVED 9 /* 9 and greater are reserved */
158 149
159/* 150/*
160 * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) 151 * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
@@ -163,10 +154,8 @@ struct multiple_apic_table
163 u8 type; \ 154 u8 type; \
164 u8 length; 155 u8 length;
165 156
166struct apic_header 157struct apic_header {
167{ 158APIC_HEADER_DEF};
168 APIC_HEADER_DEF
169};
170 159
171/* Values for MPS INTI flags */ 160/* Values for MPS INTI flags */
172 161
@@ -180,117 +169,90 @@ struct apic_header
180#define TRIGGER_RESERVED 2 169#define TRIGGER_RESERVED 2
181#define TRIGGER_LEVEL 3 170#define TRIGGER_LEVEL 3
182 171
183/* Common flag definitions */ 172/* Common flag definitions (16 bits each) */
184 173
185#define MPS_INTI_FLAGS \ 174#define MPS_INTI_FLAGS \
186 u16 polarity : 2; /* Polarity of APIC I/O input signals */\ 175 u8 polarity : 2; /* 00-01: Polarity of APIC I/O input signals */\
187 u16 trigger_mode : 2; /* Trigger mode of APIC input signals */\ 176 u8 trigger_mode : 2; /* 02-03: Trigger mode of APIC input signals */\
188 u16 reserved1 : 12; /* Reserved, must be zero */ 177 u8 : 4; /* 04-07: Reserved, must be zero */\
178 u8 reserved1; /* 08-15: Reserved, must be zero */
189 179
190#define LOCAL_APIC_FLAGS \ 180#define LOCAL_APIC_FLAGS \
191 u32 processor_enabled: 1; /* Processor is usable if set */\ 181 u8 processor_enabled: 1; /* 00: Processor is usable if set */\
192 u32 reserved2 : 31; /* Reserved, must be zero */ 182 u8 : 7; /* 01-07: Reserved, must be zero */\
183 u8 reserved2; /* 08-15: Reserved, must be zero */
193 184
194/* Sub-structures for MADT */ 185/* Sub-structures for MADT */
195 186
196struct madt_processor_apic 187struct madt_processor_apic {
197{ 188 APIC_HEADER_DEF u8 processor_id; /* ACPI processor id */
198 APIC_HEADER_DEF 189 u8 local_apic_id; /* Processor's local APIC id */
199 u8 processor_id; /* ACPI processor id */ 190 LOCAL_APIC_FLAGS};
200 u8 local_apic_id; /* Processor's local APIC id */ 191
201 LOCAL_APIC_FLAGS 192struct madt_io_apic {
202}; 193 APIC_HEADER_DEF u8 io_apic_id; /* I/O APIC ID */
203 194 u8 reserved; /* Reserved - must be zero */
204struct madt_io_apic 195 u32 address; /* APIC physical address */
205{ 196 u32 interrupt; /* Global system interrupt where INTI
206 APIC_HEADER_DEF 197 * lines start */
207 u8 io_apic_id; /* I/O APIC ID */
208 u8 reserved; /* Reserved - must be zero */
209 u32 address; /* APIC physical address */
210 u32 interrupt; /* Global system interrupt where INTI
211 * lines start */
212}; 198};
213 199
214struct madt_interrupt_override 200struct madt_interrupt_override {
215{ 201 APIC_HEADER_DEF u8 bus; /* 0 - ISA */
216 APIC_HEADER_DEF 202 u8 source; /* Interrupt source (IRQ) */
217 u8 bus; /* 0 - ISA */ 203 u32 interrupt; /* Global system interrupt */
218 u8 source; /* Interrupt source (IRQ) */ 204 MPS_INTI_FLAGS};
219 u32 interrupt; /* Global system interrupt */
220 MPS_INTI_FLAGS
221};
222 205
223struct madt_nmi_source 206struct madt_nmi_source {
224{ 207 APIC_HEADER_DEF MPS_INTI_FLAGS u32 interrupt; /* Global system interrupt */
225 APIC_HEADER_DEF
226 MPS_INTI_FLAGS
227 u32 interrupt; /* Global system interrupt */
228}; 208};
229 209
230struct madt_local_apic_nmi 210struct madt_local_apic_nmi {
231{ 211 APIC_HEADER_DEF u8 processor_id; /* ACPI processor id */
232 APIC_HEADER_DEF 212 MPS_INTI_FLAGS u8 lint; /* LINTn to which NMI is connected */
233 u8 processor_id; /* ACPI processor id */
234 MPS_INTI_FLAGS
235 u8 lint; /* LINTn to which NMI is connected */
236}; 213};
237 214
238struct madt_address_override 215struct madt_address_override {
239{ 216 APIC_HEADER_DEF u16 reserved; /* Reserved, must be zero */
240 APIC_HEADER_DEF 217 u64 address; /* APIC physical address */
241 u16 reserved; /* Reserved - must be zero */
242 u64 address; /* APIC physical address */
243}; 218};
244 219
245struct madt_io_sapic 220struct madt_io_sapic {
246{ 221 APIC_HEADER_DEF u8 io_sapic_id; /* I/O SAPIC ID */
247 APIC_HEADER_DEF 222 u8 reserved; /* Reserved, must be zero */
248 u8 io_sapic_id; /* I/O SAPIC ID */ 223 u32 interrupt_base; /* Glocal interrupt for SAPIC start */
249 u8 reserved; /* Reserved - must be zero */ 224 u64 address; /* SAPIC physical address */
250 u32 interrupt_base; /* Glocal interrupt for SAPIC start */
251 u64 address; /* SAPIC physical address */
252}; 225};
253 226
254struct madt_local_sapic 227struct madt_local_sapic {
255{ 228 APIC_HEADER_DEF u8 processor_id; /* ACPI processor id */
256 APIC_HEADER_DEF 229 u8 local_sapic_id; /* SAPIC ID */
257 u8 processor_id; /* ACPI processor id */ 230 u8 local_sapic_eid; /* SAPIC EID */
258 u8 local_sapic_id; /* SAPIC ID */ 231 u8 reserved[3]; /* Reserved, must be zero */
259 u8 local_sapic_eid; /* SAPIC EID */ 232 LOCAL_APIC_FLAGS u32 processor_uID; /* Numeric UID - ACPI 3.0 */
260 u8 reserved [3]; /* Reserved - must be zero */ 233 char processor_uIDstring[1]; /* String UID - ACPI 3.0 */
261 LOCAL_APIC_FLAGS
262 u32 processor_uID; /* Numeric UID - ACPI 3.0 */
263 char processor_uIDstring[1]; /* String UID - ACPI 3.0 */
264}; 234};
265 235
266struct madt_interrupt_source 236struct madt_interrupt_source {
267{ 237 APIC_HEADER_DEF MPS_INTI_FLAGS u8 interrupt_type; /* 1=PMI, 2=INIT, 3=corrected */
268 APIC_HEADER_DEF 238 u8 processor_id; /* Processor ID */
269 MPS_INTI_FLAGS 239 u8 processor_eid; /* Processor EID */
270 u8 interrupt_type; /* 1=PMI, 2=INIT, 3=corrected */ 240 u8 io_sapic_vector; /* Vector value for PMI interrupts */
271 u8 processor_id; /* Processor ID */ 241 u32 interrupt; /* Global system interrupt */
272 u8 processor_eid; /* Processor EID */ 242 u32 flags; /* Interrupt Source Flags */
273 u8 io_sapic_vector; /* Vector value for PMI interrupts */
274 u32 interrupt; /* Global system interrupt */
275 u32 flags; /* Interrupt Source Flags */
276}; 243};
277 244
278
279/* 245/*
280 * Smart Battery 246 * Smart Battery
281 */ 247 */
282struct smart_battery_table 248struct smart_battery_table {
283{ 249 ACPI_TABLE_HEADER_DEF u32 warning_level;
284 ACPI_TABLE_HEADER_DEF 250 u32 low_level;
285 u32 warning_level; 251 u32 critical_level;
286 u32 low_level;
287 u32 critical_level;
288}; 252};
289 253
290
291#pragma pack() 254#pragma pack()
292 255
293
294/* 256/*
295 * ACPI Table information. We save the table address, length, 257 * ACPI Table information. We save the table address, length,
296 * and type of memory allocation (mapped or allocated) for each 258 * and type of memory allocation (mapped or allocated) for each
@@ -314,39 +276,35 @@ struct smart_battery_table
314 276
315/* Data about each known table type */ 277/* Data about each known table type */
316 278
317struct acpi_table_support 279struct acpi_table_support {
318{ 280 char *name;
319 char *name; 281 char *signature;
320 char *signature; 282 void **global_ptr;
321 void **global_ptr; 283 u8 sig_length;
322 u8 sig_length; 284 u8 flags;
323 u8 flags;
324}; 285};
325 286
326
327/* 287/*
328 * Get the ACPI version-specific tables 288 * Get the ACPI version-specific tables
329 */ 289 */
330#include "actbl1.h" /* Acpi 1.0 table definitions */ 290#include "actbl1.h" /* Acpi 1.0 table definitions */
331#include "actbl2.h" /* Acpi 2.0 table definitions */ 291#include "actbl2.h" /* Acpi 2.0 table definitions */
332 292
333extern u8 acpi_fadt_is_v1; /* is set to 1 if FADT is revision 1, 293extern u8 acpi_fadt_is_v1; /* is set to 1 if FADT is revision 1,
334 * needed for certain workarounds */ 294 * needed for certain workarounds */
335 295
336#pragma pack(1) 296#pragma pack(1)
337/* 297/*
338 * High performance timer 298 * High performance timer
339 */ 299 */
340struct hpet_table 300struct hpet_table {
341{ 301 ACPI_TABLE_HEADER_DEF u32 hardware_id;
342 ACPI_TABLE_HEADER_DEF 302 struct acpi_generic_address base_address;
343 u32 hardware_id; 303 u8 hpet_number;
344 struct acpi_generic_address base_address; 304 u16 clock_tick;
345 u8 hpet_number; 305 u8 attributes;
346 u16 clock_tick;
347 u8 attributes;
348}; 306};
349 307
350#pragma pack() 308#pragma pack()
351 309
352#endif /* __ACTBL_H__ */ 310#endif /* __ACTBL_H__ */
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index 33de5f4d2ccc..67312c3a915a 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -49,88 +49,87 @@
49/* 49/*
50 * ACPI 1.0 Root System Description Table (RSDT) 50 * ACPI 1.0 Root System Description Table (RSDT)
51 */ 51 */
52struct rsdt_descriptor_rev1 52struct rsdt_descriptor_rev1 {
53{ 53 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
54 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 54 u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */
55 u32 table_offset_entry [1]; /* Array of pointers to other */
56 /* ACPI tables */
57}; 55};
58 56
59
60/* 57/*
61 * ACPI 1.0 Firmware ACPI Control Structure (FACS) 58 * ACPI 1.0 Firmware ACPI Control Structure (FACS)
62 */ 59 */
63struct facs_descriptor_rev1 60struct facs_descriptor_rev1 {
64{ 61 char signature[4]; /* ASCII table signature */
65 char signature[4]; /* ACPI Signature */ 62 u32 length; /* Length of structure in bytes */
66 u32 length; /* Length of structure, in bytes */ 63 u32 hardware_signature; /* Hardware configuration signature */
67 u32 hardware_signature; /* Hardware configuration signature */ 64 u32 firmware_waking_vector; /* ACPI OS waking vector */
68 u32 firmware_waking_vector; /* ACPI OS waking vector */ 65 u32 global_lock; /* Global Lock */
69 u32 global_lock; /* Global Lock */ 66
70 u32 S4bios_f : 1; /* Indicates if S4BIOS support is present */ 67 /* Flags (32 bits) */
71 u32 reserved1 : 31; /* Must be 0 */
72 u8 resverved3 [40]; /* Reserved - must be zero */
73};
74 68
69 u8 S4bios_f:1; /* 00: S4BIOS support is present */
70 u8:7; /* 01-07: Reserved, must be zero */
71 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
72
73 u8 reserved2[40]; /* Reserved, must be zero */
74};
75 75
76/* 76/*
77 * ACPI 1.0 Fixed ACPI Description Table (FADT) 77 * ACPI 1.0 Fixed ACPI Description Table (FADT)
78 */ 78 */
79struct fadt_descriptor_rev1 79struct fadt_descriptor_rev1 {
80{ 80 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
81 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 81 u32 firmware_ctrl; /* Physical address of FACS */
82 u32 firmware_ctrl; /* Physical address of FACS */ 82 u32 dsdt; /* Physical address of DSDT */
83 u32 dsdt; /* Physical address of DSDT */ 83 u8 model; /* System Interrupt Model */
84 u8 model; /* System Interrupt Model */ 84 u8 reserved1; /* Reserved, must be zero */
85 u8 reserved1; /* Reserved */ 85 u16 sci_int; /* System vector of SCI interrupt */
86 u16 sci_int; /* System vector of SCI interrupt */ 86 u32 smi_cmd; /* Port address of SMI command port */
87 u32 smi_cmd; /* Port address of SMI command port */ 87 u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */
88 u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */ 88 u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */
89 u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */ 89 u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
90 u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */ 90 u8 reserved2; /* Reserved, must be zero */
91 u8 reserved2; /* Reserved - must be zero */ 91 u32 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */
92 u32 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */ 92 u32 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */
93 u32 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */ 93 u32 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */
94 u32 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */ 94 u32 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */
95 u32 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */ 95 u32 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */
96 u32 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */ 96 u32 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
97 u32 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ 97 u32 gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */
98 u32 gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */ 98 u32 gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */
99 u32 gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */ 99 u8 pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */
100 u8 pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */ 100 u8 pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */
101 u8 pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */ 101 u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */
102 u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */ 102 u8 pm_tm_len; /* Byte Length of ports at pm_tm_blk */
103 u8 pm_tm_len; /* Byte Length of ports at pm_tm_blk */ 103 u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */
104 u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */ 104 u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */
105 u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */ 105 u8 gpe1_base; /* Offset in gpe model where gpe1 events start */
106 u8 gpe1_base; /* Offset in gpe model where gpe1 events start */ 106 u8 reserved3; /* Reserved, must be zero */
107 u8 reserved3; /* Reserved */ 107 u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */
108 u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */ 108 u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */
109 u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */ 109 u16 flush_size; /* Size of area read to flush caches */
110 u16 flush_size; /* Size of area read to flush caches */ 110 u16 flush_stride; /* Stride used in flushing caches */
111 u16 flush_stride; /* Stride used in flushing caches */ 111 u8 duty_offset; /* Bit location of duty cycle field in p_cnt reg */
112 u8 duty_offset; /* Bit location of duty cycle field in p_cnt reg */ 112 u8 duty_width; /* Bit width of duty cycle field in p_cnt reg */
113 u8 duty_width; /* Bit width of duty cycle field in p_cnt reg */ 113 u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */
114 u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */ 114 u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */
115 u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */ 115 u8 century; /* Index to century in RTC CMOS RAM */
116 u8 century; /* Index to century in RTC CMOS RAM */ 116 u8 reserved4[3]; /* Reserved, must be zero */
117 u8 reserved4; /* Reserved */
118 u8 reserved4a; /* Reserved */
119 u8 reserved4b; /* Reserved */
120 u32 wb_invd : 1; /* The wbinvd instruction works properly */
121 u32 wb_invd_flush : 1; /* The wbinvd flushes but does not invalidate */
122 u32 proc_c1 : 1; /* All processors support C1 state */
123 u32 plvl2_up : 1; /* C2 state works on MP system */
124 u32 pwr_button : 1; /* Power button is handled as a generic feature */
125 u32 sleep_button : 1; /* Sleep button is handled as a generic feature, or not present */
126 u32 fixed_rTC : 1; /* RTC wakeup stat not in fixed register space */
127 u32 rtcs4 : 1; /* RTC wakeup stat not possible from S4 */
128 u32 tmr_val_ext : 1; /* The tmr_val width is 32 bits (0 = 24 bits) */
129 u32 reserved5 : 23; /* Reserved - must be zero */
130};
131 117
132#pragma pack() 118 /* Flags (32 bits) */
133 119
134#endif /* __ACTBL1_H__ */ 120 u8 wb_invd:1; /* 00: The wbinvd instruction works properly */
121 u8 wb_invd_flush:1; /* 01: The wbinvd flushes but does not invalidate */
122 u8 proc_c1:1; /* 02: All processors support C1 state */
123 u8 plvl2_up:1; /* 03: C2 state works on MP system */
124 u8 pwr_button:1; /* 04: Power button is handled as a generic feature */
125 u8 sleep_button:1; /* 05: Sleep button is handled as a generic feature, or not present */
126 u8 fixed_rTC:1; /* 06: RTC wakeup stat not in fixed register space */
127 u8 rtcs4:1; /* 07: RTC wakeup stat not possible from S4 */
128 u8 tmr_val_ext:1; /* 08: tmr_val width is 32 bits (0 = 24 bits) */
129 u8:7; /* 09-15: Reserved, must be zero */
130 u8 reserved5[2]; /* 16-31: Reserved, must be zero */
131};
135 132
133#pragma pack()
136 134
135#endif /* __ACTBL1_H__ */
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index e1729c967e05..50305ce2681a 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -64,62 +64,56 @@
64#define FADT2_REVISION_ID 3 64#define FADT2_REVISION_ID 3
65#define FADT2_MINUS_REVISION_ID 2 65#define FADT2_MINUS_REVISION_ID 2
66 66
67
68#pragma pack(1) 67#pragma pack(1)
69 68
70/* 69/*
71 * ACPI 2.0 Root System Description Table (RSDT) 70 * ACPI 2.0 Root System Description Table (RSDT)
72 */ 71 */
73struct rsdt_descriptor_rev2 72struct rsdt_descriptor_rev2 {
74{ 73 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
75 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 74 u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */
76 u32 table_offset_entry [1]; /* Array of pointers to */
77 /* ACPI table headers */
78}; 75};
79 76
80
81/* 77/*
82 * ACPI 2.0 Extended System Description Table (XSDT) 78 * ACPI 2.0 Extended System Description Table (XSDT)
83 */ 79 */
84struct xsdt_descriptor_rev2 80struct xsdt_descriptor_rev2 {
85{ 81 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
86 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 82 u64 table_offset_entry[1]; /* Array of pointers to ACPI tables */
87 u64 table_offset_entry [1]; /* Array of pointers to */
88 /* ACPI table headers */
89}; 83};
90 84
91
92/* 85/*
93 * ACPI 2.0 Firmware ACPI Control Structure (FACS) 86 * ACPI 2.0 Firmware ACPI Control Structure (FACS)
94 */ 87 */
95struct facs_descriptor_rev2 88struct facs_descriptor_rev2 {
96{ 89 char signature[4]; /* ASCII table signature */
97 char signature[4]; /* ACPI signature */ 90 u32 length; /* Length of structure, in bytes */
98 u32 length; /* Length of structure, in bytes */ 91 u32 hardware_signature; /* Hardware configuration signature */
99 u32 hardware_signature; /* Hardware configuration signature */ 92 u32 firmware_waking_vector; /* 32-bit physical address of the Firmware Waking Vector. */
100 u32 firmware_waking_vector; /* 32bit physical address of the Firmware Waking Vector. */ 93 u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */
101 u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */ 94
102 u32 S4bios_f : 1; /* S4Bios_f - Indicates if S4BIOS support is present */ 95 /* Flags (32 bits) */
103 u32 reserved1 : 31; /* Must be 0 */ 96
104 u64 xfirmware_waking_vector; /* 64bit physical address of the Firmware Waking Vector. */ 97 u8 S4bios_f:1; /* 00: S4BIOS support is present */
105 u8 version; /* Version of this table */ 98 u8:7; /* 01-07: Reserved, must be zero */
106 u8 reserved3 [31]; /* Reserved - must be zero */ 99 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
100
101 u64 xfirmware_waking_vector; /* 64-bit physical address of the Firmware Waking Vector. */
102 u8 version; /* Version of this table */
103 u8 reserved3[31]; /* Reserved, must be zero */
107}; 104};
108 105
109
110/* 106/*
111 * ACPI 2.0+ Generic Address Structure (GAS) 107 * ACPI 2.0+ Generic Address Structure (GAS)
112 */ 108 */
113struct acpi_generic_address 109struct acpi_generic_address {
114{ 110 u8 address_space_id; /* Address space where struct or register exists. */
115 u8 address_space_id; /* Address space where struct or register exists. */ 111 u8 register_bit_width; /* Size in bits of given register */
116 u8 register_bit_width; /* Size in bits of given register */ 112 u8 register_bit_offset; /* Bit offset within the register */
117 u8 register_bit_offset; /* Bit offset within the register */ 113 u8 access_width; /* Minimum Access size (ACPI 3.0) */
118 u8 access_width; /* Minimum Access size (ACPI 3.0) */ 114 u64 address; /* 64-bit address of struct or register */
119 u64 address; /* 64-bit address of struct or register */
120}; 115};
121 116
122
123#define FADT_REV2_COMMON \ 117#define FADT_REV2_COMMON \
124 u32 V1_firmware_ctrl; /* 32-bit physical address of FACS */ \ 118 u32 V1_firmware_ctrl; /* 32-bit physical address of FACS */ \
125 u32 V1_dsdt; /* 32-bit physical address of DSDT */ \ 119 u32 V1_dsdt; /* 32-bit physical address of DSDT */ \
@@ -161,129 +155,123 @@ struct acpi_generic_address
161/* 155/*
162 * ACPI 2.0+ Fixed ACPI Description Table (FADT) 156 * ACPI 2.0+ Fixed ACPI Description Table (FADT)
163 */ 157 */
164struct fadt_descriptor_rev2 158struct fadt_descriptor_rev2 {
165{ 159 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
166 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 160 FADT_REV2_COMMON u8 reserved2; /* Reserved, must be zero */
167 FADT_REV2_COMMON 161
168 u8 reserved2; /* Reserved */ 162 /* Flags (32 bits) */
169 u32 wb_invd : 1; /* The wbinvd instruction works properly */ 163
170 u32 wb_invd_flush : 1; /* The wbinvd flushes but does not invalidate */ 164 u8 wb_invd:1; /* 00: The wbinvd instruction works properly */
171 u32 proc_c1 : 1; /* All processors support C1 state */ 165 u8 wb_invd_flush:1; /* 01: The wbinvd flushes but does not invalidate */
172 u32 plvl2_up : 1; /* C2 state works on MP system */ 166 u8 proc_c1:1; /* 02: All processors support C1 state */
173 u32 pwr_button : 1; /* Power button is handled as a generic feature */ 167 u8 plvl2_up:1; /* 03: C2 state works on MP system */
174 u32 sleep_button : 1; /* Sleep button is handled as a generic feature, or not present */ 168 u8 pwr_button:1; /* 04: Power button is handled as a generic feature */
175 u32 fixed_rTC : 1; /* RTC wakeup stat not in fixed register space */ 169 u8 sleep_button:1; /* 05: Sleep button is handled as a generic feature, or not present */
176 u32 rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ 170 u8 fixed_rTC:1; /* 06: RTC wakeup stat not in fixed register space */
177 u32 tmr_val_ext : 1; /* Indicates tmr_val is 32 bits 0=24-bits */ 171 u8 rtcs4:1; /* 07: RTC wakeup stat not possible from S4 */
178 u32 dock_cap : 1; /* Supports Docking */ 172 u8 tmr_val_ext:1; /* 08: tmr_val is 32 bits 0=24-bits */
179 u32 reset_reg_sup : 1; /* Indicates system supports system reset via the FADT RESET_REG */ 173 u8 dock_cap:1; /* 09: Docking supported */
180 u32 sealed_case : 1; /* Indicates system has no internal expansion capabilities and case is sealed */ 174 u8 reset_reg_sup:1; /* 10: System reset via the FADT RESET_REG supported */
181 u32 headless : 1; /* Indicates system does not have local video capabilities or local input devices */ 175 u8 sealed_case:1; /* 11: No internal expansion capabilities and case is sealed */
182 u32 cpu_sw_sleep : 1; /* Indicates to OSPM that a processor native instruction */ 176 u8 headless:1; /* 12: No local video capabilities or local input devices */
183 /* must be executed after writing the SLP_TYPx register */ 177 u8 cpu_sw_sleep:1; /* 13: Must execute native instruction after writing SLP_TYPx register */
184 /* ACPI 3.0 flag bits */ 178
185 179 u8 pci_exp_wak:1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */
186 u32 pci_exp_wak : 1; /* System supports PCIEXP_WAKE (STS/EN) bits */ 180 u8 use_platform_clock:1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */
187 u32 use_platform_clock : 1; /* OSPM should use platform-provided timer */ 181 u8 S4rtc_sts_valid:1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */
188 u32 S4rtc_sts_valid : 1; /* Contents of RTC_STS valid after S4 wake */ 182 u8 remote_power_on_capable:1; /* 17: System is compatible with remote power on (ACPI 3.0) */
189 u32 remote_power_on_capable : 1; /* System is compatible with remote power on */ 183 u8 force_apic_cluster_model:1; /* 18: All local APICs must use cluster model (ACPI 3.0) */
190 u32 force_apic_cluster_model : 1; /* All local APICs must use cluster model */ 184 u8 force_apic_physical_destination_mode:1; /* 19: all local x_aPICs must use physical dest mode (ACPI 3.0) */
191 u32 force_apic_physical_destination_mode : 1; /* all local x_aPICs must use physical dest mode */ 185 u8:4; /* 20-23: Reserved, must be zero */
192 u32 reserved6 : 12;/* Reserved - must be zero */ 186 u8 reserved3; /* 24-31: Reserved, must be zero */
193 187
194 struct acpi_generic_address reset_register; /* Reset register address in GAS format */ 188 struct acpi_generic_address reset_register; /* Reset register address in GAS format */
195 u8 reset_value; /* Value to write to the reset_register port to reset the system */ 189 u8 reset_value; /* Value to write to the reset_register port to reset the system */
196 u8 reserved7[3]; /* These three bytes must be zero */ 190 u8 reserved4[3]; /* These three bytes must be zero */
197 u64 xfirmware_ctrl; /* 64-bit physical address of FACS */ 191 u64 xfirmware_ctrl; /* 64-bit physical address of FACS */
198 u64 Xdsdt; /* 64-bit physical address of DSDT */ 192 u64 Xdsdt; /* 64-bit physical address of DSDT */
199 struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */ 193 struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */
200 struct acpi_generic_address xpm1b_evt_blk; /* Extended Power Mgt 1b acpi_event Reg Blk address */ 194 struct acpi_generic_address xpm1b_evt_blk; /* Extended Power Mgt 1b acpi_event Reg Blk address */
201 struct acpi_generic_address xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */ 195 struct acpi_generic_address xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */
202 struct acpi_generic_address xpm1b_cnt_blk; /* Extended Power Mgt 1b Control Reg Blk address */ 196 struct acpi_generic_address xpm1b_cnt_blk; /* Extended Power Mgt 1b Control Reg Blk address */
203 struct acpi_generic_address xpm2_cnt_blk; /* Extended Power Mgt 2 Control Reg Blk address */ 197 struct acpi_generic_address xpm2_cnt_blk; /* Extended Power Mgt 2 Control Reg Blk address */
204 struct acpi_generic_address xpm_tmr_blk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ 198 struct acpi_generic_address xpm_tmr_blk; /* Extended Power Mgt Timer Ctrl Reg Blk address */
205 struct acpi_generic_address xgpe0_blk; /* Extended General Purpose acpi_event 0 Reg Blk address */ 199 struct acpi_generic_address xgpe0_blk; /* Extended General Purpose acpi_event 0 Reg Blk address */
206 struct acpi_generic_address xgpe1_blk; /* Extended General Purpose acpi_event 1 Reg Blk address */ 200 struct acpi_generic_address xgpe1_blk; /* Extended General Purpose acpi_event 1 Reg Blk address */
207}; 201};
208 202
209
210/* "Down-revved" ACPI 2.0 FADT descriptor */ 203/* "Down-revved" ACPI 2.0 FADT descriptor */
211 204
212struct fadt_descriptor_rev2_minus 205struct fadt_descriptor_rev2_minus {
213{ 206 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
214 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 207 FADT_REV2_COMMON u8 reserved2; /* Reserved, must be zero */
215 FADT_REV2_COMMON 208 u32 flags;
216 u8 reserved2; /* Reserved */ 209 struct acpi_generic_address reset_register; /* Reset register address in GAS format */
217 u32 flags; 210 u8 reset_value; /* Value to write to the reset_register port to reset the system. */
218 struct acpi_generic_address reset_register; /* Reset register address in GAS format */ 211 u8 reserved7[3]; /* Reserved, must be zero */
219 u8 reset_value; /* Value to write to the reset_register port to reset the system. */
220 u8 reserved7[3]; /* These three bytes must be zero */
221}; 212};
222 213
223
224/* ECDT - Embedded Controller Boot Resources Table */ 214/* ECDT - Embedded Controller Boot Resources Table */
225 215
226struct ec_boot_resources 216struct ec_boot_resources {
227{ 217 ACPI_TABLE_HEADER_DEF struct acpi_generic_address ec_control; /* Address of EC command/status register */
228 ACPI_TABLE_HEADER_DEF 218 struct acpi_generic_address ec_data; /* Address of EC data register */
229 struct acpi_generic_address ec_control; /* Address of EC command/status register */ 219 u32 uid; /* Unique ID - must be same as the EC _UID method */
230 struct acpi_generic_address ec_data; /* Address of EC data register */ 220 u8 gpe_bit; /* The GPE for the EC */
231 u32 uid; /* Unique ID - must be same as the EC _UID method */ 221 u8 ec_id[1]; /* Full namepath of the EC in the ACPI namespace */
232 u8 gpe_bit; /* The GPE for the EC */
233 u8 ec_id[1]; /* Full namepath of the EC in the ACPI namespace */
234}; 222};
235 223
236
237/* SRAT - System Resource Affinity Table */ 224/* SRAT - System Resource Affinity Table */
238 225
239struct static_resource_alloc 226struct static_resource_alloc {
240{ 227 u8 type;
241 u8 type; 228 u8 length;
242 u8 length; 229 u8 proximity_domain_lo;
243 u8 proximity_domain_lo; 230 u8 apic_id;
244 u8 apic_id;
245 u32 enabled :1;
246 u32 reserved3 :31;
247 u8 local_sapic_eid;
248 u8 proximity_domain_hi[3];
249 u32 reserved4;
250};
251 231
252struct memory_affinity 232 /* Flags (32 bits) */
253{ 233
254 u8 type; 234 u8 enabled:1; /* 00: Use affinity structure */
255 u8 length; 235 u8:7; /* 01-07: Reserved, must be zero */
256 u32 proximity_domain; 236 u8 reserved3[3]; /* 08-31: Reserved, must be zero */
257 u16 reserved3; 237
258 u64 base_address; 238 u8 local_sapic_eid;
259 u64 address_length; 239 u8 proximity_domain_hi[3];
260 u32 reserved4; 240 u32 reserved4; /* Reserved, must be zero */
261 u32 enabled :1;
262 u32 hot_pluggable :1;
263 u32 non_volatile :1;
264 u32 reserved5 :29;
265 u64 reserved6;
266}; 241};
267 242
268struct system_resource_affinity 243struct memory_affinity {
269{ 244 u8 type;
270 ACPI_TABLE_HEADER_DEF 245 u8 length;
271 u32 reserved1; /* Must be value '1' */ 246 u32 proximity_domain;
272 u64 reserved2; 247 u16 reserved3;
248 u64 base_address;
249 u64 address_length;
250 u32 reserved4;
251
252 /* Flags (32 bits) */
253
254 u8 enabled:1; /* 00: Use affinity structure */
255 u8 hot_pluggable:1; /* 01: Memory region is hot pluggable */
256 u8 non_volatile:1; /* 02: Memory is non-volatile */
257 u8:5; /* 03-07: Reserved, must be zero */
258 u8 reserved5[3]; /* 08-31: Reserved, must be zero */
259
260 u64 reserved6; /* Reserved, must be zero */
273}; 261};
274 262
263struct system_resource_affinity {
264 ACPI_TABLE_HEADER_DEF u32 reserved1; /* Must be value '1' */
265 u64 reserved2; /* Reserved, must be zero */
266};
275 267
276/* SLIT - System Locality Distance Information Table */ 268/* SLIT - System Locality Distance Information Table */
277 269
278struct system_locality_info 270struct system_locality_info {
279{ 271 ACPI_TABLE_HEADER_DEF u64 locality_count;
280 ACPI_TABLE_HEADER_DEF 272 u8 entry[1][1];
281 u64 locality_count;
282 u8 entry[1][1];
283}; 273};
284 274
285
286#pragma pack() 275#pragma pack()
287 276
288#endif /* __ACTBL2_H__ */ 277#endif /* __ACTBL2_H__ */
289
diff --git a/include/acpi/actbl71.h b/include/acpi/actbl71.h
index 7b4fb44261f3..10ac05bb36bc 100644
--- a/include/acpi/actbl71.h
+++ b/include/acpi/actbl71.h
@@ -27,7 +27,6 @@
27#ifndef __ACTBL71_H__ 27#ifndef __ACTBL71_H__
28#define __ACTBL71_H__ 28#define __ACTBL71_H__
29 29
30
31/* 0.71 FADT address_space data item bitmasks defines */ 30/* 0.71 FADT address_space data item bitmasks defines */
32/* If the associated bit is zero then it is in memory space else in io space */ 31/* If the associated bit is zero then it is in memory space else in io space */
33 32
@@ -40,105 +39,96 @@
40 39
41/* Only for clarity in declarations */ 40/* Only for clarity in declarations */
42 41
43typedef u64 IO_ADDRESS; 42typedef u64 IO_ADDRESS;
44
45 43
46#pragma pack(1) 44#pragma pack(1)
47struct /* Root System Descriptor Pointer */ 45struct { /* Root System Descriptor Pointer */
48{ 46 NATIVE_CHAR signature[8]; /* contains "RSD PTR " */
49 NATIVE_CHAR signature [8]; /* contains "RSD PTR " */ 47 u8 checksum; /* to make sum of struct == 0 */
50 u8 checksum; /* to make sum of struct == 0 */ 48 NATIVE_CHAR oem_id[6]; /* OEM identification */
51 NATIVE_CHAR oem_id [6]; /* OEM identification */ 49 u8 reserved; /* Must be 0 for 1.0, 2 for 2.0 */
52 u8 reserved; /* Must be 0 for 1.0, 2 for 2.0 */ 50 u64 rsdt_physical_address; /* 64-bit physical address of RSDT */
53 u64 rsdt_physical_address; /* 64-bit physical address of RSDT */
54}; 51};
55 52
56
57/*****************************************/ 53/*****************************************/
58/* IA64 Extensions to ACPI Spec Rev 0.71 */ 54/* IA64 Extensions to ACPI Spec Rev 0.71 */
59/* for the Root System Description Table */ 55/* for the Root System Description Table */
60/*****************************************/ 56/*****************************************/
61struct 57struct {
62{ 58 struct acpi_table_header header; /* Table header */
63 struct acpi_table_header header; /* Table header */ 59 u32 reserved_pad; /* IA64 alignment, must be 0 */
64 u32 reserved_pad; /* IA64 alignment, must be 0 */ 60 u64 table_offset_entry[1]; /* Array of pointers to other */
65 u64 table_offset_entry [1]; /* Array of pointers to other */ 61 /* tables' headers */
66 /* tables' headers */
67}; 62};
68 63
69
70/*******************************************/ 64/*******************************************/
71/* IA64 Extensions to ACPI Spec Rev 0.71 */ 65/* IA64 Extensions to ACPI Spec Rev 0.71 */
72/* for the Firmware ACPI Control Structure */ 66/* for the Firmware ACPI Control Structure */
73/*******************************************/ 67/*******************************************/
74struct 68struct {
75{ 69 NATIVE_CHAR signature[4]; /* signature "FACS" */
76 NATIVE_CHAR signature[4]; /* signature "FACS" */ 70 u32 length; /* length of structure, in bytes */
77 u32 length; /* length of structure, in bytes */ 71 u32 hardware_signature; /* hardware configuration signature */
78 u32 hardware_signature; /* hardware configuration signature */ 72 u32 reserved4; /* must be 0 */
79 u32 reserved4; /* must be 0 */ 73 u64 firmware_waking_vector; /* ACPI OS waking vector */
80 u64 firmware_waking_vector; /* ACPI OS waking vector */ 74 u64 global_lock; /* Global Lock */
81 u64 global_lock; /* Global Lock */ 75 u32 S4bios_f:1; /* Indicates if S4BIOS support is present */
82 u32 S4bios_f : 1; /* Indicates if S4BIOS support is present */ 76 u32 reserved1:31; /* must be 0 */
83 u32 reserved1 : 31; /* must be 0 */ 77 u8 reserved3[28]; /* reserved - must be zero */
84 u8 reserved3 [28]; /* reserved - must be zero */
85}; 78};
86 79
87
88/******************************************/ 80/******************************************/
89/* IA64 Extensions to ACPI Spec Rev 0.71 */ 81/* IA64 Extensions to ACPI Spec Rev 0.71 */
90/* for the Fixed ACPI Description Table */ 82/* for the Fixed ACPI Description Table */
91/******************************************/ 83/******************************************/
92struct 84struct {
93{ 85 struct acpi_table_header header; /* table header */
94 struct acpi_table_header header; /* table header */ 86 u32 reserved_pad; /* IA64 alignment, must be 0 */
95 u32 reserved_pad; /* IA64 alignment, must be 0 */ 87 u64 firmware_ctrl; /* 64-bit Physical address of FACS */
96 u64 firmware_ctrl; /* 64-bit Physical address of FACS */ 88 u64 dsdt; /* 64-bit Physical address of DSDT */
97 u64 dsdt; /* 64-bit Physical address of DSDT */ 89 u8 model; /* System Interrupt Model */
98 u8 model; /* System Interrupt Model */ 90 u8 address_space; /* Address Space Bitmask */
99 u8 address_space; /* Address Space Bitmask */ 91 u16 sci_int; /* System vector of SCI interrupt */
100 u16 sci_int; /* System vector of SCI interrupt */ 92 u8 acpi_enable; /* value to write to smi_cmd to enable ACPI */
101 u8 acpi_enable; /* value to write to smi_cmd to enable ACPI */ 93 u8 acpi_disable; /* value to write to smi_cmd to disable ACPI */
102 u8 acpi_disable; /* value to write to smi_cmd to disable ACPI */ 94 u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
103 u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */ 95 u8 reserved2; /* reserved - must be zero */
104 u8 reserved2; /* reserved - must be zero */ 96 u64 smi_cmd; /* Port address of SMI command port */
105 u64 smi_cmd; /* Port address of SMI command port */ 97 u64 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */
106 u64 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */ 98 u64 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */
107 u64 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */ 99 u64 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */
108 u64 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */ 100 u64 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */
109 u64 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */ 101 u64 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */
110 u64 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */ 102 u64 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
111 u64 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ 103 u64 gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */
112 u64 gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */ 104 u64 gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */
113 u64 gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */ 105 u8 pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */
114 u8 pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */ 106 u8 pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */
115 u8 pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */ 107 u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */
116 u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */ 108 u8 pm_tm_len; /* Byte Length of ports at pm_tm_blk */
117 u8 pm_tm_len; /* Byte Length of ports at pm_tm_blk */ 109 u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */
118 u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */ 110 u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */
119 u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */ 111 u8 gpe1_base; /* offset in gpe model where gpe1 events start */
120 u8 gpe1_base; /* offset in gpe model where gpe1 events start */ 112 u8 reserved3; /* reserved */
121 u8 reserved3; /* reserved */ 113 u16 plvl2_lat; /* worst case HW latency to enter/exit C2 state */
122 u16 plvl2_lat; /* worst case HW latency to enter/exit C2 state */ 114 u16 plvl3_lat; /* worst case HW latency to enter/exit C3 state */
123 u16 plvl3_lat; /* worst case HW latency to enter/exit C3 state */ 115 u8 day_alrm; /* index to day-of-month alarm in RTC CMOS RAM */
124 u8 day_alrm; /* index to day-of-month alarm in RTC CMOS RAM */ 116 u8 mon_alrm; /* index to month-of-year alarm in RTC CMOS RAM */
125 u8 mon_alrm; /* index to month-of-year alarm in RTC CMOS RAM */ 117 u8 century; /* index to century in RTC CMOS RAM */
126 u8 century; /* index to century in RTC CMOS RAM */ 118 u8 reserved4; /* reserved */
127 u8 reserved4; /* reserved */ 119 u32 flush_cash:1; /* PAL_FLUSH_CACHE is correctly supported */
128 u32 flush_cash : 1; /* PAL_FLUSH_CACHE is correctly supported */ 120 u32 reserved5:1; /* reserved - must be zero */
129 u32 reserved5 : 1; /* reserved - must be zero */ 121 u32 proc_c1:1; /* all processors support C1 state */
130 u32 proc_c1 : 1; /* all processors support C1 state */ 122 u32 plvl2_up:1; /* C2 state works on MP system */
131 u32 plvl2_up : 1; /* C2 state works on MP system */ 123 u32 pwr_button:1; /* Power button is handled as a generic feature */
132 u32 pwr_button : 1; /* Power button is handled as a generic feature */ 124 u32 sleep_button:1; /* Sleep button is handled as a generic feature, or not present */
133 u32 sleep_button : 1; /* Sleep button is handled as a generic feature, or not present */ 125 u32 fixed_rTC:1; /* RTC wakeup stat not in fixed register space */
134 u32 fixed_rTC : 1; /* RTC wakeup stat not in fixed register space */ 126 u32 rtcs4:1; /* RTC wakeup stat not possible from S4 */
135 u32 rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ 127 u32 tmr_val_ext:1; /* tmr_val is 32 bits */
136 u32 tmr_val_ext : 1; /* tmr_val is 32 bits */ 128 u32 dock_cap:1; /* Supports Docking */
137 u32 dock_cap : 1; /* Supports Docking */ 129 u32 reserved6:22; /* reserved - must be zero */
138 u32 reserved6 : 22; /* reserved - must be zero */
139}; 130};
140 131
141#pragma pack() 132#pragma pack()
142 133
143#endif /* __ACTBL71_H__ */ 134#endif /* __ACTBL71_H__ */
144
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
index 3a451dc48ac8..254f4b06e7ef 100644
--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -46,35 +46,31 @@
46 46
47/*! [Begin] no source code translation (keep the typedefs) */ 47/*! [Begin] no source code translation (keep the typedefs) */
48 48
49
50
51/* 49/*
52 * Data type ranges 50 * Data type ranges
53 * Note: These macros are designed to be compiler independent as well as 51 * Note: These macros are designed to be compiler independent as well as
54 * working around problems that some 32-bit compilers have with 64-bit 52 * working around problems that some 32-bit compilers have with 64-bit
55 * constants. 53 * constants.
56 */ 54 */
57#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 55#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */
58#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 56#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */
59#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 57#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */
60#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 58#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */
61#define ACPI_ASCII_MAX 0x7F 59#define ACPI_ASCII_MAX 0x7F
62 60
63
64#ifdef DEFINE_ALTERNATE_TYPES 61#ifdef DEFINE_ALTERNATE_TYPES
65/* 62/*
66 * Types used only in translated source, defined here to enable 63 * Types used only in translated source, defined here to enable
67 * cross-platform compilation only. 64 * cross-platform compilation only.
68 */ 65 */
69typedef int s32; 66typedef int s32;
70typedef unsigned char u8; 67typedef unsigned char u8;
71typedef unsigned short u16; 68typedef unsigned short u16;
72typedef unsigned int u32; 69typedef unsigned int u32;
73typedef COMPILER_DEPENDENT_UINT64 u64; 70typedef COMPILER_DEPENDENT_UINT64 u64;
74 71
75#endif 72#endif
76 73
77
78/* 74/*
79 * Data types - Fixed across all compilation models (16/32/64) 75 * Data types - Fixed across all compilation models (16/32/64)
80 * 76 *
@@ -102,30 +98,29 @@ typedef COMPILER_DEPENDENT_UINT64 u64;
102/* 98/*
103 * 64-bit type definitions 99 * 64-bit type definitions
104 */ 100 */
105typedef unsigned char UINT8; 101typedef unsigned char UINT8;
106typedef unsigned char BOOLEAN; 102typedef unsigned char BOOLEAN;
107typedef unsigned short UINT16; 103typedef unsigned short UINT16;
108typedef int INT32; 104typedef int INT32;
109typedef unsigned int UINT32; 105typedef unsigned int UINT32;
110typedef COMPILER_DEPENDENT_INT64 INT64; 106typedef COMPILER_DEPENDENT_INT64 INT64;
111typedef COMPILER_DEPENDENT_UINT64 UINT64; 107typedef COMPILER_DEPENDENT_UINT64 UINT64;
112 108
113/*! [End] no source code translation !*/ 109/*! [End] no source code translation !*/
114 110
115typedef s64 acpi_native_int; 111typedef s64 acpi_native_int;
116typedef u64 acpi_native_uint; 112typedef u64 acpi_native_uint;
117 113
118typedef u64 acpi_table_ptr; 114typedef u64 acpi_table_ptr;
119typedef u64 acpi_io_address; 115typedef u64 acpi_io_address;
120typedef u64 acpi_physical_address; 116typedef u64 acpi_physical_address;
121typedef u64 acpi_size; 117typedef u64 acpi_size;
122 118
123#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */ 119#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */
124#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */ 120#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */
125#define ACPI_MAX_PTR ACPI_UINT64_MAX 121#define ACPI_MAX_PTR ACPI_UINT64_MAX
126#define ACPI_SIZE_MAX ACPI_UINT64_MAX 122#define ACPI_SIZE_MAX ACPI_UINT64_MAX
127 123
128
129#elif ACPI_MACHINE_WIDTH == 16 124#elif ACPI_MACHINE_WIDTH == 16
130 125
131/*! [Begin] no source code translation (keep the typedefs) */ 126/*! [Begin] no source code translation (keep the typedefs) */
@@ -133,32 +128,31 @@ typedef u64 acpi_size;
133/* 128/*
134 * 16-bit type definitions 129 * 16-bit type definitions
135 */ 130 */
136typedef unsigned char UINT8; 131typedef unsigned char UINT8;
137typedef unsigned char BOOLEAN; 132typedef unsigned char BOOLEAN;
138typedef unsigned int UINT16; 133typedef unsigned int UINT16;
139typedef long INT32; 134typedef long INT32;
140typedef int INT16; 135typedef int INT16;
141typedef unsigned long UINT32; 136typedef unsigned long UINT32;
142 137
143struct 138struct {
144{ 139 UINT32 Lo;
145 UINT32 Lo; 140 UINT32 Hi;
146 UINT32 Hi;
147}; 141};
148 142
149/*! [End] no source code translation !*/ 143/*! [End] no source code translation !*/
150 144
151typedef u16 acpi_native_uint; 145typedef u16 acpi_native_uint;
152typedef s16 acpi_native_int; 146typedef s16 acpi_native_int;
153 147
154typedef u32 acpi_table_ptr; 148typedef u32 acpi_table_ptr;
155typedef u32 acpi_io_address; 149typedef u32 acpi_io_address;
156typedef char *acpi_physical_address; 150typedef char *acpi_physical_address;
157typedef u16 acpi_size; 151typedef u16 acpi_size;
158 152
159#define ALIGNED_ADDRESS_BOUNDARY 0x00000002 153#define ALIGNED_ADDRESS_BOUNDARY 0x00000002
160#define ACPI_MISALIGNED_TRANSFERS 154#define ACPI_MISALIGNED_TRANSFERS
161#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ 155#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */
162#define ACPI_MAX_PTR ACPI_UINT16_MAX 156#define ACPI_MAX_PTR ACPI_UINT16_MAX
163#define ACPI_SIZE_MAX ACPI_UINT16_MAX 157#define ACPI_SIZE_MAX ACPI_UINT16_MAX
164 158
@@ -168,7 +162,6 @@ typedef u16 acpi_size;
168 */ 162 */
169#define ACPI_NO_INTEGER64_SUPPORT 163#define ACPI_NO_INTEGER64_SUPPORT
170 164
171
172#elif ACPI_MACHINE_WIDTH == 32 165#elif ACPI_MACHINE_WIDTH == 32
173 166
174/*! [Begin] no source code translation (keep the typedefs) */ 167/*! [Begin] no source code translation (keep the typedefs) */
@@ -176,23 +169,23 @@ typedef u16 acpi_size;
176/* 169/*
177 * 32-bit type definitions (default) 170 * 32-bit type definitions (default)
178 */ 171 */
179typedef unsigned char UINT8; 172typedef unsigned char UINT8;
180typedef unsigned char BOOLEAN; 173typedef unsigned char BOOLEAN;
181typedef unsigned short UINT16; 174typedef unsigned short UINT16;
182typedef int INT32; 175typedef int INT32;
183typedef unsigned int UINT32; 176typedef unsigned int UINT32;
184typedef COMPILER_DEPENDENT_INT64 INT64; 177typedef COMPILER_DEPENDENT_INT64 INT64;
185typedef COMPILER_DEPENDENT_UINT64 UINT64; 178typedef COMPILER_DEPENDENT_UINT64 UINT64;
186 179
187/*! [End] no source code translation !*/ 180/*! [End] no source code translation !*/
188 181
189typedef s32 acpi_native_int; 182typedef s32 acpi_native_int;
190typedef u32 acpi_native_uint; 183typedef u32 acpi_native_uint;
191 184
192typedef u64 acpi_table_ptr; 185typedef u64 acpi_table_ptr;
193typedef u32 acpi_io_address; 186typedef u32 acpi_io_address;
194typedef u64 acpi_physical_address; 187typedef u64 acpi_physical_address;
195typedef u32 acpi_size; 188typedef u32 acpi_size;
196 189
197#define ALIGNED_ADDRESS_BOUNDARY 0x00000004 190#define ALIGNED_ADDRESS_BOUNDARY 0x00000004
198#define ACPI_MISALIGNED_TRANSFERS 191#define ACPI_MISALIGNED_TRANSFERS
@@ -203,29 +196,27 @@ typedef u32 acpi_size;
203#error unknown ACPI_MACHINE_WIDTH 196#error unknown ACPI_MACHINE_WIDTH
204#endif 197#endif
205 198
206
207/* 199/*
208 * Miscellaneous common types 200 * This type is used for bitfields in ACPI tables. The only type that is
201 * even remotely portable is u8. Anything else is not portable, so
202 * do not add any more bitfield types.
209 */ 203 */
210typedef u16 UINT16_BIT; 204typedef u8 UINT8_BIT;
211typedef u32 UINT32_BIT; 205typedef acpi_native_uint ACPI_PTRDIFF;
212typedef acpi_native_uint ACPI_PTRDIFF;
213 206
214/* 207/*
215 * Pointer overlays to avoid lots of typecasting for 208 * Pointer overlays to avoid lots of typecasting for
216 * code that accepts both physical and logical pointers. 209 * code that accepts both physical and logical pointers.
217 */ 210 */
218union acpi_pointers 211union acpi_pointers {
219{ 212 acpi_physical_address physical;
220 acpi_physical_address physical; 213 void *logical;
221 void *logical; 214 acpi_table_ptr value;
222 acpi_table_ptr value;
223}; 215};
224 216
225struct acpi_pointer 217struct acpi_pointer {
226{ 218 u32 pointer_type;
227 u32 pointer_type; 219 union acpi_pointers pointer;
228 union acpi_pointers pointer;
229}; 220};
230 221
231/* pointer_types for above */ 222/* pointer_types for above */
@@ -243,6 +234,14 @@ struct acpi_pointer
243#define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER 234#define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER
244#define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER 235#define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER
245 236
237/*
238 * If acpi_cache_t was not defined in the OS-dependent header,
239 * define it now. This is typically the case where the local cache
240 * manager implementation is to be used (ACPI_USE_LOCAL_CACHE)
241 */
242#ifndef acpi_cache_t
243#define acpi_cache_t struct acpi_memory_list
244#endif
246 245
247/* 246/*
248 * Useful defines 247 * Useful defines
@@ -261,34 +260,29 @@ struct acpi_pointer
261#define NULL (void *) 0 260#define NULL (void *) 0
262#endif 261#endif
263 262
264
265/* 263/*
266 * Local datatypes 264 * Local datatypes
267 */ 265 */
268typedef u32 acpi_status; /* All ACPI Exceptions */ 266typedef u32 acpi_status; /* All ACPI Exceptions */
269typedef u32 acpi_name; /* 4-byte ACPI name */ 267typedef u32 acpi_name; /* 4-byte ACPI name */
270typedef char * acpi_string; /* Null terminated ASCII string */ 268typedef char *acpi_string; /* Null terminated ASCII string */
271typedef void * acpi_handle; /* Actually a ptr to an Node */ 269typedef void *acpi_handle; /* Actually a ptr to an Node */
272 270
273struct uint64_struct 271struct uint64_struct {
274{ 272 u32 lo;
275 u32 lo; 273 u32 hi;
276 u32 hi;
277}; 274};
278 275
279union uint64_overlay 276union uint64_overlay {
280{ 277 u64 full;
281 u64 full; 278 struct uint64_struct part;
282 struct uint64_struct part;
283}; 279};
284 280
285struct uint32_struct 281struct uint32_struct {
286{ 282 u32 lo;
287 u32 lo; 283 u32 hi;
288 u32 hi;
289}; 284};
290 285
291
292/* 286/*
293 * Acpi integer width. In ACPI version 1, integers are 287 * Acpi integer width. In ACPI version 1, integers are
294 * 32 bits. In ACPI version 2, integers are 64 bits. 288 * 32 bits. In ACPI version 2, integers are 64 bits.
@@ -300,26 +294,24 @@ struct uint32_struct
300 294
301/* 32-bit integers only, no 64-bit support */ 295/* 32-bit integers only, no 64-bit support */
302 296
303typedef u32 acpi_integer; 297typedef u32 acpi_integer;
304#define ACPI_INTEGER_MAX ACPI_UINT32_MAX 298#define ACPI_INTEGER_MAX ACPI_UINT32_MAX
305#define ACPI_INTEGER_BIT_SIZE 32 299#define ACPI_INTEGER_BIT_SIZE 32
306#define ACPI_MAX_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */ 300#define ACPI_MAX_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */
307
308#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */
309 301
302#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */
310 303
311#else 304#else
312 305
313/* 64-bit integers */ 306/* 64-bit integers */
314 307
315typedef u64 acpi_integer; 308typedef u64 acpi_integer;
316#define ACPI_INTEGER_MAX ACPI_UINT64_MAX 309#define ACPI_INTEGER_MAX ACPI_UINT64_MAX
317#define ACPI_INTEGER_BIT_SIZE 64 310#define ACPI_INTEGER_BIT_SIZE 64
318#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 311#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */
319
320 312
321#if ACPI_MACHINE_WIDTH == 64 313#if ACPI_MACHINE_WIDTH == 64
322#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ 314#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */
323#endif 315#endif
324#endif 316#endif
325 317
@@ -333,7 +325,6 @@ typedef u64 acpi_integer;
333 */ 325 */
334#define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR) 326#define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR)
335 327
336
337/* 328/*
338 * Initialization sequence 329 * Initialization sequence
339 */ 330 */
@@ -400,7 +391,7 @@ typedef u64 acpi_integer;
400/* 391/*
401 * Table types. These values are passed to the table related APIs 392 * Table types. These values are passed to the table related APIs
402 */ 393 */
403typedef u32 acpi_table_type; 394typedef u32 acpi_table_type;
404 395
405#define ACPI_TABLE_RSDP (acpi_table_type) 0 396#define ACPI_TABLE_RSDP (acpi_table_type) 0
406#define ACPI_TABLE_DSDT (acpi_table_type) 1 397#define ACPI_TABLE_DSDT (acpi_table_type) 1
@@ -421,22 +412,22 @@ typedef u32 acpi_table_type;
421 * NOTE: Types must be kept in sync with the global acpi_ns_properties 412 * NOTE: Types must be kept in sync with the global acpi_ns_properties
422 * and acpi_ns_type_names arrays. 413 * and acpi_ns_type_names arrays.
423 */ 414 */
424typedef u32 acpi_object_type; 415typedef u32 acpi_object_type;
425 416
426#define ACPI_TYPE_ANY 0x00 417#define ACPI_TYPE_ANY 0x00
427#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 418#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */
428#define ACPI_TYPE_STRING 0x02 419#define ACPI_TYPE_STRING 0x02
429#define ACPI_TYPE_BUFFER 0x03 420#define ACPI_TYPE_BUFFER 0x03
430#define ACPI_TYPE_PACKAGE 0x04 /* byte_const, multiple data_term/Constant/super_name */ 421#define ACPI_TYPE_PACKAGE 0x04 /* byte_const, multiple data_term/Constant/super_name */
431#define ACPI_TYPE_FIELD_UNIT 0x05 422#define ACPI_TYPE_FIELD_UNIT 0x05
432#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 423#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */
433#define ACPI_TYPE_EVENT 0x07 424#define ACPI_TYPE_EVENT 0x07
434#define ACPI_TYPE_METHOD 0x08 /* Name, byte_const, multiple Code */ 425#define ACPI_TYPE_METHOD 0x08 /* Name, byte_const, multiple Code */
435#define ACPI_TYPE_MUTEX 0x09 426#define ACPI_TYPE_MUTEX 0x09
436#define ACPI_TYPE_REGION 0x0A 427#define ACPI_TYPE_REGION 0x0A
437#define ACPI_TYPE_POWER 0x0B /* Name,byte_const,word_const,multi Node */ 428#define ACPI_TYPE_POWER 0x0B /* Name,byte_const,word_const,multi Node */
438#define ACPI_TYPE_PROCESSOR 0x0C /* Name,byte_const,Dword_const,byte_const,multi nm_o */ 429#define ACPI_TYPE_PROCESSOR 0x0C /* Name,byte_const,Dword_const,byte_const,multi nm_o */
439#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 430#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */
440#define ACPI_TYPE_BUFFER_FIELD 0x0E 431#define ACPI_TYPE_BUFFER_FIELD 0x0E
441#define ACPI_TYPE_DDB_HANDLE 0x0F 432#define ACPI_TYPE_DDB_HANDLE 0x0F
442#define ACPI_TYPE_DEBUG_OBJECT 0x10 433#define ACPI_TYPE_DEBUG_OBJECT 0x10
@@ -453,16 +444,16 @@ typedef u32 acpi_object_type;
453#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 444#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11
454#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 445#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12
455#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 446#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13
456#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, ref_of, Index */ 447#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, ref_of, Index */
457#define ACPI_TYPE_LOCAL_ALIAS 0x15 448#define ACPI_TYPE_LOCAL_ALIAS 0x15
458#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 449#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16
459#define ACPI_TYPE_LOCAL_NOTIFY 0x17 450#define ACPI_TYPE_LOCAL_NOTIFY 0x17
460#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 451#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18
461#define ACPI_TYPE_LOCAL_RESOURCE 0x19 452#define ACPI_TYPE_LOCAL_RESOURCE 0x19
462#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 453#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A
463#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple object_list Nodes */ 454#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple object_list Nodes */
464 455
465#define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 456#define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */
466 457
467/* 458/*
468 * These are special object types that never appear in 459 * These are special object types that never appear in
@@ -506,7 +497,7 @@ typedef u32 acpi_object_type;
506#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) 497#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE)
507#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) 498#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
508#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) 499#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
509#define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ 500#define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */
510#define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF 501#define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF
511 502
512/* 503/*
@@ -519,7 +510,7 @@ typedef u32 acpi_object_type;
519/* 510/*
520 * Event Types: Fixed & General Purpose 511 * Event Types: Fixed & General Purpose
521 */ 512 */
522typedef u32 acpi_event_type; 513typedef u32 acpi_event_type;
523 514
524/* 515/*
525 * Fixed events 516 * Fixed events
@@ -547,7 +538,7 @@ typedef u32 acpi_event_type;
547 * | +----- Set? 538 * | +----- Set?
548 * +----------- <Reserved> 539 * +----------- <Reserved>
549 */ 540 */
550typedef u32 acpi_event_status; 541typedef u32 acpi_event_status;
551 542
552#define ACPI_EVENT_FLAG_DISABLED (acpi_event_status) 0x00 543#define ACPI_EVENT_FLAG_DISABLED (acpi_event_status) 0x00
553#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01 544#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01
@@ -564,7 +555,6 @@ typedef u32 acpi_event_status;
564#define ACPI_GPE_ENABLE 0 555#define ACPI_GPE_ENABLE 0
565#define ACPI_GPE_DISABLE 1 556#define ACPI_GPE_DISABLE 1
566 557
567
568/* 558/*
569 * GPE info flags - Per GPE 559 * GPE info flags - Per GPE
570 * +-+-+-+---+---+-+ 560 * +-+-+-+---+---+-+
@@ -585,22 +575,22 @@ typedef u32 acpi_event_status;
585#define ACPI_GPE_TYPE_MASK (u8) 0x06 575#define ACPI_GPE_TYPE_MASK (u8) 0x06
586#define ACPI_GPE_TYPE_WAKE_RUN (u8) 0x06 576#define ACPI_GPE_TYPE_WAKE_RUN (u8) 0x06
587#define ACPI_GPE_TYPE_WAKE (u8) 0x02 577#define ACPI_GPE_TYPE_WAKE (u8) 0x02
588#define ACPI_GPE_TYPE_RUNTIME (u8) 0x04 /* Default */ 578#define ACPI_GPE_TYPE_RUNTIME (u8) 0x04 /* Default */
589 579
590#define ACPI_GPE_DISPATCH_MASK (u8) 0x18 580#define ACPI_GPE_DISPATCH_MASK (u8) 0x18
591#define ACPI_GPE_DISPATCH_HANDLER (u8) 0x08 581#define ACPI_GPE_DISPATCH_HANDLER (u8) 0x08
592#define ACPI_GPE_DISPATCH_METHOD (u8) 0x10 582#define ACPI_GPE_DISPATCH_METHOD (u8) 0x10
593#define ACPI_GPE_DISPATCH_NOT_USED (u8) 0x00 /* Default */ 583#define ACPI_GPE_DISPATCH_NOT_USED (u8) 0x00 /* Default */
594 584
595#define ACPI_GPE_RUN_ENABLE_MASK (u8) 0x20 585#define ACPI_GPE_RUN_ENABLE_MASK (u8) 0x20
596#define ACPI_GPE_RUN_ENABLED (u8) 0x20 586#define ACPI_GPE_RUN_ENABLED (u8) 0x20
597#define ACPI_GPE_RUN_DISABLED (u8) 0x00 /* Default */ 587#define ACPI_GPE_RUN_DISABLED (u8) 0x00 /* Default */
598 588
599#define ACPI_GPE_WAKE_ENABLE_MASK (u8) 0x40 589#define ACPI_GPE_WAKE_ENABLE_MASK (u8) 0x40
600#define ACPI_GPE_WAKE_ENABLED (u8) 0x40 590#define ACPI_GPE_WAKE_ENABLED (u8) 0x40
601#define ACPI_GPE_WAKE_DISABLED (u8) 0x00 /* Default */ 591#define ACPI_GPE_WAKE_DISABLED (u8) 0x00 /* Default */
602 592
603#define ACPI_GPE_ENABLE_MASK (u8) 0x60 /* Both run/wake */ 593#define ACPI_GPE_ENABLE_MASK (u8) 0x60 /* Both run/wake */
604 594
605#define ACPI_GPE_SYSTEM_MASK (u8) 0x80 595#define ACPI_GPE_SYSTEM_MASK (u8) 0x80
606#define ACPI_GPE_SYSTEM_RUNNING (u8) 0x80 596#define ACPI_GPE_SYSTEM_RUNNING (u8) 0x80
@@ -609,13 +599,12 @@ typedef u32 acpi_event_status;
609/* 599/*
610 * Flags for GPE and Lock interfaces 600 * Flags for GPE and Lock interfaces
611 */ 601 */
612#define ACPI_EVENT_WAKE_ENABLE 0x2 /* acpi_gpe_enable */ 602#define ACPI_EVENT_WAKE_ENABLE 0x2 /* acpi_gpe_enable */
613#define ACPI_EVENT_WAKE_DISABLE 0x2 /* acpi_gpe_disable */ 603#define ACPI_EVENT_WAKE_DISABLE 0x2 /* acpi_gpe_disable */
614 604
615#define ACPI_NOT_ISR 0x1 605#define ACPI_NOT_ISR 0x1
616#define ACPI_ISR 0x0 606#define ACPI_ISR 0x0
617 607
618
619/* Notify types */ 608/* Notify types */
620 609
621#define ACPI_SYSTEM_NOTIFY 0x1 610#define ACPI_SYSTEM_NOTIFY 0x1
@@ -625,10 +614,9 @@ typedef u32 acpi_event_status;
625 614
626#define ACPI_MAX_SYS_NOTIFY 0x7f 615#define ACPI_MAX_SYS_NOTIFY 0x7f
627 616
628
629/* Address Space (Operation Region) Types */ 617/* Address Space (Operation Region) Types */
630 618
631typedef u8 acpi_adr_space_type; 619typedef u8 acpi_adr_space_type;
632 620
633#define ACPI_ADR_SPACE_SYSTEM_MEMORY (acpi_adr_space_type) 0 621#define ACPI_ADR_SPACE_SYSTEM_MEMORY (acpi_adr_space_type) 0
634#define ACPI_ADR_SPACE_SYSTEM_IO (acpi_adr_space_type) 1 622#define ACPI_ADR_SPACE_SYSTEM_IO (acpi_adr_space_type) 1
@@ -640,7 +628,6 @@ typedef u8 acpi_adr_space_type;
640#define ACPI_ADR_SPACE_DATA_TABLE (acpi_adr_space_type) 7 628#define ACPI_ADR_SPACE_DATA_TABLE (acpi_adr_space_type) 7
641#define ACPI_ADR_SPACE_FIXED_HARDWARE (acpi_adr_space_type) 127 629#define ACPI_ADR_SPACE_FIXED_HARDWARE (acpi_adr_space_type) 127
642 630
643
644/* 631/*
645 * bit_register IDs 632 * bit_register IDs
646 * These are bitfields defined within the full ACPI registers 633 * These are bitfields defined within the full ACPI registers
@@ -674,74 +661,62 @@ typedef u8 acpi_adr_space_type;
674#define ACPI_BITREG_MAX 0x15 661#define ACPI_BITREG_MAX 0x15
675#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 662#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1
676 663
677
678/* 664/*
679 * External ACPI object definition 665 * External ACPI object definition
680 */ 666 */
681union acpi_object 667union acpi_object {
682{ 668 acpi_object_type type; /* See definition of acpi_ns_type for values */
683 acpi_object_type type; /* See definition of acpi_ns_type for values */ 669 struct {
684 struct 670 acpi_object_type type;
685 { 671 acpi_integer value; /* The actual number */
686 acpi_object_type type;
687 acpi_integer value; /* The actual number */
688 } integer; 672 } integer;
689 673
690 struct 674 struct {
691 { 675 acpi_object_type type;
692 acpi_object_type type; 676 u32 length; /* # of bytes in string, excluding trailing null */
693 u32 length; /* # of bytes in string, excluding trailing null */ 677 char *pointer; /* points to the string value */
694 char *pointer; /* points to the string value */
695 } string; 678 } string;
696 679
697 struct 680 struct {
698 { 681 acpi_object_type type;
699 acpi_object_type type; 682 u32 length; /* # of bytes in buffer */
700 u32 length; /* # of bytes in buffer */ 683 u8 *pointer; /* points to the buffer */
701 u8 *pointer; /* points to the buffer */
702 } buffer; 684 } buffer;
703 685
704 struct 686 struct {
705 { 687 acpi_object_type type;
706 acpi_object_type type; 688 u32 fill1;
707 u32 fill1; 689 acpi_handle handle; /* object reference */
708 acpi_handle handle; /* object reference */
709 } reference; 690 } reference;
710 691
711 struct 692 struct {
712 { 693 acpi_object_type type;
713 acpi_object_type type; 694 u32 count; /* # of elements in package */
714 u32 count; /* # of elements in package */ 695 union acpi_object *elements; /* Pointer to an array of ACPI_OBJECTs */
715 union acpi_object *elements; /* Pointer to an array of ACPI_OBJECTs */
716 } package; 696 } package;
717 697
718 struct 698 struct {
719 { 699 acpi_object_type type;
720 acpi_object_type type; 700 u32 proc_id;
721 u32 proc_id; 701 acpi_io_address pblk_address;
722 acpi_io_address pblk_address; 702 u32 pblk_length;
723 u32 pblk_length;
724 } processor; 703 } processor;
725 704
726 struct 705 struct {
727 { 706 acpi_object_type type;
728 acpi_object_type type; 707 u32 system_level;
729 u32 system_level; 708 u32 resource_order;
730 u32 resource_order;
731 } power_resource; 709 } power_resource;
732}; 710};
733 711
734
735/* 712/*
736 * List of objects, used as a parameter list for control method evaluation 713 * List of objects, used as a parameter list for control method evaluation
737 */ 714 */
738struct acpi_object_list 715struct acpi_object_list {
739{ 716 u32 count;
740 u32 count; 717 union acpi_object *pointer;
741 union acpi_object *pointer;
742}; 718};
743 719
744
745/* 720/*
746 * Miscellaneous common Data Structures used by the interfaces 721 * Miscellaneous common Data Structures used by the interfaces
747 */ 722 */
@@ -749,13 +724,11 @@ struct acpi_object_list
749#define ACPI_ALLOCATE_BUFFER (acpi_size) (-1) 724#define ACPI_ALLOCATE_BUFFER (acpi_size) (-1)
750#define ACPI_ALLOCATE_LOCAL_BUFFER (acpi_size) (-2) 725#define ACPI_ALLOCATE_LOCAL_BUFFER (acpi_size) (-2)
751 726
752struct acpi_buffer 727struct acpi_buffer {
753{ 728 acpi_size length; /* Length in bytes of the buffer */
754 acpi_size length; /* Length in bytes of the buffer */ 729 void *pointer; /* pointer to buffer */
755 void *pointer; /* pointer to buffer */
756}; 730};
757 731
758
759/* 732/*
760 * name_type for acpi_get_name 733 * name_type for acpi_get_name
761 */ 734 */
@@ -763,7 +736,6 @@ struct acpi_buffer
763#define ACPI_SINGLE_NAME 1 736#define ACPI_SINGLE_NAME 1
764#define ACPI_NAME_TYPE_MAX 1 737#define ACPI_NAME_TYPE_MAX 1
765 738
766
767/* 739/*
768 * Structure and flags for acpi_get_system_info 740 * Structure and flags for acpi_get_system_info
769 */ 741 */
@@ -772,139 +744,106 @@ struct acpi_buffer
772#define ACPI_SYS_MODE_LEGACY 0x0002 744#define ACPI_SYS_MODE_LEGACY 0x0002
773#define ACPI_SYS_MODES_MASK 0x0003 745#define ACPI_SYS_MODES_MASK 0x0003
774 746
775
776/* 747/*
777 * ACPI Table Info. One per ACPI table _type_ 748 * ACPI Table Info. One per ACPI table _type_
778 */ 749 */
779struct acpi_table_info 750struct acpi_table_info {
780{ 751 u32 count;
781 u32 count;
782}; 752};
783 753
784
785/* 754/*
786 * System info returned by acpi_get_system_info() 755 * System info returned by acpi_get_system_info()
787 */ 756 */
788struct acpi_system_info 757struct acpi_system_info {
789{ 758 u32 acpi_ca_version;
790 u32 acpi_ca_version; 759 u32 flags;
791 u32 flags; 760 u32 timer_resolution;
792 u32 timer_resolution; 761 u32 reserved1;
793 u32 reserved1; 762 u32 reserved2;
794 u32 reserved2; 763 u32 debug_level;
795 u32 debug_level; 764 u32 debug_layer;
796 u32 debug_layer; 765 u32 num_table_types;
797 u32 num_table_types; 766 struct acpi_table_info table_info[NUM_ACPI_TABLE_TYPES];
798 struct acpi_table_info table_info [NUM_ACPI_TABLE_TYPES];
799}; 767};
800 768
801
802/* 769/*
803 * Types specific to the OS service interfaces 770 * Types specific to the OS service interfaces
804 */ 771 */
805typedef u32 772typedef u32(ACPI_SYSTEM_XFACE * acpi_osd_handler) (void *context);
806(ACPI_SYSTEM_XFACE *acpi_osd_handler) (
807 void *context);
808 773
809typedef void 774typedef void
810(ACPI_SYSTEM_XFACE *acpi_osd_exec_callback) ( 775 (ACPI_SYSTEM_XFACE * acpi_osd_exec_callback) (void *context);
811 void *context);
812 776
813/* 777/*
814 * Various handlers and callback procedures 778 * Various handlers and callback procedures
815 */ 779 */
816typedef 780typedef u32(*acpi_event_handler) (void *context);
817u32 (*acpi_event_handler) (
818 void *context);
819 781
820typedef 782typedef
821void (*acpi_notify_handler) ( 783void (*acpi_notify_handler) (acpi_handle device, u32 value, void *context);
822 acpi_handle device,
823 u32 value,
824 void *context);
825 784
826typedef 785typedef
827void (*acpi_object_handler) ( 786void (*acpi_object_handler) (acpi_handle object, u32 function, void *data);
828 acpi_handle object,
829 u32 function,
830 void *data);
831 787
832typedef 788typedef acpi_status(*acpi_init_handler) (acpi_handle object, u32 function);
833acpi_status (*acpi_init_handler) (
834 acpi_handle object,
835 u32 function);
836 789
837#define ACPI_INIT_DEVICE_INI 1 790#define ACPI_INIT_DEVICE_INI 1
838 791
839typedef 792typedef
840acpi_status (*acpi_exception_handler) ( 793acpi_status(*acpi_exception_handler) (acpi_status aml_status,
841 acpi_status aml_status, 794 acpi_name name,
842 acpi_name name, 795 u16 opcode,
843 u16 opcode, 796 u32 aml_offset, void *context);
844 u32 aml_offset,
845 void *context);
846
847 797
848/* Address Spaces (For Operation Regions) */ 798/* Address Spaces (For Operation Regions) */
849 799
850typedef 800typedef
851acpi_status (*acpi_adr_space_handler) ( 801acpi_status(*acpi_adr_space_handler) (u32 function,
852 u32 function, 802 acpi_physical_address address,
853 acpi_physical_address address, 803 u32 bit_width,
854 u32 bit_width, 804 acpi_integer * value,
855 acpi_integer *value, 805 void *handler_context,
856 void *handler_context, 806 void *region_context);
857 void *region_context);
858 807
859#define ACPI_DEFAULT_HANDLER NULL 808#define ACPI_DEFAULT_HANDLER NULL
860 809
861
862typedef 810typedef
863acpi_status (*acpi_adr_space_setup) ( 811acpi_status(*acpi_adr_space_setup) (acpi_handle region_handle,
864 acpi_handle region_handle, 812 u32 function,
865 u32 function, 813 void *handler_context,
866 void *handler_context, 814 void **region_context);
867 void **region_context);
868 815
869#define ACPI_REGION_ACTIVATE 0 816#define ACPI_REGION_ACTIVATE 0
870#define ACPI_REGION_DEACTIVATE 1 817#define ACPI_REGION_DEACTIVATE 1
871 818
872typedef 819typedef
873acpi_status (*acpi_walk_callback) ( 820acpi_status(*acpi_walk_callback) (acpi_handle obj_handle,
874 acpi_handle obj_handle, 821 u32 nesting_level,
875 u32 nesting_level, 822 void *context, void **return_value);
876 void *context,
877 void **return_value);
878
879 823
880/* Interrupt handler return values */ 824/* Interrupt handler return values */
881 825
882#define ACPI_INTERRUPT_NOT_HANDLED 0x00 826#define ACPI_INTERRUPT_NOT_HANDLED 0x00
883#define ACPI_INTERRUPT_HANDLED 0x01 827#define ACPI_INTERRUPT_HANDLED 0x01
884 828
885
886/* Common string version of device HIDs and UIDs */ 829/* Common string version of device HIDs and UIDs */
887 830
888struct acpi_device_id 831struct acpi_device_id {
889{ 832 char value[ACPI_DEVICE_ID_LENGTH];
890 char value[ACPI_DEVICE_ID_LENGTH];
891}; 833};
892 834
893/* Common string version of device CIDs */ 835/* Common string version of device CIDs */
894 836
895struct acpi_compatible_id 837struct acpi_compatible_id {
896{ 838 char value[ACPI_MAX_CID_LENGTH];
897 char value[ACPI_MAX_CID_LENGTH];
898}; 839};
899 840
900struct acpi_compatible_id_list 841struct acpi_compatible_id_list {
901{ 842 u32 count;
902 u32 count; 843 u32 size;
903 u32 size; 844 struct acpi_compatible_id id[1];
904 struct acpi_compatible_id id[1];
905}; 845};
906 846
907
908/* Structure and flags for acpi_get_object_info */ 847/* Structure and flags for acpi_get_object_info */
909 848
910#define ACPI_VALID_STA 0x0001 849#define ACPI_VALID_STA 0x0001
@@ -914,55 +853,45 @@ struct acpi_compatible_id_list
914#define ACPI_VALID_CID 0x0010 853#define ACPI_VALID_CID 0x0010
915#define ACPI_VALID_SXDS 0x0020 854#define ACPI_VALID_SXDS 0x0020
916 855
917
918#define ACPI_COMMON_OBJ_INFO \ 856#define ACPI_COMMON_OBJ_INFO \
919 acpi_object_type type; /* ACPI object type */ \ 857 acpi_object_type type; /* ACPI object type */ \
920 acpi_name name /* ACPI object Name */ 858 acpi_name name /* ACPI object Name */
921
922 859
923struct acpi_obj_info_header 860struct acpi_obj_info_header {
924{
925 ACPI_COMMON_OBJ_INFO; 861 ACPI_COMMON_OBJ_INFO;
926}; 862};
927 863
928
929/* Structure returned from Get Object Info */ 864/* Structure returned from Get Object Info */
930 865
931struct acpi_device_info 866struct acpi_device_info {
932{
933 ACPI_COMMON_OBJ_INFO; 867 ACPI_COMMON_OBJ_INFO;
934 868
935 u32 valid; /* Indicates which fields below are valid */ 869 u32 valid; /* Indicates which fields below are valid */
936 u32 current_status; /* _STA value */ 870 u32 current_status; /* _STA value */
937 acpi_integer address; /* _ADR value if any */ 871 acpi_integer address; /* _ADR value if any */
938 struct acpi_device_id hardware_id; /* _HID value if any */ 872 struct acpi_device_id hardware_id; /* _HID value if any */
939 struct acpi_device_id unique_id; /* _UID value if any */ 873 struct acpi_device_id unique_id; /* _UID value if any */
940 u8 highest_dstates[4]; /* _sx_d values: 0xFF indicates not valid */ 874 u8 highest_dstates[4]; /* _sx_d values: 0xFF indicates not valid */
941 struct acpi_compatible_id_list compatibility_id; /* List of _CIDs if any */ 875 struct acpi_compatible_id_list compatibility_id; /* List of _CIDs if any */
942}; 876};
943 877
944
945/* Context structs for address space handlers */ 878/* Context structs for address space handlers */
946 879
947struct acpi_pci_id 880struct acpi_pci_id {
948{ 881 u16 segment;
949 u16 segment; 882 u16 bus;
950 u16 bus; 883 u16 device;
951 u16 device; 884 u16 function;
952 u16 function;
953}; 885};
954 886
955 887struct acpi_mem_space_context {
956struct acpi_mem_space_context 888 u32 length;
957{ 889 acpi_physical_address address;
958 u32 length; 890 acpi_physical_address mapped_physical_address;
959 acpi_physical_address address; 891 u8 *mapped_logical_address;
960 acpi_physical_address mapped_physical_address; 892 acpi_size mapped_length;
961 u8 *mapped_logical_address;
962 acpi_size mapped_length;
963}; 893};
964 894
965
966/* 895/*
967 * Definitions for Resource Attributes 896 * Definitions for Resource Attributes
968 */ 897 */
@@ -992,8 +921,8 @@ struct acpi_mem_space_context
992/* 921/*
993 * IO Port Descriptor Decode 922 * IO Port Descriptor Decode
994 */ 923 */
995#define ACPI_DECODE_10 (u8) 0x00 /* 10-bit IO address decode */ 924#define ACPI_DECODE_10 (u8) 0x00 /* 10-bit IO address decode */
996#define ACPI_DECODE_16 (u8) 0x01 /* 16-bit IO address decode */ 925#define ACPI_DECODE_16 (u8) 0x01 /* 16-bit IO address decode */
997 926
998/* 927/*
999 * IRQ Attributes 928 * IRQ Attributes
@@ -1045,32 +974,28 @@ struct acpi_mem_space_context
1045#define ACPI_PRODUCER (u8) 0x00 974#define ACPI_PRODUCER (u8) 0x00
1046#define ACPI_CONSUMER (u8) 0x01 975#define ACPI_CONSUMER (u8) 0x01
1047 976
1048
1049/* 977/*
1050 * Structures used to describe device resources 978 * Structures used to describe device resources
1051 */ 979 */
1052struct acpi_resource_irq 980struct acpi_resource_irq {
1053{ 981 u32 edge_level;
1054 u32 edge_level; 982 u32 active_high_low;
1055 u32 active_high_low; 983 u32 shared_exclusive;
1056 u32 shared_exclusive; 984 u32 number_of_interrupts;
1057 u32 number_of_interrupts; 985 u32 interrupts[1];
1058 u32 interrupts[1];
1059}; 986};
1060 987
1061struct acpi_resource_dma 988struct acpi_resource_dma {
1062{ 989 u32 type;
1063 u32 type; 990 u32 bus_master;
1064 u32 bus_master; 991 u32 transfer;
1065 u32 transfer; 992 u32 number_of_channels;
1066 u32 number_of_channels; 993 u32 channels[1];
1067 u32 channels[1];
1068}; 994};
1069 995
1070struct acpi_resource_start_dpf 996struct acpi_resource_start_dpf {
1071{ 997 u32 compatibility_priority;
1072 u32 compatibility_priority; 998 u32 performance_robustness;
1073 u32 performance_robustness;
1074}; 999};
1075 1000
1076/* 1001/*
@@ -1078,150 +1003,133 @@ struct acpi_resource_start_dpf
1078 * needed because it has no fields 1003 * needed because it has no fields
1079 */ 1004 */
1080 1005
1081struct acpi_resource_io 1006struct acpi_resource_io {
1082{ 1007 u32 io_decode;
1083 u32 io_decode; 1008 u32 min_base_address;
1084 u32 min_base_address; 1009 u32 max_base_address;
1085 u32 max_base_address; 1010 u32 alignment;
1086 u32 alignment; 1011 u32 range_length;
1087 u32 range_length;
1088}; 1012};
1089 1013
1090struct acpi_resource_fixed_io 1014struct acpi_resource_fixed_io {
1091{ 1015 u32 base_address;
1092 u32 base_address; 1016 u32 range_length;
1093 u32 range_length;
1094}; 1017};
1095 1018
1096struct acpi_resource_vendor 1019struct acpi_resource_vendor {
1097{ 1020 u32 length;
1098 u32 length; 1021 u8 reserved[1];
1099 u8 reserved[1];
1100}; 1022};
1101 1023
1102struct acpi_resource_end_tag 1024struct acpi_resource_end_tag {
1103{ 1025 u8 checksum;
1104 u8 checksum;
1105}; 1026};
1106 1027
1107struct acpi_resource_mem24 1028struct acpi_resource_mem24 {
1108{ 1029 u32 read_write_attribute;
1109 u32 read_write_attribute; 1030 u32 min_base_address;
1110 u32 min_base_address; 1031 u32 max_base_address;
1111 u32 max_base_address; 1032 u32 alignment;
1112 u32 alignment; 1033 u32 range_length;
1113 u32 range_length;
1114}; 1034};
1115 1035
1116struct acpi_resource_mem32 1036struct acpi_resource_mem32 {
1117{ 1037 u32 read_write_attribute;
1118 u32 read_write_attribute; 1038 u32 min_base_address;
1119 u32 min_base_address; 1039 u32 max_base_address;
1120 u32 max_base_address; 1040 u32 alignment;
1121 u32 alignment; 1041 u32 range_length;
1122 u32 range_length;
1123}; 1042};
1124 1043
1125struct acpi_resource_fixed_mem32 1044struct acpi_resource_fixed_mem32 {
1126{ 1045 u32 read_write_attribute;
1127 u32 read_write_attribute; 1046 u32 range_base_address;
1128 u32 range_base_address; 1047 u32 range_length;
1129 u32 range_length;
1130}; 1048};
1131 1049
1132struct acpi_memory_attribute 1050struct acpi_memory_attribute {
1133{ 1051 u16 cache_attribute;
1134 u16 cache_attribute; 1052 u16 read_write_attribute;
1135 u16 read_write_attribute;
1136}; 1053};
1137 1054
1138struct acpi_io_attribute 1055struct acpi_io_attribute {
1139{ 1056 u16 range_attribute;
1140 u16 range_attribute; 1057 u16 translation_attribute;
1141 u16 translation_attribute;
1142}; 1058};
1143 1059
1144struct acpi_bus_attribute 1060struct acpi_bus_attribute {
1145{ 1061 u16 reserved1;
1146 u16 reserved1; 1062 u16 reserved2;
1147 u16 reserved2;
1148}; 1063};
1149 1064
1150union acpi_resource_attribute 1065union acpi_resource_attribute {
1151{ 1066 struct acpi_memory_attribute memory;
1152 struct acpi_memory_attribute memory; 1067 struct acpi_io_attribute io;
1153 struct acpi_io_attribute io; 1068 struct acpi_bus_attribute bus;
1154 struct acpi_bus_attribute bus;
1155}; 1069};
1156 1070
1157struct acpi_resource_source 1071struct acpi_resource_source {
1158{ 1072 u32 index;
1159 u32 index; 1073 u32 string_length;
1160 u32 string_length; 1074 char *string_ptr;
1161 char *string_ptr;
1162}; 1075};
1163 1076
1164struct acpi_resource_address16 1077struct acpi_resource_address16 {
1165{ 1078 u32 resource_type;
1166 u32 resource_type; 1079 u32 producer_consumer;
1167 u32 producer_consumer; 1080 u32 decode;
1168 u32 decode; 1081 u32 min_address_fixed;
1169 u32 min_address_fixed; 1082 u32 max_address_fixed;
1170 u32 max_address_fixed; 1083 union acpi_resource_attribute attribute;
1171 union acpi_resource_attribute attribute; 1084 u32 granularity;
1172 u32 granularity; 1085 u32 min_address_range;
1173 u32 min_address_range; 1086 u32 max_address_range;
1174 u32 max_address_range; 1087 u32 address_translation_offset;
1175 u32 address_translation_offset; 1088 u32 address_length;
1176 u32 address_length; 1089 struct acpi_resource_source resource_source;
1177 struct acpi_resource_source resource_source;
1178}; 1090};
1179 1091
1180struct acpi_resource_address32 1092struct acpi_resource_address32 {
1181{ 1093 u32 resource_type;
1182 u32 resource_type; 1094 u32 producer_consumer;
1183 u32 producer_consumer; 1095 u32 decode;
1184 u32 decode; 1096 u32 min_address_fixed;
1185 u32 min_address_fixed; 1097 u32 max_address_fixed;
1186 u32 max_address_fixed; 1098 union acpi_resource_attribute attribute;
1187 union acpi_resource_attribute attribute; 1099 u32 granularity;
1188 u32 granularity; 1100 u32 min_address_range;
1189 u32 min_address_range; 1101 u32 max_address_range;
1190 u32 max_address_range; 1102 u32 address_translation_offset;
1191 u32 address_translation_offset; 1103 u32 address_length;
1192 u32 address_length; 1104 struct acpi_resource_source resource_source;
1193 struct acpi_resource_source resource_source;
1194}; 1105};
1195 1106
1196struct acpi_resource_address64 1107struct acpi_resource_address64 {
1197{ 1108 u32 resource_type;
1198 u32 resource_type; 1109 u32 producer_consumer;
1199 u32 producer_consumer; 1110 u32 decode;
1200 u32 decode; 1111 u32 min_address_fixed;
1201 u32 min_address_fixed; 1112 u32 max_address_fixed;
1202 u32 max_address_fixed; 1113 union acpi_resource_attribute attribute;
1203 union acpi_resource_attribute attribute; 1114 u64 granularity;
1204 u64 granularity; 1115 u64 min_address_range;
1205 u64 min_address_range; 1116 u64 max_address_range;
1206 u64 max_address_range; 1117 u64 address_translation_offset;
1207 u64 address_translation_offset; 1118 u64 address_length;
1208 u64 address_length; 1119 u64 type_specific_attributes;
1209 u64 type_specific_attributes; 1120 struct acpi_resource_source resource_source;
1210 struct acpi_resource_source resource_source;
1211}; 1121};
1212 1122
1213struct acpi_resource_ext_irq 1123struct acpi_resource_ext_irq {
1214{ 1124 u32 producer_consumer;
1215 u32 producer_consumer; 1125 u32 edge_level;
1216 u32 edge_level; 1126 u32 active_high_low;
1217 u32 active_high_low; 1127 u32 shared_exclusive;
1218 u32 shared_exclusive; 1128 u32 number_of_interrupts;
1219 u32 number_of_interrupts; 1129 struct acpi_resource_source resource_source;
1220 struct acpi_resource_source resource_source; 1130 u32 interrupts[1];
1221 u32 interrupts[1];
1222}; 1131};
1223 1132
1224
1225/* ACPI_RESOURCE_TYPEs */ 1133/* ACPI_RESOURCE_TYPEs */
1226 1134
1227#define ACPI_RSTYPE_IRQ 0 1135#define ACPI_RSTYPE_IRQ 0
@@ -1240,35 +1148,33 @@ struct acpi_resource_ext_irq
1240#define ACPI_RSTYPE_ADDRESS64 13 1148#define ACPI_RSTYPE_ADDRESS64 13
1241#define ACPI_RSTYPE_EXT_IRQ 14 1149#define ACPI_RSTYPE_EXT_IRQ 14
1242 1150
1243typedef u32 acpi_resource_type; 1151typedef u32 acpi_resource_type;
1244 1152
1245union acpi_resource_data 1153union acpi_resource_data {
1246{ 1154 struct acpi_resource_irq irq;
1247 struct acpi_resource_irq irq; 1155 struct acpi_resource_dma dma;
1248 struct acpi_resource_dma dma; 1156 struct acpi_resource_start_dpf start_dpf;
1249 struct acpi_resource_start_dpf start_dpf; 1157 struct acpi_resource_io io;
1250 struct acpi_resource_io io; 1158 struct acpi_resource_fixed_io fixed_io;
1251 struct acpi_resource_fixed_io fixed_io; 1159 struct acpi_resource_vendor vendor_specific;
1252 struct acpi_resource_vendor vendor_specific; 1160 struct acpi_resource_end_tag end_tag;
1253 struct acpi_resource_end_tag end_tag; 1161 struct acpi_resource_mem24 memory24;
1254 struct acpi_resource_mem24 memory24; 1162 struct acpi_resource_mem32 memory32;
1255 struct acpi_resource_mem32 memory32; 1163 struct acpi_resource_fixed_mem32 fixed_memory32;
1256 struct acpi_resource_fixed_mem32 fixed_memory32; 1164 struct acpi_resource_address16 address16;
1257 struct acpi_resource_address16 address16; 1165 struct acpi_resource_address32 address32;
1258 struct acpi_resource_address32 address32; 1166 struct acpi_resource_address64 address64;
1259 struct acpi_resource_address64 address64; 1167 struct acpi_resource_ext_irq extended_irq;
1260 struct acpi_resource_ext_irq extended_irq;
1261}; 1168};
1262 1169
1263struct acpi_resource 1170struct acpi_resource {
1264{ 1171 acpi_resource_type id;
1265 acpi_resource_type id; 1172 u32 length;
1266 u32 length; 1173 union acpi_resource_data data;
1267 union acpi_resource_data data;
1268}; 1174};
1269 1175
1270#define ACPI_RESOURCE_LENGTH 12 1176#define ACPI_RESOURCE_LENGTH 12
1271#define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ 1177#define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */
1272 1178
1273#define ACPI_SIZEOF_RESOURCE(type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (type)) 1179#define ACPI_SIZEOF_RESOURCE(type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (type))
1274 1180
@@ -1284,19 +1190,16 @@ struct acpi_resource
1284 * END: of definitions for Resource Attributes 1190 * END: of definitions for Resource Attributes
1285 */ 1191 */
1286 1192
1287 1193struct acpi_pci_routing_table {
1288struct acpi_pci_routing_table 1194 u32 length;
1289{ 1195 u32 pin;
1290 u32 length; 1196 acpi_integer address; /* here for 64-bit alignment */
1291 u32 pin; 1197 u32 source_index;
1292 acpi_integer address; /* here for 64-bit alignment */ 1198 char source[4]; /* pad to 64 bits so sizeof() works in all cases */
1293 u32 source_index;
1294 char source[4]; /* pad to 64 bits so sizeof() works in all cases */
1295}; 1199};
1296 1200
1297/* 1201/*
1298 * END: of definitions for PCI Routing tables 1202 * END: of definitions for PCI Routing tables
1299 */ 1203 */
1300 1204
1301 1205#endif /* __ACTYPES_H__ */
1302#endif /* __ACTYPES_H__ */
diff --git a/include/acpi/acutils.h b/include/acpi/acutils.h
index 192d0bea3884..c1086452696e 100644
--- a/include/acpi/acutils.h
+++ b/include/acpi/acutils.h
@@ -44,20 +44,17 @@
44#ifndef _ACUTILS_H 44#ifndef _ACUTILS_H
45#define _ACUTILS_H 45#define _ACUTILS_H
46 46
47
48typedef 47typedef
49acpi_status (*acpi_pkg_callback) ( 48acpi_status(*acpi_pkg_callback) (u8 object_type,
50 u8 object_type, 49 union acpi_operand_object * source_object,
51 union acpi_operand_object *source_object, 50 union acpi_generic_state * state,
52 union acpi_generic_state *state, 51 void *context);
53 void *context); 52
54 53struct acpi_pkg_info {
55struct acpi_pkg_info 54 u8 *free_space;
56{ 55 acpi_size length;
57 u8 *free_space; 56 u32 object_space;
58 acpi_size length; 57 u32 num_packages;
59 u32 object_space;
60 u32 num_packages;
61}; 58};
62 59
63#define REF_INCREMENT (u16) 0 60#define REF_INCREMENT (u16) 0
@@ -71,167 +68,89 @@ struct acpi_pkg_info
71#define DB_DWORD_DISPLAY 4 68#define DB_DWORD_DISPLAY 4
72#define DB_QWORD_DISPLAY 8 69#define DB_QWORD_DISPLAY 8
73 70
74
75/* 71/*
76 * utglobal - Global data structures and procedures 72 * utglobal - Global data structures and procedures
77 */ 73 */
78void 74void acpi_ut_init_globals(void);
79acpi_ut_init_globals (
80 void);
81 75
82#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 76#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
83 77
84char * 78char *acpi_ut_get_mutex_name(u32 mutex_id);
85acpi_ut_get_mutex_name (
86 u32 mutex_id);
87 79
88#endif 80#endif
89 81
90char * 82char *acpi_ut_get_type_name(acpi_object_type type);
91acpi_ut_get_type_name (
92 acpi_object_type type);
93
94char *
95acpi_ut_get_node_name (
96 void *object);
97
98char *
99acpi_ut_get_descriptor_name (
100 void *object);
101 83
102char * 84char *acpi_ut_get_node_name(void *object);
103acpi_ut_get_object_type_name (
104 union acpi_operand_object *obj_desc);
105 85
106char * 86char *acpi_ut_get_descriptor_name(void *object);
107acpi_ut_get_region_name (
108 u8 space_id);
109 87
110char * 88char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc);
111acpi_ut_get_event_name (
112 u32 event_id);
113 89
114char 90char *acpi_ut_get_region_name(u8 space_id);
115acpi_ut_hex_to_ascii_char (
116 acpi_integer integer,
117 u32 position);
118 91
119u8 92char *acpi_ut_get_event_name(u32 event_id);
120acpi_ut_valid_object_type (
121 acpi_object_type type);
122 93
123acpi_owner_id 94char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position);
124acpi_ut_allocate_owner_id (
125 u32 id_type);
126 95
96u8 acpi_ut_valid_object_type(acpi_object_type type);
127 97
128/* 98/*
129 * utinit - miscellaneous initialization and shutdown 99 * utinit - miscellaneous initialization and shutdown
130 */ 100 */
131acpi_status 101acpi_status acpi_ut_hardware_initialize(void);
132acpi_ut_hardware_initialize (
133 void);
134 102
135void 103void acpi_ut_subsystem_shutdown(void);
136acpi_ut_subsystem_shutdown (
137 void);
138
139acpi_status
140acpi_ut_validate_fadt (
141 void);
142 104
105acpi_status acpi_ut_validate_fadt(void);
143 106
144/* 107/*
145 * utclib - Local implementations of C library functions 108 * utclib - Local implementations of C library functions
146 */ 109 */
147#ifndef ACPI_USE_SYSTEM_CLIBRARY 110#ifndef ACPI_USE_SYSTEM_CLIBRARY
148 111
149acpi_size 112acpi_size acpi_ut_strlen(const char *string);
150acpi_ut_strlen ( 113
151 const char *string); 114char *acpi_ut_strcpy(char *dst_string, const char *src_string);
152 115
153char * 116char *acpi_ut_strncpy(char *dst_string,
154acpi_ut_strcpy ( 117 const char *src_string, acpi_size count);
155 char *dst_string, 118
156 const char *src_string); 119int acpi_ut_memcmp(const char *buffer1, const char *buffer2, acpi_size count);
157 120
158char * 121int acpi_ut_strncmp(const char *string1, const char *string2, acpi_size count);
159acpi_ut_strncpy ( 122
160 char *dst_string, 123int acpi_ut_strcmp(const char *string1, const char *string2);
161 const char *src_string, 124
162 acpi_size count); 125char *acpi_ut_strcat(char *dst_string, const char *src_string);
163 126
164int 127char *acpi_ut_strncat(char *dst_string,
165acpi_ut_memcmp ( 128 const char *src_string, acpi_size count);
166 const char *buffer1, 129
167 const char *buffer2, 130u32 acpi_ut_strtoul(const char *string, char **terminator, u32 base);
168 acpi_size count); 131
169 132char *acpi_ut_strstr(char *string1, char *string2);
170int 133
171acpi_ut_strncmp ( 134void *acpi_ut_memcpy(void *dest, const void *src, acpi_size count);
172 const char *string1, 135
173 const char *string2, 136void *acpi_ut_memset(void *dest, acpi_native_uint value, acpi_size count);
174 acpi_size count); 137
175 138int acpi_ut_to_upper(int c);
176int 139
177acpi_ut_strcmp ( 140int acpi_ut_to_lower(int c);
178 const char *string1,
179 const char *string2);
180
181char *
182acpi_ut_strcat (
183 char *dst_string,
184 const char *src_string);
185
186char *
187acpi_ut_strncat (
188 char *dst_string,
189 const char *src_string,
190 acpi_size count);
191
192u32
193acpi_ut_strtoul (
194 const char *string,
195 char **terminator,
196 u32 base);
197
198char *
199acpi_ut_strstr (
200 char *string1,
201 char *string2);
202
203void *
204acpi_ut_memcpy (
205 void *dest,
206 const void *src,
207 acpi_size count);
208
209void *
210acpi_ut_memset (
211 void *dest,
212 acpi_native_uint value,
213 acpi_size count);
214
215int
216acpi_ut_to_upper (
217 int c);
218
219int
220acpi_ut_to_lower (
221 int c);
222 141
223extern const u8 _acpi_ctype[]; 142extern const u8 _acpi_ctype[];
224 143
225#define _ACPI_XA 0x00 /* extra alphabetic - not supported */ 144#define _ACPI_XA 0x00 /* extra alphabetic - not supported */
226#define _ACPI_XS 0x40 /* extra space */ 145#define _ACPI_XS 0x40 /* extra space */
227#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ 146#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */
228#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ 147#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */
229#define _ACPI_DI 0x04 /* '0'-'9' */ 148#define _ACPI_DI 0x04 /* '0'-'9' */
230#define _ACPI_LO 0x02 /* 'a'-'z' */ 149#define _ACPI_LO 0x02 /* 'a'-'z' */
231#define _ACPI_PU 0x10 /* punctuation */ 150#define _ACPI_PU 0x10 /* punctuation */
232#define _ACPI_SP 0x08 /* space */ 151#define _ACPI_SP 0x08 /* space */
233#define _ACPI_UP 0x01 /* 'A'-'Z' */ 152#define _ACPI_UP 0x01 /* 'A'-'Z' */
234#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ 153#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */
235 154
236#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) 155#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
237#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) 156#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
@@ -242,502 +161,323 @@ extern const u8 _acpi_ctype[];
242#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) 161#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
243#define ACPI_IS_ASCII(c) ((c) < 0x80) 162#define ACPI_IS_ASCII(c) ((c) < 0x80)
244 163
245#endif /* ACPI_USE_SYSTEM_CLIBRARY */ 164#endif /* ACPI_USE_SYSTEM_CLIBRARY */
246
247 165
248/* 166/*
249 * utcopy - Object construction and conversion interfaces 167 * utcopy - Object construction and conversion interfaces
250 */ 168 */
251acpi_status 169acpi_status
252acpi_ut_build_simple_object( 170acpi_ut_build_simple_object(union acpi_operand_object *obj,
253 union acpi_operand_object *obj, 171 union acpi_object *user_obj,
254 union acpi_object *user_obj, 172 u8 * data_space, u32 * buffer_space_used);
255 u8 *data_space,
256 u32 *buffer_space_used);
257 173
258acpi_status 174acpi_status
259acpi_ut_build_package_object ( 175acpi_ut_build_package_object(union acpi_operand_object *obj,
260 union acpi_operand_object *obj, 176 u8 * buffer, u32 * space_used);
261 u8 *buffer,
262 u32 *space_used);
263 177
264acpi_status 178acpi_status
265acpi_ut_copy_iobject_to_eobject ( 179acpi_ut_copy_iobject_to_eobject(union acpi_operand_object *obj,
266 union acpi_operand_object *obj, 180 struct acpi_buffer *ret_buffer);
267 struct acpi_buffer *ret_buffer);
268 181
269acpi_status 182acpi_status
270acpi_ut_copy_eobject_to_iobject ( 183acpi_ut_copy_eobject_to_iobject(union acpi_object *obj,
271 union acpi_object *obj, 184 union acpi_operand_object **internal_obj);
272 union acpi_operand_object **internal_obj);
273 185
274acpi_status 186acpi_status
275acpi_ut_copy_isimple_to_isimple ( 187acpi_ut_copy_isimple_to_isimple(union acpi_operand_object *source_obj,
276 union acpi_operand_object *source_obj, 188 union acpi_operand_object *dest_obj);
277 union acpi_operand_object *dest_obj);
278 189
279acpi_status 190acpi_status
280acpi_ut_copy_iobject_to_iobject ( 191acpi_ut_copy_iobject_to_iobject(union acpi_operand_object *source_desc,
281 union acpi_operand_object *source_desc, 192 union acpi_operand_object **dest_desc,
282 union acpi_operand_object **dest_desc, 193 struct acpi_walk_state *walk_state);
283 struct acpi_walk_state *walk_state);
284
285 194
286/* 195/*
287 * utcreate - Object creation 196 * utcreate - Object creation
288 */ 197 */
289acpi_status 198acpi_status
290acpi_ut_update_object_reference ( 199acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action);
291 union acpi_operand_object *object,
292 u16 action);
293
294 200
295/* 201/*
296 * utdebug - Debug interfaces 202 * utdebug - Debug interfaces
297 */ 203 */
298void 204void acpi_ut_init_stack_ptr_trace(void);
299acpi_ut_init_stack_ptr_trace (
300 void);
301 205
302void 206void acpi_ut_track_stack_ptr(void);
303acpi_ut_track_stack_ptr (
304 void);
305 207
306void 208void
307acpi_ut_trace ( 209acpi_ut_trace(u32 line_number,
308 u32 line_number, 210 const char *function_name, char *module_name, u32 component_id);
309 struct acpi_debug_print_info *dbg_info);
310 211
311void 212void
312acpi_ut_trace_ptr ( 213acpi_ut_trace_ptr(u32 line_number,
313 u32 line_number, 214 const char *function_name,
314 struct acpi_debug_print_info *dbg_info, 215 char *module_name, u32 component_id, void *pointer);
315 void *pointer);
316 216
317void 217void
318acpi_ut_trace_u32 ( 218acpi_ut_trace_u32(u32 line_number,
319 u32 line_number, 219 const char *function_name,
320 struct acpi_debug_print_info *dbg_info, 220 char *module_name, u32 component_id, u32 integer);
321 u32 integer);
322 221
323void 222void
324acpi_ut_trace_str ( 223acpi_ut_trace_str(u32 line_number,
325 u32 line_number, 224 const char *function_name,
326 struct acpi_debug_print_info *dbg_info, 225 char *module_name, u32 component_id, char *string);
327 char *string);
328 226
329void 227void
330acpi_ut_exit ( 228acpi_ut_exit(u32 line_number,
331 u32 line_number, 229 const char *function_name, char *module_name, u32 component_id);
332 struct acpi_debug_print_info *dbg_info);
333 230
334void 231void
335acpi_ut_status_exit ( 232acpi_ut_status_exit(u32 line_number,
336 u32 line_number, 233 const char *function_name,
337 struct acpi_debug_print_info *dbg_info, 234 char *module_name, u32 component_id, acpi_status status);
338 acpi_status status);
339 235
340void 236void
341acpi_ut_value_exit ( 237acpi_ut_value_exit(u32 line_number,
342 u32 line_number, 238 const char *function_name,
343 struct acpi_debug_print_info *dbg_info, 239 char *module_name, u32 component_id, acpi_integer value);
344 acpi_integer value);
345 240
346void 241void
347acpi_ut_ptr_exit ( 242acpi_ut_ptr_exit(u32 line_number,
348 u32 line_number, 243 const char *function_name,
349 struct acpi_debug_print_info *dbg_info, 244 char *module_name, u32 component_id, u8 * ptr);
350 u8 *ptr);
351 245
352void 246void acpi_ut_report_info(char *module_name, u32 line_number, u32 component_id);
353acpi_ut_report_info (
354 char *module_name,
355 u32 line_number,
356 u32 component_id);
357 247
358void 248void acpi_ut_report_error(char *module_name, u32 line_number, u32 component_id);
359acpi_ut_report_error (
360 char *module_name,
361 u32 line_number,
362 u32 component_id);
363 249
364void 250void
365acpi_ut_report_warning ( 251acpi_ut_report_warning(char *module_name, u32 line_number, u32 component_id);
366 char *module_name,
367 u32 line_number,
368 u32 component_id);
369 252
370void 253void acpi_ut_dump_buffer(u8 * buffer, u32 count, u32 display, u32 component_id);
371acpi_ut_dump_buffer (
372 u8 *buffer,
373 u32 count,
374 u32 display,
375 u32 component_id);
376 254
377void ACPI_INTERNAL_VAR_XFACE 255void ACPI_INTERNAL_VAR_XFACE
378acpi_ut_debug_print ( 256acpi_ut_debug_print(u32 requested_debug_level,
379 u32 requested_debug_level, 257 u32 line_number,
380 u32 line_number, 258 const char *function_name,
381 struct acpi_debug_print_info *dbg_info, 259 char *module_name,
382 char *format, 260 u32 component_id, char *format, ...) ACPI_PRINTF_LIKE_FUNC;
383 ...) ACPI_PRINTF_LIKE_FUNC;
384 261
385void ACPI_INTERNAL_VAR_XFACE 262void ACPI_INTERNAL_VAR_XFACE
386acpi_ut_debug_print_raw ( 263acpi_ut_debug_print_raw(u32 requested_debug_level,
387 u32 requested_debug_level, 264 u32 line_number,
388 u32 line_number, 265 const char *function_name,
389 struct acpi_debug_print_info *dbg_info, 266 char *module_name,
390 char *format, 267 u32 component_id,
391 ...) ACPI_PRINTF_LIKE_FUNC; 268 char *format, ...) ACPI_PRINTF_LIKE_FUNC;
392
393 269
394/* 270/*
395 * utdelete - Object deletion and reference counts 271 * utdelete - Object deletion and reference counts
396 */ 272 */
397void 273void acpi_ut_add_reference(union acpi_operand_object *object);
398acpi_ut_add_reference (
399 union acpi_operand_object *object);
400 274
401void 275void acpi_ut_remove_reference(union acpi_operand_object *object);
402acpi_ut_remove_reference (
403 union acpi_operand_object *object);
404 276
405void 277void acpi_ut_delete_internal_package_object(union acpi_operand_object *object);
406acpi_ut_delete_internal_package_object (
407 union acpi_operand_object *object);
408 278
409void 279void acpi_ut_delete_internal_simple_object(union acpi_operand_object *object);
410acpi_ut_delete_internal_simple_object (
411 union acpi_operand_object *object);
412
413void
414acpi_ut_delete_internal_object_list (
415 union acpi_operand_object **obj_list);
416 280
281void acpi_ut_delete_internal_object_list(union acpi_operand_object **obj_list);
417 282
418/* 283/*
419 * uteval - object evaluation 284 * uteval - object evaluation
420 */ 285 */
421acpi_status 286acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state);
422acpi_ut_osi_implementation (
423 struct acpi_walk_state *walk_state);
424 287
425acpi_status 288acpi_status
426acpi_ut_evaluate_object ( 289acpi_ut_evaluate_object(struct acpi_namespace_node *prefix_node,
427 struct acpi_namespace_node *prefix_node, 290 char *path,
428 char *path, 291 u32 expected_return_btypes,
429 u32 expected_return_btypes, 292 union acpi_operand_object **return_desc);
430 union acpi_operand_object **return_desc);
431 293
432acpi_status 294acpi_status
433acpi_ut_evaluate_numeric_object ( 295acpi_ut_evaluate_numeric_object(char *object_name,
434 char *object_name, 296 struct acpi_namespace_node *device_node,
435 struct acpi_namespace_node *device_node, 297 acpi_integer * address);
436 acpi_integer *address);
437 298
438acpi_status 299acpi_status
439acpi_ut_execute_HID ( 300acpi_ut_execute_HID(struct acpi_namespace_node *device_node,
440 struct acpi_namespace_node *device_node, 301 struct acpi_device_id *hid);
441 struct acpi_device_id *hid);
442 302
443acpi_status 303acpi_status
444acpi_ut_execute_CID ( 304acpi_ut_execute_CID(struct acpi_namespace_node *device_node,
445 struct acpi_namespace_node *device_node, 305 struct acpi_compatible_id_list **return_cid_list);
446 struct acpi_compatible_id_list **return_cid_list);
447 306
448acpi_status 307acpi_status
449acpi_ut_execute_STA ( 308acpi_ut_execute_STA(struct acpi_namespace_node *device_node,
450 struct acpi_namespace_node *device_node, 309 u32 * status_flags);
451 u32 *status_flags);
452 310
453acpi_status 311acpi_status
454acpi_ut_execute_UID ( 312acpi_ut_execute_UID(struct acpi_namespace_node *device_node,
455 struct acpi_namespace_node *device_node, 313 struct acpi_device_id *uid);
456 struct acpi_device_id *uid);
457 314
458acpi_status 315acpi_status
459acpi_ut_execute_sxds ( 316acpi_ut_execute_sxds(struct acpi_namespace_node *device_node, u8 * highest);
460 struct acpi_namespace_node *device_node,
461 u8 *highest);
462
463 317
464/* 318/*
465 * utobject - internal object create/delete/cache routines 319 * utobject - internal object create/delete/cache routines
466 */ 320 */
467union acpi_operand_object * 321union acpi_operand_object *acpi_ut_create_internal_object_dbg(char *module_name,
468acpi_ut_create_internal_object_dbg ( 322 u32 line_number,
469 char *module_name, 323 u32 component_id,
470 u32 line_number, 324 acpi_object_type
471 u32 component_id, 325 type);
472 acpi_object_type type);
473
474void *
475acpi_ut_allocate_object_desc_dbg (
476 char *module_name,
477 u32 line_number,
478 u32 component_id);
479
480#define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_THIS_MODULE,__LINE__,_COMPONENT,t)
481#define acpi_ut_allocate_object_desc() acpi_ut_allocate_object_desc_dbg (_THIS_MODULE,__LINE__,_COMPONENT)
482 326
483void 327void *acpi_ut_allocate_object_desc_dbg(char *module_name,
484acpi_ut_delete_object_desc ( 328 u32 line_number, u32 component_id);
485 union acpi_operand_object *object);
486 329
487u8 330#define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_acpi_module_name,__LINE__,_COMPONENT,t)
488acpi_ut_valid_internal_object ( 331#define acpi_ut_allocate_object_desc() acpi_ut_allocate_object_desc_dbg (_acpi_module_name,__LINE__,_COMPONENT)
489 void *object);
490 332
491union acpi_operand_object * 333void acpi_ut_delete_object_desc(union acpi_operand_object *object);
492acpi_ut_create_buffer_object (
493 acpi_size buffer_size);
494 334
495union acpi_operand_object * 335u8 acpi_ut_valid_internal_object(void *object);
496acpi_ut_create_string_object (
497 acpi_size string_size);
498 336
499acpi_status 337union acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size);
500acpi_ut_get_object_size(
501 union acpi_operand_object *obj,
502 acpi_size *obj_length);
503 338
339union acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size);
340
341acpi_status
342acpi_ut_get_object_size(union acpi_operand_object *obj, acpi_size * obj_length);
504 343
505/* 344/*
506 * utstate - Generic state creation/cache routines 345 * utstate - Generic state creation/cache routines
507 */ 346 */
508void 347void
509acpi_ut_push_generic_state ( 348acpi_ut_push_generic_state(union acpi_generic_state **list_head,
510 union acpi_generic_state **list_head, 349 union acpi_generic_state *state);
511 union acpi_generic_state *state);
512 350
513union acpi_generic_state * 351union acpi_generic_state *acpi_ut_pop_generic_state(union acpi_generic_state
514acpi_ut_pop_generic_state ( 352 **list_head);
515 union acpi_generic_state **list_head);
516 353
354union acpi_generic_state *acpi_ut_create_generic_state(void);
517 355
518union acpi_generic_state * 356struct acpi_thread_state *acpi_ut_create_thread_state(void);
519acpi_ut_create_generic_state (
520 void);
521 357
522struct acpi_thread_state * 358union acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object
523acpi_ut_create_thread_state ( 359 *object, u16 action);
524 void);
525 360
526union acpi_generic_state * 361union acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object,
527acpi_ut_create_update_state ( 362 void *external_object,
528 union acpi_operand_object *object, 363 u16 index);
529 u16 action);
530
531union acpi_generic_state *
532acpi_ut_create_pkg_state (
533 void *internal_object,
534 void *external_object,
535 u16 index);
536 364
537acpi_status 365acpi_status
538acpi_ut_create_update_state_and_push ( 366acpi_ut_create_update_state_and_push(union acpi_operand_object *object,
539 union acpi_operand_object *object, 367 u16 action,
540 u16 action, 368 union acpi_generic_state **state_list);
541 union acpi_generic_state **state_list);
542 369
543#ifdef ACPI_FUTURE_USAGE 370#ifdef ACPI_FUTURE_USAGE
544acpi_status 371acpi_status
545acpi_ut_create_pkg_state_and_push ( 372acpi_ut_create_pkg_state_and_push(void *internal_object,
546 void *internal_object, 373 void *external_object,
547 void *external_object, 374 u16 index,
548 u16 index, 375 union acpi_generic_state **state_list);
549 union acpi_generic_state **state_list); 376#endif /* ACPI_FUTURE_USAGE */
550#endif /* ACPI_FUTURE_USAGE */
551 377
552union acpi_generic_state * 378union acpi_generic_state *acpi_ut_create_control_state(void);
553acpi_ut_create_control_state (
554 void);
555
556void
557acpi_ut_delete_generic_state (
558 union acpi_generic_state *state);
559
560#ifdef ACPI_ENABLE_OBJECT_CACHE
561void
562acpi_ut_delete_generic_state_cache (
563 void);
564
565void
566acpi_ut_delete_object_cache (
567 void);
568#endif
569 379
380void acpi_ut_delete_generic_state(union acpi_generic_state *state);
570 381
571/* 382/*
572 * utmath 383 * utmath
573 */ 384 */
574acpi_status 385acpi_status
575acpi_ut_divide ( 386acpi_ut_divide(acpi_integer in_dividend,
576 acpi_integer in_dividend, 387 acpi_integer in_divisor,
577 acpi_integer in_divisor, 388 acpi_integer * out_quotient, acpi_integer * out_remainder);
578 acpi_integer *out_quotient,
579 acpi_integer *out_remainder);
580 389
581acpi_status 390acpi_status
582acpi_ut_short_divide ( 391acpi_ut_short_divide(acpi_integer in_dividend,
583 acpi_integer in_dividend, 392 u32 divisor,
584 u32 divisor, 393 acpi_integer * out_quotient, u32 * out_remainder);
585 acpi_integer *out_quotient,
586 u32 *out_remainder);
587 394
588/* 395/*
589 * utmisc 396 * utmisc
590 */ 397 */
398acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id);
399
400void acpi_ut_release_owner_id(acpi_owner_id * owner_id);
401
591acpi_status 402acpi_status
592acpi_ut_walk_package_tree ( 403acpi_ut_walk_package_tree(union acpi_operand_object *source_object,
593 union acpi_operand_object *source_object, 404 void *target_object,
594 void *target_object, 405 acpi_pkg_callback walk_callback, void *context);
595 acpi_pkg_callback walk_callback,
596 void *context);
597 406
598char * 407void acpi_ut_strupr(char *src_string);
599acpi_ut_strupr (
600 char *src_string);
601 408
602void 409void acpi_ut_print_string(char *string, u8 max_length);
603acpi_ut_print_string (
604 char *string,
605 u8 max_length);
606 410
607u8 411u8 acpi_ut_valid_acpi_name(u32 name);
608acpi_ut_valid_acpi_name (
609 u32 name);
610 412
611u8 413u8 acpi_ut_valid_acpi_character(char character);
612acpi_ut_valid_acpi_character (
613 char character);
614 414
615acpi_status 415acpi_status
616acpi_ut_strtoul64 ( 416acpi_ut_strtoul64(char *string, u32 base, acpi_integer * ret_integer);
617 char *string,
618 u32 base,
619 acpi_integer *ret_integer);
620 417
621/* Values for Base above (16=Hex, 10=Decimal) */ 418/* Values for Base above (16=Hex, 10=Decimal) */
622 419
623#define ACPI_ANY_BASE 0 420#define ACPI_ANY_BASE 0
624 421
625acpi_status 422u8 *acpi_ut_get_resource_end_tag(union acpi_operand_object *obj_desc);
626acpi_ut_mutex_initialize (
627 void);
628
629void
630acpi_ut_mutex_terminate (
631 void);
632
633acpi_status
634acpi_ut_acquire_mutex (
635 acpi_mutex_handle mutex_id);
636
637acpi_status
638acpi_ut_release_mutex (
639 acpi_mutex_handle mutex_id);
640
641u8 *
642acpi_ut_get_resource_end_tag (
643 union acpi_operand_object *obj_desc);
644 423
645u8 424u8 acpi_ut_generate_checksum(u8 * buffer, u32 length);
646acpi_ut_generate_checksum (
647 u8 *buffer,
648 u32 length);
649 425
650u32 426u32 acpi_ut_dword_byte_swap(u32 value);
651acpi_ut_dword_byte_swap (
652 u32 value);
653 427
654void 428void acpi_ut_set_integer_width(u8 revision);
655acpi_ut_set_integer_width (
656 u8 revision);
657 429
658#ifdef ACPI_DEBUG_OUTPUT 430#ifdef ACPI_DEBUG_OUTPUT
659void 431void
660acpi_ut_display_init_pathname ( 432acpi_ut_display_init_pathname(u8 type,
661 u8 type, 433 struct acpi_namespace_node *obj_handle,
662 struct acpi_namespace_node *obj_handle, 434 char *path);
663 char *path);
664 435
665#endif 436#endif
666 437
438/*
439 * utmutex - mutex support
440 */
441acpi_status acpi_ut_mutex_initialize(void);
442
443void acpi_ut_mutex_terminate(void);
444
445acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id);
446
447acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id);
667 448
668/* 449/*
669 * utalloc - memory allocation and object caching 450 * utalloc - memory allocation and object caching
670 */ 451 */
671void * 452acpi_status acpi_ut_create_caches(void);
672acpi_ut_acquire_from_cache (
673 u32 list_id);
674 453
675void 454acpi_status acpi_ut_delete_caches(void);
676acpi_ut_release_to_cache (
677 u32 list_id,
678 void *object);
679 455
680#ifdef ACPI_ENABLE_OBJECT_CACHE 456acpi_status acpi_ut_validate_buffer(struct acpi_buffer *buffer);
681void
682acpi_ut_delete_generic_cache (
683 u32 list_id);
684#endif
685 457
686acpi_status 458acpi_status
687acpi_ut_validate_buffer ( 459acpi_ut_initialize_buffer(struct acpi_buffer *buffer,
688 struct acpi_buffer *buffer); 460 acpi_size required_length);
689 461
690acpi_status 462void *acpi_ut_allocate(acpi_size size, u32 component, char *module, u32 line);
691acpi_ut_initialize_buffer ( 463
692 struct acpi_buffer *buffer, 464void *acpi_ut_callocate(acpi_size size, u32 component, char *module, u32 line);
693 acpi_size required_length);
694
695void *
696acpi_ut_allocate (
697 acpi_size size,
698 u32 component,
699 char *module,
700 u32 line);
701
702void *
703acpi_ut_callocate (
704 acpi_size size,
705 u32 component,
706 char *module,
707 u32 line);
708 465
709#ifdef ACPI_DBG_TRACK_ALLOCATIONS 466#ifdef ACPI_DBG_TRACK_ALLOCATIONS
710void * 467void *acpi_ut_allocate_and_track(acpi_size size,
711acpi_ut_allocate_and_track ( 468 u32 component, char *module, u32 line);
712 acpi_size size, 469
713 u32 component, 470void *acpi_ut_callocate_and_track(acpi_size size,
714 char *module, 471 u32 component, char *module, u32 line);
715 u32 line);
716
717void *
718acpi_ut_callocate_and_track (
719 acpi_size size,
720 u32 component,
721 char *module,
722 u32 line);
723 472
724void 473void
725acpi_ut_free_and_track ( 474acpi_ut_free_and_track(void *address, u32 component, char *module, u32 line);
726 void *address,
727 u32 component,
728 char *module,
729 u32 line);
730 475
731#ifdef ACPI_FUTURE_USAGE 476#ifdef ACPI_FUTURE_USAGE
732void 477void acpi_ut_dump_allocation_info(void);
733acpi_ut_dump_allocation_info ( 478#endif /* ACPI_FUTURE_USAGE */
734 void);
735#endif /* ACPI_FUTURE_USAGE */
736 479
737void 480void acpi_ut_dump_allocations(u32 component, char *module);
738acpi_ut_dump_allocations (
739 u32 component,
740 char *module);
741#endif 481#endif
742 482
743#endif /* _ACUTILS_H */ 483#endif /* _ACUTILS_H */
diff --git a/include/acpi/amlcode.h b/include/acpi/amlcode.h
index 55e97ed29190..7fdf5299f501 100644
--- a/include/acpi/amlcode.h
+++ b/include/acpi/amlcode.h
@@ -59,17 +59,17 @@
59#define AML_WORD_OP (u16) 0x0b 59#define AML_WORD_OP (u16) 0x0b
60#define AML_DWORD_OP (u16) 0x0c 60#define AML_DWORD_OP (u16) 0x0c
61#define AML_STRING_OP (u16) 0x0d 61#define AML_STRING_OP (u16) 0x0d
62#define AML_QWORD_OP (u16) 0x0e /* ACPI 2.0 */ 62#define AML_QWORD_OP (u16) 0x0e /* ACPI 2.0 */
63#define AML_SCOPE_OP (u16) 0x10 63#define AML_SCOPE_OP (u16) 0x10
64#define AML_BUFFER_OP (u16) 0x11 64#define AML_BUFFER_OP (u16) 0x11
65#define AML_PACKAGE_OP (u16) 0x12 65#define AML_PACKAGE_OP (u16) 0x12
66#define AML_VAR_PACKAGE_OP (u16) 0x13 /* ACPI 2.0 */ 66#define AML_VAR_PACKAGE_OP (u16) 0x13 /* ACPI 2.0 */
67#define AML_METHOD_OP (u16) 0x14 67#define AML_METHOD_OP (u16) 0x14
68#define AML_DUAL_NAME_PREFIX (u16) 0x2e 68#define AML_DUAL_NAME_PREFIX (u16) 0x2e
69#define AML_MULTI_NAME_PREFIX_OP (u16) 0x2f 69#define AML_MULTI_NAME_PREFIX_OP (u16) 0x2f
70#define AML_NAME_CHAR_SUBSEQ (u16) 0x30 70#define AML_NAME_CHAR_SUBSEQ (u16) 0x30
71#define AML_NAME_CHAR_FIRST (u16) 0x41 71#define AML_NAME_CHAR_FIRST (u16) 0x41
72#define AML_OP_PREFIX (u16) 0x5b 72#define AML_EXTENDED_OP_PREFIX (u16) 0x5b
73#define AML_ROOT_PREFIX (u16) 0x5c 73#define AML_ROOT_PREFIX (u16) 0x5c
74#define AML_PARENT_PREFIX (u16) 0x5e 74#define AML_PARENT_PREFIX (u16) 0x5e
75#define AML_LOCAL_OP (u16) 0x60 75#define AML_LOCAL_OP (u16) 0x60
@@ -109,8 +109,8 @@
109#define AML_FIND_SET_LEFT_BIT_OP (u16) 0x81 109#define AML_FIND_SET_LEFT_BIT_OP (u16) 0x81
110#define AML_FIND_SET_RIGHT_BIT_OP (u16) 0x82 110#define AML_FIND_SET_RIGHT_BIT_OP (u16) 0x82
111#define AML_DEREF_OF_OP (u16) 0x83 111#define AML_DEREF_OF_OP (u16) 0x83
112#define AML_CONCAT_RES_OP (u16) 0x84 /* ACPI 2.0 */ 112#define AML_CONCAT_RES_OP (u16) 0x84 /* ACPI 2.0 */
113#define AML_MOD_OP (u16) 0x85 /* ACPI 2.0 */ 113#define AML_MOD_OP (u16) 0x85 /* ACPI 2.0 */
114#define AML_NOTIFY_OP (u16) 0x86 114#define AML_NOTIFY_OP (u16) 0x86
115#define AML_SIZE_OF_OP (u16) 0x87 115#define AML_SIZE_OF_OP (u16) 0x87
116#define AML_INDEX_OP (u16) 0x88 116#define AML_INDEX_OP (u16) 0x88
@@ -120,21 +120,21 @@
120#define AML_CREATE_BYTE_FIELD_OP (u16) 0x8c 120#define AML_CREATE_BYTE_FIELD_OP (u16) 0x8c
121#define AML_CREATE_BIT_FIELD_OP (u16) 0x8d 121#define AML_CREATE_BIT_FIELD_OP (u16) 0x8d
122#define AML_TYPE_OP (u16) 0x8e 122#define AML_TYPE_OP (u16) 0x8e
123#define AML_CREATE_QWORD_FIELD_OP (u16) 0x8f /* ACPI 2.0 */ 123#define AML_CREATE_QWORD_FIELD_OP (u16) 0x8f /* ACPI 2.0 */
124#define AML_LAND_OP (u16) 0x90 124#define AML_LAND_OP (u16) 0x90
125#define AML_LOR_OP (u16) 0x91 125#define AML_LOR_OP (u16) 0x91
126#define AML_LNOT_OP (u16) 0x92 126#define AML_LNOT_OP (u16) 0x92
127#define AML_LEQUAL_OP (u16) 0x93 127#define AML_LEQUAL_OP (u16) 0x93
128#define AML_LGREATER_OP (u16) 0x94 128#define AML_LGREATER_OP (u16) 0x94
129#define AML_LLESS_OP (u16) 0x95 129#define AML_LLESS_OP (u16) 0x95
130#define AML_TO_BUFFER_OP (u16) 0x96 /* ACPI 2.0 */ 130#define AML_TO_BUFFER_OP (u16) 0x96 /* ACPI 2.0 */
131#define AML_TO_DECSTRING_OP (u16) 0x97 /* ACPI 2.0 */ 131#define AML_TO_DECSTRING_OP (u16) 0x97 /* ACPI 2.0 */
132#define AML_TO_HEXSTRING_OP (u16) 0x98 /* ACPI 2.0 */ 132#define AML_TO_HEXSTRING_OP (u16) 0x98 /* ACPI 2.0 */
133#define AML_TO_INTEGER_OP (u16) 0x99 /* ACPI 2.0 */ 133#define AML_TO_INTEGER_OP (u16) 0x99 /* ACPI 2.0 */
134#define AML_TO_STRING_OP (u16) 0x9c /* ACPI 2.0 */ 134#define AML_TO_STRING_OP (u16) 0x9c /* ACPI 2.0 */
135#define AML_COPY_OP (u16) 0x9d /* ACPI 2.0 */ 135#define AML_COPY_OP (u16) 0x9d /* ACPI 2.0 */
136#define AML_MID_OP (u16) 0x9e /* ACPI 2.0 */ 136#define AML_MID_OP (u16) 0x9e /* ACPI 2.0 */
137#define AML_CONTINUE_OP (u16) 0x9f /* ACPI 2.0 */ 137#define AML_CONTINUE_OP (u16) 0x9f /* ACPI 2.0 */
138#define AML_IF_OP (u16) 0xa0 138#define AML_IF_OP (u16) 0xa0
139#define AML_ELSE_OP (u16) 0xa1 139#define AML_ELSE_OP (u16) 0xa1
140#define AML_WHILE_OP (u16) 0xa2 140#define AML_WHILE_OP (u16) 0xa2
@@ -146,7 +146,7 @@
146 146
147/* prefixed opcodes */ 147/* prefixed opcodes */
148 148
149#define AML_EXTOP (u16) 0x005b /* prefix for 2-byte opcodes */ 149#define AML_EXTENDED_OPCODE (u16) 0x5b00 /* prefix for 2-byte opcodes */
150 150
151#define AML_MUTEX_OP (u16) 0x5b01 151#define AML_MUTEX_OP (u16) 0x5b01
152#define AML_EVENT_OP (u16) 0x5b02 152#define AML_EVENT_OP (u16) 0x5b02
@@ -154,7 +154,7 @@
154#define AML_SHIFT_LEFT_BIT_OP (u16) 0x5b11 154#define AML_SHIFT_LEFT_BIT_OP (u16) 0x5b11
155#define AML_COND_REF_OF_OP (u16) 0x5b12 155#define AML_COND_REF_OF_OP (u16) 0x5b12
156#define AML_CREATE_FIELD_OP (u16) 0x5b13 156#define AML_CREATE_FIELD_OP (u16) 0x5b13
157#define AML_LOAD_TABLE_OP (u16) 0x5b1f /* ACPI 2.0 */ 157#define AML_LOAD_TABLE_OP (u16) 0x5b1f /* ACPI 2.0 */
158#define AML_LOAD_OP (u16) 0x5b20 158#define AML_LOAD_OP (u16) 0x5b20
159#define AML_STALL_OP (u16) 0x5b21 159#define AML_STALL_OP (u16) 0x5b21
160#define AML_SLEEP_OP (u16) 0x5b22 160#define AML_SLEEP_OP (u16) 0x5b22
@@ -169,7 +169,7 @@
169#define AML_REVISION_OP (u16) 0x5b30 169#define AML_REVISION_OP (u16) 0x5b30
170#define AML_DEBUG_OP (u16) 0x5b31 170#define AML_DEBUG_OP (u16) 0x5b31
171#define AML_FATAL_OP (u16) 0x5b32 171#define AML_FATAL_OP (u16) 0x5b32
172#define AML_TIMER_OP (u16) 0x5b33 /* ACPI 3.0 */ 172#define AML_TIMER_OP (u16) 0x5b33 /* ACPI 3.0 */
173#define AML_REGION_OP (u16) 0x5b80 173#define AML_REGION_OP (u16) 0x5b80
174#define AML_FIELD_OP (u16) 0x5b81 174#define AML_FIELD_OP (u16) 0x5b81
175#define AML_DEVICE_OP (u16) 0x5b82 175#define AML_DEVICE_OP (u16) 0x5b82
@@ -178,8 +178,7 @@
178#define AML_THERMAL_ZONE_OP (u16) 0x5b85 178#define AML_THERMAL_ZONE_OP (u16) 0x5b85
179#define AML_INDEX_FIELD_OP (u16) 0x5b86 179#define AML_INDEX_FIELD_OP (u16) 0x5b86
180#define AML_BANK_FIELD_OP (u16) 0x5b87 180#define AML_BANK_FIELD_OP (u16) 0x5b87
181#define AML_DATA_REGION_OP (u16) 0x5b88 /* ACPI 2.0 */ 181#define AML_DATA_REGION_OP (u16) 0x5b88 /* ACPI 2.0 */
182
183 182
184/* Bogus opcodes (they are actually two separate opcodes) */ 183/* Bogus opcodes (they are actually two separate opcodes) */
185 184
@@ -187,7 +186,6 @@
187#define AML_LLESSEQUAL_OP (u16) 0x9294 186#define AML_LLESSEQUAL_OP (u16) 0x9294
188#define AML_LNOTEQUAL_OP (u16) 0x9293 187#define AML_LNOTEQUAL_OP (u16) 0x9293
189 188
190
191/* 189/*
192 * Internal opcodes 190 * Internal opcodes
193 * Use only "Unknown" AML opcodes, don't attempt to use 191 * Use only "Unknown" AML opcodes, don't attempt to use
@@ -203,7 +201,6 @@
203#define AML_INT_RETURN_VALUE_OP (u16) 0x0036 201#define AML_INT_RETURN_VALUE_OP (u16) 0x0036
204#define AML_INT_EVAL_SUBTREE_OP (u16) 0x0037 202#define AML_INT_EVAL_SUBTREE_OP (u16) 0x0037
205 203
206
207#define ARG_NONE 0x0 204#define ARG_NONE 0x0
208 205
209/* 206/*
@@ -245,7 +242,7 @@
245 242
246/* Single, simple types */ 243/* Single, simple types */
247 244
248#define ARGI_ANYTYPE 0x01 /* Don't care */ 245#define ARGI_ANYTYPE 0x01 /* Don't care */
249#define ARGI_PACKAGE 0x02 246#define ARGI_PACKAGE 0x02
250#define ARGI_EVENT 0x03 247#define ARGI_EVENT 0x03
251#define ARGI_MUTEX 0x04 248#define ARGI_MUTEX 0x04
@@ -256,8 +253,8 @@
256#define ARGI_INTEGER 0x06 253#define ARGI_INTEGER 0x06
257#define ARGI_STRING 0x07 254#define ARGI_STRING 0x07
258#define ARGI_BUFFER 0x08 255#define ARGI_BUFFER 0x08
259#define ARGI_BUFFER_OR_STRING 0x09 /* Used by MID op only */ 256#define ARGI_BUFFER_OR_STRING 0x09 /* Used by MID op only */
260#define ARGI_COMPUTEDATA 0x0A /* Buffer, String, or Integer */ 257#define ARGI_COMPUTEDATA 0x0A /* Buffer, String, or Integer */
261 258
262/* Reference objects */ 259/* Reference objects */
263 260
@@ -265,30 +262,28 @@
265#define ARGI_OBJECT_REF 0x0C 262#define ARGI_OBJECT_REF 0x0C
266#define ARGI_DEVICE_REF 0x0D 263#define ARGI_DEVICE_REF 0x0D
267#define ARGI_REFERENCE 0x0E 264#define ARGI_REFERENCE 0x0E
268#define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ 265#define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */
269#define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ 266#define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */
270#define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ 267#define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */
271 268
272/* Multiple/complex types */ 269/* Multiple/complex types */
273 270
274#define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by size_of operator*/ 271#define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by size_of operator */
275#define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */ 272#define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */
276#define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */ 273#define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */
277#define ARGI_REGION_OR_FIELD 0x15 /* Used by LOAD op only */ 274#define ARGI_REGION_OR_FIELD 0x15 /* Used by LOAD op only */
278#define ARGI_DATAREFOBJ 0x16 275#define ARGI_DATAREFOBJ 0x16
279 276
280/* Note: types above can expand to 0x1F maximum */ 277/* Note: types above can expand to 0x1F maximum */
281 278
282#define ARGI_INVALID_OPCODE 0xFFFFFFFF 279#define ARGI_INVALID_OPCODE 0xFFFFFFFF
283 280
284
285/* 281/*
286 * hash offsets 282 * hash offsets
287 */ 283 */
288#define AML_EXTOP_HASH_OFFSET 22 284#define AML_EXTOP_HASH_OFFSET 22
289#define AML_LNOT_HASH_OFFSET 19 285#define AML_LNOT_HASH_OFFSET 19
290 286
291
292/* 287/*
293 * opcode groups and types 288 * opcode groups and types
294 */ 289 */
@@ -296,7 +291,6 @@
296#define OPGRP_FIELD 0x02 291#define OPGRP_FIELD 0x02
297#define OPGRP_BYTELIST 0x04 292#define OPGRP_BYTELIST 0x04
298 293
299
300/* 294/*
301 * Opcode information 295 * Opcode information
302 */ 296 */
@@ -322,31 +316,30 @@
322/* Convenient flag groupings */ 316/* Convenient flag groupings */
323 317
324#define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL 318#define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL
325#define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */ 319#define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */
326#define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */ 320#define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */
327#define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET 321#define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET
328#define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* monadic2_r */ 322#define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* monadic2_r */
329#define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */ 323#define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */
330#define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */ 324#define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */
331#define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* dyadic2_r */ 325#define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* dyadic2_r */
332#define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL 326#define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
333#define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS 327#define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS
334#define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL 328#define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
335#define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL 329#define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL
336 330
337
338/* 331/*
339 * The opcode Type is used in a dispatch table, do not change 332 * The opcode Type is used in a dispatch table, do not change
340 * without updating the table. 333 * without updating the table.
341 */ 334 */
342#define AML_TYPE_EXEC_0A_0T_1R 0x00 335#define AML_TYPE_EXEC_0A_0T_1R 0x00
343#define AML_TYPE_EXEC_1A_0T_0R 0x01 /* Monadic1 */ 336#define AML_TYPE_EXEC_1A_0T_0R 0x01 /* Monadic1 */
344#define AML_TYPE_EXEC_1A_0T_1R 0x02 /* Monadic2 */ 337#define AML_TYPE_EXEC_1A_0T_1R 0x02 /* Monadic2 */
345#define AML_TYPE_EXEC_1A_1T_0R 0x03 338#define AML_TYPE_EXEC_1A_1T_0R 0x03
346#define AML_TYPE_EXEC_1A_1T_1R 0x04 /* monadic2_r */ 339#define AML_TYPE_EXEC_1A_1T_1R 0x04 /* monadic2_r */
347#define AML_TYPE_EXEC_2A_0T_0R 0x05 /* Dyadic1 */ 340#define AML_TYPE_EXEC_2A_0T_0R 0x05 /* Dyadic1 */
348#define AML_TYPE_EXEC_2A_0T_1R 0x06 /* Dyadic2 */ 341#define AML_TYPE_EXEC_2A_0T_1R 0x06 /* Dyadic2 */
349#define AML_TYPE_EXEC_2A_1T_1R 0x07 /* dyadic2_r */ 342#define AML_TYPE_EXEC_2A_1T_1R 0x07 /* dyadic2_r */
350#define AML_TYPE_EXEC_2A_2T_1R 0x08 343#define AML_TYPE_EXEC_2A_2T_1R 0x08
351#define AML_TYPE_EXEC_3A_0T_0R 0x09 344#define AML_TYPE_EXEC_3A_0T_0R 0x09
352#define AML_TYPE_EXEC_3A_1T_1R 0x0A 345#define AML_TYPE_EXEC_3A_1T_1R 0x0A
@@ -399,40 +392,33 @@
399#define AML_CLASS_METHOD_CALL 0x09 392#define AML_CLASS_METHOD_CALL 0x09
400#define AML_CLASS_UNKNOWN 0x0A 393#define AML_CLASS_UNKNOWN 0x0A
401 394
402
403/* Predefined Operation Region space_iDs */ 395/* Predefined Operation Region space_iDs */
404 396
405typedef enum 397typedef enum {
406{ 398 REGION_MEMORY = 0,
407 REGION_MEMORY = 0,
408 REGION_IO, 399 REGION_IO,
409 REGION_PCI_CONFIG, 400 REGION_PCI_CONFIG,
410 REGION_EC, 401 REGION_EC,
411 REGION_SMBUS, 402 REGION_SMBUS,
412 REGION_CMOS, 403 REGION_CMOS,
413 REGION_PCI_BAR, 404 REGION_PCI_BAR,
414 REGION_DATA_TABLE, /* Internal use only */ 405 REGION_DATA_TABLE, /* Internal use only */
415 REGION_FIXED_HW = 0x7F 406 REGION_FIXED_HW = 0x7F
416
417} AML_REGION_TYPES; 407} AML_REGION_TYPES;
418 408
419
420/* Comparison operation codes for match_op operator */ 409/* Comparison operation codes for match_op operator */
421 410
422typedef enum 411typedef enum {
423{ 412 MATCH_MTR = 0,
424 MATCH_MTR = 0, 413 MATCH_MEQ = 1,
425 MATCH_MEQ = 1, 414 MATCH_MLE = 2,
426 MATCH_MLE = 2, 415 MATCH_MLT = 3,
427 MATCH_MLT = 3, 416 MATCH_MGE = 4,
428 MATCH_MGE = 4, 417 MATCH_MGT = 5
429 MATCH_MGT = 5
430
431} AML_MATCH_OPERATOR; 418} AML_MATCH_OPERATOR;
432 419
433#define MAX_MATCH_OPERATOR 5 420#define MAX_MATCH_OPERATOR 5
434 421
435
436/* 422/*
437 * field_flags 423 * field_flags
438 * 424 *
@@ -450,60 +436,47 @@ typedef enum
450#define AML_FIELD_LOCK_RULE_MASK 0x10 436#define AML_FIELD_LOCK_RULE_MASK 0x10
451#define AML_FIELD_UPDATE_RULE_MASK 0x60 437#define AML_FIELD_UPDATE_RULE_MASK 0x60
452 438
453
454/* 1) Field Access Types */ 439/* 1) Field Access Types */
455 440
456typedef enum 441typedef enum {
457{ 442 AML_FIELD_ACCESS_ANY = 0x00,
458 AML_FIELD_ACCESS_ANY = 0x00, 443 AML_FIELD_ACCESS_BYTE = 0x01,
459 AML_FIELD_ACCESS_BYTE = 0x01, 444 AML_FIELD_ACCESS_WORD = 0x02,
460 AML_FIELD_ACCESS_WORD = 0x02, 445 AML_FIELD_ACCESS_DWORD = 0x03,
461 AML_FIELD_ACCESS_DWORD = 0x03, 446 AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */
462 AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */ 447 AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */
463 AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */
464
465} AML_ACCESS_TYPE; 448} AML_ACCESS_TYPE;
466 449
467
468/* 2) Field Lock Rules */ 450/* 2) Field Lock Rules */
469 451
470typedef enum 452typedef enum {
471{ 453 AML_FIELD_LOCK_NEVER = 0x00,
472 AML_FIELD_LOCK_NEVER = 0x00, 454 AML_FIELD_LOCK_ALWAYS = 0x10
473 AML_FIELD_LOCK_ALWAYS = 0x10
474
475} AML_LOCK_RULE; 455} AML_LOCK_RULE;
476 456
477
478/* 3) Field Update Rules */ 457/* 3) Field Update Rules */
479 458
480typedef enum 459typedef enum {
481{ 460 AML_FIELD_UPDATE_PRESERVE = 0x00,
482 AML_FIELD_UPDATE_PRESERVE = 0x00, 461 AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20,
483 AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20,
484 AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40 462 AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40
485
486} AML_UPDATE_RULE; 463} AML_UPDATE_RULE;
487 464
488
489/* 465/*
490 * Field Access Attributes. 466 * Field Access Attributes.
491 * This byte is extracted from the AML via the 467 * This byte is extracted from the AML via the
492 * access_as keyword 468 * access_as keyword
493 */ 469 */
494typedef enum 470typedef enum {
495{ 471 AML_FIELD_ATTRIB_SMB_QUICK = 0x02,
496 AML_FIELD_ATTRIB_SMB_QUICK = 0x02, 472 AML_FIELD_ATTRIB_SMB_SEND_RCV = 0x04,
497 AML_FIELD_ATTRIB_SMB_SEND_RCV = 0x04, 473 AML_FIELD_ATTRIB_SMB_BYTE = 0x06,
498 AML_FIELD_ATTRIB_SMB_BYTE = 0x06, 474 AML_FIELD_ATTRIB_SMB_WORD = 0x08,
499 AML_FIELD_ATTRIB_SMB_WORD = 0x08, 475 AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A,
500 AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A, 476 AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C,
501 AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C,
502 AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D 477 AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D
503
504} AML_ACCESS_ATTRIBUTE; 478} AML_ACCESS_ATTRIBUTE;
505 479
506
507/* Bit fields in method_flags byte */ 480/* Bit fields in method_flags byte */
508 481
509#define AML_METHOD_ARG_COUNT 0x07 482#define AML_METHOD_ARG_COUNT 0x07
@@ -516,5 +489,4 @@ typedef enum
516#define AML_METHOD_RESERVED1 0x02 489#define AML_METHOD_RESERVED1 0x02
517#define AML_METHOD_RESERVED2 0x04 490#define AML_METHOD_RESERVED2 0x04
518 491
519 492#endif /* __AMLCODE_H__ */
520#endif /* __AMLCODE_H__ */
diff --git a/include/acpi/amlresrc.h b/include/acpi/amlresrc.h
index b20ec303df07..051786e4b210 100644
--- a/include/acpi/amlresrc.h
+++ b/include/acpi/amlresrc.h
@@ -42,29 +42,27 @@
42 * POSSIBILITY OF SUCH DAMAGES. 42 * POSSIBILITY OF SUCH DAMAGES.
43 */ 43 */
44 44
45
46#ifndef __AMLRESRC_H 45#ifndef __AMLRESRC_H
47#define __AMLRESRC_H 46#define __AMLRESRC_H
48 47
49
50#define ASL_RESNAME_ADDRESS "_ADR" 48#define ASL_RESNAME_ADDRESS "_ADR"
51#define ASL_RESNAME_ALIGNMENT "_ALN" 49#define ASL_RESNAME_ALIGNMENT "_ALN"
52#define ASL_RESNAME_ADDRESSSPACE "_ASI" 50#define ASL_RESNAME_ADDRESSSPACE "_ASI"
53#define ASL_RESNAME_ACCESSSIZE "_ASZ" 51#define ASL_RESNAME_ACCESSSIZE "_ASZ"
54#define ASL_RESNAME_TYPESPECIFICATTRIBUTES "_ATT" 52#define ASL_RESNAME_TYPESPECIFICATTRIBUTES "_ATT"
55#define ASL_RESNAME_BASEADDRESS "_BAS" 53#define ASL_RESNAME_BASEADDRESS "_BAS"
56#define ASL_RESNAME_BUSMASTER "_BM_" /* Master(1), Slave(0) */ 54#define ASL_RESNAME_BUSMASTER "_BM_" /* Master(1), Slave(0) */
57#define ASL_RESNAME_DECODE "_DEC" 55#define ASL_RESNAME_DECODE "_DEC"
58#define ASL_RESNAME_DMA "_DMA" 56#define ASL_RESNAME_DMA "_DMA"
59#define ASL_RESNAME_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ 57#define ASL_RESNAME_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
60#define ASL_RESNAME_GRANULARITY "_GRA" 58#define ASL_RESNAME_GRANULARITY "_GRA"
61#define ASL_RESNAME_INTERRUPT "_INT" 59#define ASL_RESNAME_INTERRUPT "_INT"
62#define ASL_RESNAME_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */ 60#define ASL_RESNAME_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */
63#define ASL_RESNAME_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */ 61#define ASL_RESNAME_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */
64#define ASL_RESNAME_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ 62#define ASL_RESNAME_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
65#define ASL_RESNAME_LENGTH "_LEN" 63#define ASL_RESNAME_LENGTH "_LEN"
66#define ASL_RESNAME_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ 64#define ASL_RESNAME_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
67#define ASL_RESNAME_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ 65#define ASL_RESNAME_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
68#define ASL_RESNAME_MAXADDR "_MAX" 66#define ASL_RESNAME_MAXADDR "_MAX"
69#define ASL_RESNAME_MINADDR "_MIN" 67#define ASL_RESNAME_MINADDR "_MIN"
70#define ASL_RESNAME_MAXTYPE "_MAF" 68#define ASL_RESNAME_MAXTYPE "_MAF"
@@ -72,12 +70,11 @@
72#define ASL_RESNAME_REGISTERBITOFFSET "_RBO" 70#define ASL_RESNAME_REGISTERBITOFFSET "_RBO"
73#define ASL_RESNAME_REGISTERBITWIDTH "_RBW" 71#define ASL_RESNAME_REGISTERBITWIDTH "_RBW"
74#define ASL_RESNAME_RANGETYPE "_RNG" 72#define ASL_RESNAME_RANGETYPE "_RNG"
75#define ASL_RESNAME_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */ 73#define ASL_RESNAME_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */
76#define ASL_RESNAME_TRANSLATION "_TRA" 74#define ASL_RESNAME_TRANSLATION "_TRA"
77#define ASL_RESNAME_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ 75#define ASL_RESNAME_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
78#define ASL_RESNAME_TYPE "_TTP" /* Translation(1), Static (0) */ 76#define ASL_RESNAME_TYPE "_TTP" /* Translation(1), Static (0) */
79#define ASL_RESNAME_XFERTYPE "_SIz" /* 8(0), 8_and16(1), 16(2) */ 77#define ASL_RESNAME_XFERTYPE "_SIz" /* 8(0), 8_and16(1), 16(2) */
80
81 78
82/* Default sizes for "small" resource descriptors */ 79/* Default sizes for "small" resource descriptors */
83 80
@@ -89,15 +86,12 @@
89#define ASL_RDESC_FIXED_IO_SIZE 0x03 86#define ASL_RDESC_FIXED_IO_SIZE 0x03
90#define ASL_RDESC_END_TAG_SIZE 0x01 87#define ASL_RDESC_END_TAG_SIZE 0x01
91 88
92 89struct asl_resource_node {
93struct asl_resource_node 90 u32 buffer_length;
94{ 91 void *buffer;
95 u32 buffer_length; 92 struct asl_resource_node *next;
96 void *buffer;
97 struct asl_resource_node *next;
98}; 93};
99 94
100
101/* 95/*
102 * Resource descriptors defined in the ACPI specification. 96 * Resource descriptors defined in the ACPI specification.
103 * 97 *
@@ -106,214 +100,175 @@ struct asl_resource_node
106 */ 100 */
107#pragma pack(1) 101#pragma pack(1)
108 102
109struct asl_irq_format_desc 103struct asl_irq_format_desc {
110{ 104 u8 descriptor_type;
111 u8 descriptor_type; 105 u16 irq_mask;
112 u16 irq_mask; 106 u8 flags;
113 u8 flags;
114}; 107};
115 108
116 109struct asl_irq_noflags_desc {
117struct asl_irq_noflags_desc 110 u8 descriptor_type;
118{ 111 u16 irq_mask;
119 u8 descriptor_type;
120 u16 irq_mask;
121}; 112};
122 113
123 114struct asl_dma_format_desc {
124struct asl_dma_format_desc 115 u8 descriptor_type;
125{ 116 u8 dma_channel_mask;
126 u8 descriptor_type; 117 u8 flags;
127 u8 dma_channel_mask;
128 u8 flags;
129}; 118};
130 119
131 120struct asl_start_dependent_desc {
132struct asl_start_dependent_desc 121 u8 descriptor_type;
133{ 122 u8 flags;
134 u8 descriptor_type;
135 u8 flags;
136}; 123};
137 124
138 125struct asl_start_dependent_noprio_desc {
139struct asl_start_dependent_noprio_desc 126 u8 descriptor_type;
140{
141 u8 descriptor_type;
142}; 127};
143 128
144 129struct asl_end_dependent_desc {
145struct asl_end_dependent_desc 130 u8 descriptor_type;
146{
147 u8 descriptor_type;
148}; 131};
149 132
150 133struct asl_io_port_desc {
151struct asl_io_port_desc 134 u8 descriptor_type;
152{ 135 u8 information;
153 u8 descriptor_type; 136 u16 address_min;
154 u8 information; 137 u16 address_max;
155 u16 address_min; 138 u8 alignment;
156 u16 address_max; 139 u8 length;
157 u8 alignment;
158 u8 length;
159}; 140};
160 141
161 142struct asl_fixed_io_port_desc {
162struct asl_fixed_io_port_desc 143 u8 descriptor_type;
163{ 144 u16 base_address;
164 u8 descriptor_type; 145 u8 length;
165 u16 base_address;
166 u8 length;
167}; 146};
168 147
169 148struct asl_small_vendor_desc {
170struct asl_small_vendor_desc 149 u8 descriptor_type;
171{ 150 u8 vendor_defined[7];
172 u8 descriptor_type;
173 u8 vendor_defined[7];
174}; 151};
175 152
176 153struct asl_end_tag_desc {
177struct asl_end_tag_desc 154 u8 descriptor_type;
178{ 155 u8 checksum;
179 u8 descriptor_type;
180 u8 checksum;
181}; 156};
182 157
183
184/* LARGE descriptors */ 158/* LARGE descriptors */
185 159
186struct asl_memory_24_desc 160struct asl_memory_24_desc {
187{ 161 u8 descriptor_type;
188 u8 descriptor_type; 162 u16 length;
189 u16 length; 163 u8 information;
190 u8 information; 164 u16 address_min;
191 u16 address_min; 165 u16 address_max;
192 u16 address_max; 166 u16 alignment;
193 u16 alignment; 167 u16 range_length;
194 u16 range_length;
195}; 168};
196 169
197 170struct asl_large_vendor_desc {
198struct asl_large_vendor_desc 171 u8 descriptor_type;
199{ 172 u16 length;
200 u8 descriptor_type; 173 u8 vendor_defined[1];
201 u16 length;
202 u8 vendor_defined[1];
203}; 174};
204 175
205 176struct asl_memory_32_desc {
206struct asl_memory_32_desc 177 u8 descriptor_type;
207{ 178 u16 length;
208 u8 descriptor_type; 179 u8 information;
209 u16 length; 180 u32 address_min;
210 u8 information; 181 u32 address_max;
211 u32 address_min; 182 u32 alignment;
212 u32 address_max; 183 u32 range_length;
213 u32 alignment;
214 u32 range_length;
215}; 184};
216 185
217 186struct asl_fixed_memory_32_desc {
218struct asl_fixed_memory_32_desc 187 u8 descriptor_type;
219{ 188 u16 length;
220 u8 descriptor_type; 189 u8 information;
221 u16 length; 190 u32 base_address;
222 u8 information; 191 u32 range_length;
223 u32 base_address;
224 u32 range_length;
225}; 192};
226 193
227 194struct asl_extended_address_desc {
228struct asl_extended_address_desc 195 u8 descriptor_type;
229{ 196 u16 length;
230 u8 descriptor_type; 197 u8 resource_type;
231 u16 length; 198 u8 flags;
232 u8 resource_type; 199 u8 specific_flags;
233 u8 flags; 200 u8 revision_iD;
234 u8 specific_flags; 201 u8 reserved;
235 u8 revision_iD; 202 u64 granularity;
236 u8 reserved; 203 u64 address_min;
237 u64 granularity; 204 u64 address_max;
238 u64 address_min; 205 u64 translation_offset;
239 u64 address_max; 206 u64 address_length;
240 u64 translation_offset; 207 u64 type_specific_attributes;
241 u64 address_length; 208 u8 optional_fields[2]; /* Used for length calculation only */
242 u64 type_specific_attributes;
243 u8 optional_fields[2]; /* Used for length calculation only */
244}; 209};
245 210
246#define ASL_EXTENDED_ADDRESS_DESC_REVISION 1 /* ACPI 3.0 */ 211#define ASL_EXTENDED_ADDRESS_DESC_REVISION 1 /* ACPI 3.0 */
247 212
248 213struct asl_qword_address_desc {
249struct asl_qword_address_desc 214 u8 descriptor_type;
250{ 215 u16 length;
251 u8 descriptor_type; 216 u8 resource_type;
252 u16 length; 217 u8 flags;
253 u8 resource_type; 218 u8 specific_flags;
254 u8 flags; 219 u64 granularity;
255 u8 specific_flags; 220 u64 address_min;
256 u64 granularity; 221 u64 address_max;
257 u64 address_min; 222 u64 translation_offset;
258 u64 address_max; 223 u64 address_length;
259 u64 translation_offset; 224 u8 optional_fields[2];
260 u64 address_length;
261 u8 optional_fields[2];
262}; 225};
263 226
264 227struct asl_dword_address_desc {
265struct asl_dword_address_desc 228 u8 descriptor_type;
266{ 229 u16 length;
267 u8 descriptor_type; 230 u8 resource_type;
268 u16 length; 231 u8 flags;
269 u8 resource_type; 232 u8 specific_flags;
270 u8 flags; 233 u32 granularity;
271 u8 specific_flags; 234 u32 address_min;
272 u32 granularity; 235 u32 address_max;
273 u32 address_min; 236 u32 translation_offset;
274 u32 address_max; 237 u32 address_length;
275 u32 translation_offset; 238 u8 optional_fields[2];
276 u32 address_length;
277 u8 optional_fields[2];
278}; 239};
279 240
280 241struct asl_word_address_desc {
281struct asl_word_address_desc 242 u8 descriptor_type;
282{ 243 u16 length;
283 u8 descriptor_type; 244 u8 resource_type;
284 u16 length; 245 u8 flags;
285 u8 resource_type; 246 u8 specific_flags;
286 u8 flags; 247 u16 granularity;
287 u8 specific_flags; 248 u16 address_min;
288 u16 granularity; 249 u16 address_max;
289 u16 address_min; 250 u16 translation_offset;
290 u16 address_max; 251 u16 address_length;
291 u16 translation_offset; 252 u8 optional_fields[2];
292 u16 address_length;
293 u8 optional_fields[2];
294}; 253};
295 254
296 255struct asl_extended_xrupt_desc {
297struct asl_extended_xrupt_desc 256 u8 descriptor_type;
298{ 257 u16 length;
299 u8 descriptor_type; 258 u8 flags;
300 u16 length; 259 u8 table_length;
301 u8 flags; 260 u32 interrupt_number[1];
302 u8 table_length;
303 u32 interrupt_number[1];
304 /* res_source_index, res_source optional fields follow */ 261 /* res_source_index, res_source optional fields follow */
305}; 262};
306 263
307 264struct asl_general_register_desc {
308struct asl_general_register_desc 265 u8 descriptor_type;
309{ 266 u16 length;
310 u8 descriptor_type; 267 u8 address_space_id;
311 u16 length; 268 u8 bit_width;
312 u8 address_space_id; 269 u8 bit_offset;
313 u8 bit_width; 270 u8 access_size; /* ACPI 3.0, was Reserved */
314 u8 bit_offset; 271 u64 address;
315 u8 access_size; /* ACPI 3.0, was Reserved */
316 u64 address;
317}; 272};
318 273
319/* restore default alignment */ 274/* restore default alignment */
@@ -322,32 +277,29 @@ struct asl_general_register_desc
322 277
323/* Union of all resource descriptors, so we can allocate the worst case */ 278/* Union of all resource descriptors, so we can allocate the worst case */
324 279
325union asl_resource_desc 280union asl_resource_desc {
326{ 281 struct asl_irq_format_desc irq;
327 struct asl_irq_format_desc irq; 282 struct asl_dma_format_desc dma;
328 struct asl_dma_format_desc dma; 283 struct asl_start_dependent_desc std;
329 struct asl_start_dependent_desc std; 284 struct asl_end_dependent_desc end;
330 struct asl_end_dependent_desc end; 285 struct asl_io_port_desc iop;
331 struct asl_io_port_desc iop; 286 struct asl_fixed_io_port_desc fio;
332 struct asl_fixed_io_port_desc fio; 287 struct asl_small_vendor_desc smv;
333 struct asl_small_vendor_desc smv; 288 struct asl_end_tag_desc et;
334 struct asl_end_tag_desc et; 289
335 290 struct asl_memory_24_desc M24;
336 struct asl_memory_24_desc M24; 291 struct asl_large_vendor_desc lgv;
337 struct asl_large_vendor_desc lgv; 292 struct asl_memory_32_desc M32;
338 struct asl_memory_32_desc M32; 293 struct asl_fixed_memory_32_desc F32;
339 struct asl_fixed_memory_32_desc F32; 294 struct asl_qword_address_desc qas;
340 struct asl_qword_address_desc qas; 295 struct asl_dword_address_desc das;
341 struct asl_dword_address_desc das; 296 struct asl_word_address_desc was;
342 struct asl_word_address_desc was; 297 struct asl_extended_address_desc eas;
343 struct asl_extended_address_desc eas; 298 struct asl_extended_xrupt_desc exx;
344 struct asl_extended_xrupt_desc exx; 299 struct asl_general_register_desc grg;
345 struct asl_general_register_desc grg; 300 u32 u32_item;
346 u32 u32_item; 301 u16 u16_item;
347 u16 u16_item; 302 u8 U8item;
348 u8 U8item;
349}; 303};
350 304
351
352#endif 305#endif
353
diff --git a/include/acpi/container.h b/include/acpi/container.h
index d716df04d9dc..a703f14e049e 100644
--- a/include/acpi/container.h
+++ b/include/acpi/container.h
@@ -9,5 +9,4 @@ struct acpi_container {
9 int state; 9 int state;
10}; 10};
11 11
12#endif /* __ACPI_CONTAINER_H */ 12#endif /* __ACPI_CONTAINER_H */
13
diff --git a/include/acpi/pdc_intel.h b/include/acpi/pdc_intel.h
index fd6730e4e567..91f4a12a99a1 100644
--- a/include/acpi/pdc_intel.h
+++ b/include/acpi/pdc_intel.h
@@ -14,7 +14,6 @@
14#define ACPI_PDC_SMP_T_SWCOORD (0x0080) 14#define ACPI_PDC_SMP_T_SWCOORD (0x0080)
15#define ACPI_PDC_C_C1_FFH (0x0100) 15#define ACPI_PDC_C_C1_FFH (0x0100)
16 16
17
18#define ACPI_PDC_EST_CAPABILITY_SMP (ACPI_PDC_SMP_C1PT | \ 17#define ACPI_PDC_EST_CAPABILITY_SMP (ACPI_PDC_SMP_C1PT | \
19 ACPI_PDC_C_C1_HALT) 18 ACPI_PDC_C_C1_HALT)
20 19
@@ -25,5 +24,4 @@
25 ACPI_PDC_SMP_C1PT | \ 24 ACPI_PDC_SMP_C1PT | \
26 ACPI_PDC_C_C1_HALT) 25 ACPI_PDC_C_C1_HALT)
27 26
28#endif /* __PDC_INTEL_H__ */ 27#endif /* __PDC_INTEL_H__ */
29
diff --git a/include/acpi/platform/acenv.h b/include/acpi/platform/acenv.h
index adf969efa510..16609c1ab2eb 100644
--- a/include/acpi/platform/acenv.h
+++ b/include/acpi/platform/acenv.h
@@ -44,40 +44,42 @@
44#ifndef __ACENV_H__ 44#ifndef __ACENV_H__
45#define __ACENV_H__ 45#define __ACENV_H__
46 46
47
48/* 47/*
49 * Configuration for ACPI tools and utilities 48 * Configuration for ACPI tools and utilities
50 */ 49 */
51 50
52#ifdef _ACPI_DUMP_APP 51#ifdef ACPI_LIBRARY
52#define ACPI_USE_LOCAL_CACHE
53#endif
54
55#ifdef ACPI_DUMP_APP
53#ifndef MSDOS 56#ifndef MSDOS
54#define ACPI_DEBUG_OUTPUT 57#define ACPI_DEBUG_OUTPUT
55#endif 58#endif
56#define ACPI_APPLICATION 59#define ACPI_APPLICATION
57#define ACPI_DISASSEMBLER 60#define ACPI_DISASSEMBLER
58#define ACPI_NO_METHOD_EXECUTION 61#define ACPI_NO_METHOD_EXECUTION
59#define ACPI_USE_SYSTEM_CLIBRARY
60#define ACPI_ENABLE_OBJECT_CACHE
61#endif 62#endif
62 63
63#ifdef _ACPI_EXEC_APP 64#ifdef ACPI_EXEC_APP
64#undef DEBUGGER_THREADING 65#undef DEBUGGER_THREADING
65#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED 66#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
66#define ACPI_DEBUG_OUTPUT 67#define ACPI_DEBUG_OUTPUT
67#define ACPI_APPLICATION 68#define ACPI_APPLICATION
68#define ACPI_DEBUGGER 69#define ACPI_DEBUGGER
69#define ACPI_DISASSEMBLER 70#define ACPI_DISASSEMBLER
70#define ACPI_USE_SYSTEM_CLIBRARY
71#define ACPI_ENABLE_OBJECT_CACHE
72#endif 71#endif
73 72
74#ifdef _ACPI_ASL_COMPILER 73#ifdef ACPI_ASL_COMPILER
75#define ACPI_DEBUG_OUTPUT 74#define ACPI_DEBUG_OUTPUT
76#define ACPI_APPLICATION 75#define ACPI_APPLICATION
77#define ACPI_DISASSEMBLER 76#define ACPI_DISASSEMBLER
78#define ACPI_CONSTANT_EVAL_ONLY 77#define ACPI_CONSTANT_EVAL_ONLY
78#endif
79
80#ifdef ACPI_APPLICATION
79#define ACPI_USE_SYSTEM_CLIBRARY 81#define ACPI_USE_SYSTEM_CLIBRARY
80#define ACPI_ENABLE_OBJECT_CACHE 82#define ACPI_USE_LOCAL_CACHE
81#endif 83#endif
82 84
83/* 85/*
@@ -131,7 +133,7 @@
131#elif defined(WIN64) 133#elif defined(WIN64)
132#include "acwin64.h" 134#include "acwin64.h"
133 135
134#elif defined(MSDOS) /* Must appear after WIN32 and WIN64 check */ 136#elif defined(MSDOS) /* Must appear after WIN32 and WIN64 check */
135#include "acdos16.h" 137#include "acdos16.h"
136 138
137#elif defined(__FreeBSD__) 139#elif defined(__FreeBSD__)
@@ -177,7 +179,6 @@
177 179
178/*! [End] no source code translation !*/ 180/*! [End] no source code translation !*/
179 181
180
181/* 182/*
182 * Debugger threading model 183 * Debugger threading model
183 * Use single threaded if the entire subsystem is contained in an application 184 * Use single threaded if the entire subsystem is contained in an application
@@ -196,8 +197,7 @@
196#else 197#else
197#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED 198#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED
198#endif 199#endif
199#endif /* !DEBUGGER_THREADING */ 200#endif /* !DEBUGGER_THREADING */
200
201 201
202/****************************************************************************** 202/******************************************************************************
203 * 203 *
@@ -219,7 +219,7 @@
219#include <string.h> 219#include <string.h>
220#include <ctype.h> 220#include <ctype.h>
221 221
222#endif /* ACPI_USE_STANDARD_HEADERS */ 222#endif /* ACPI_USE_STANDARD_HEADERS */
223 223
224/* 224/*
225 * We will be linking to the standard Clib functions 225 * We will be linking to the standard Clib functions
@@ -238,15 +238,15 @@
238#define ACPI_MEMCPY(d,s,n) (void) memcpy((d), (s), (acpi_size)(n)) 238#define ACPI_MEMCPY(d,s,n) (void) memcpy((d), (s), (acpi_size)(n))
239#define ACPI_MEMSET(d,s,n) (void) memset((d), (s), (acpi_size)(n)) 239#define ACPI_MEMSET(d,s,n) (void) memset((d), (s), (acpi_size)(n))
240 240
241#define ACPI_TOUPPER toupper 241#define ACPI_TOUPPER(i) toupper((int) (i))
242#define ACPI_TOLOWER tolower 242#define ACPI_TOLOWER(i) tolower((int) (i))
243#define ACPI_IS_XDIGIT isxdigit 243#define ACPI_IS_XDIGIT(i) isxdigit((int) (i))
244#define ACPI_IS_DIGIT isdigit 244#define ACPI_IS_DIGIT(i) isdigit((int) (i))
245#define ACPI_IS_SPACE isspace 245#define ACPI_IS_SPACE(i) isspace((int) (i))
246#define ACPI_IS_UPPER isupper 246#define ACPI_IS_UPPER(i) isupper((int) (i))
247#define ACPI_IS_PRINT isprint 247#define ACPI_IS_PRINT(i) isprint((int) (i))
248#define ACPI_IS_ALPHA isalpha 248#define ACPI_IS_ALPHA(i) isalpha((int) (i))
249#define ACPI_IS_ASCII isascii 249#define ACPI_IS_ASCII(i) isascii((int) (i))
250 250
251#else 251#else
252 252
@@ -257,18 +257,18 @@
257 *****************************************************************************/ 257 *****************************************************************************/
258 258
259 /* 259 /*
260 * Use local definitions of C library macros and functions 260 * Use local definitions of C library macros and functions
261 * NOTE: The function implementations may not be as efficient 261 * NOTE: The function implementations may not be as efficient
262 * as an inline or assembly code implementation provided by a 262 * as an inline or assembly code implementation provided by a
263 * native C library. 263 * native C library.
264 */ 264 */
265 265
266#ifndef va_arg 266#ifndef va_arg
267 267
268#ifndef _VALIST 268#ifndef _VALIST
269#define _VALIST 269#define _VALIST
270typedef char *va_list; 270typedef char *va_list;
271#endif /* _VALIST */ 271#endif /* _VALIST */
272 272
273/* 273/*
274 * Storage alignment properties 274 * Storage alignment properties
@@ -284,8 +284,7 @@ typedef char *va_list;
284#define va_end(ap) (void) 0 284#define va_end(ap) (void) 0
285#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND)))) 285#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
286 286
287#endif /* va_arg */ 287#endif /* va_arg */
288
289 288
290#define ACPI_STRSTR(s1,s2) acpi_ut_strstr ((s1), (s2)) 289#define ACPI_STRSTR(s1,s2) acpi_ut_strstr ((s1), (s2))
291#define ACPI_STRCHR(s1,c) acpi_ut_strchr ((s1), (c)) 290#define ACPI_STRCHR(s1,c) acpi_ut_strchr ((s1), (c))
@@ -303,8 +302,7 @@ typedef char *va_list;
303#define ACPI_TOUPPER acpi_ut_to_upper 302#define ACPI_TOUPPER acpi_ut_to_upper
304#define ACPI_TOLOWER acpi_ut_to_lower 303#define ACPI_TOLOWER acpi_ut_to_lower
305 304
306#endif /* ACPI_USE_SYSTEM_CLIBRARY */ 305#endif /* ACPI_USE_SYSTEM_CLIBRARY */
307
308 306
309/****************************************************************************** 307/******************************************************************************
310 * 308 *
@@ -345,8 +343,7 @@ typedef char *va_list;
345#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq) 343#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq)
346#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq) 344#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq)
347 345
348#endif /* ACPI_ASM_MACROS */ 346#endif /* ACPI_ASM_MACROS */
349
350 347
351#ifdef ACPI_APPLICATION 348#ifdef ACPI_APPLICATION
352 349
@@ -356,11 +353,10 @@ typedef char *va_list;
356#define BREAKPOINT3 353#define BREAKPOINT3
357#endif 354#endif
358 355
359
360/****************************************************************************** 356/******************************************************************************
361 * 357 *
362 * Compiler-specific information is contained in the compiler-specific 358 * Compiler-specific information is contained in the compiler-specific
363 * headers. 359 * headers.
364 * 360 *
365 *****************************************************************************/ 361 *****************************************************************************/
366#endif /* __ACENV_H__ */ 362#endif /* __ACENV_H__ */
diff --git a/include/acpi/platform/acgcc.h b/include/acpi/platform/acgcc.h
index 91fda36b042b..4c0e0ba09ba0 100644
--- a/include/acpi/platform/acgcc.h
+++ b/include/acpi/platform/acgcc.h
@@ -44,16 +44,20 @@
44#ifndef __ACGCC_H__ 44#ifndef __ACGCC_H__
45#define __ACGCC_H__ 45#define __ACGCC_H__
46 46
47/* Function name is used for debug output. Non-ANSI, compiler-dependent */
48
49#define ACPI_GET_FUNCTION_NAME __FUNCTION__
50
47/* This macro is used to tag functions as "printf-like" because 51/* This macro is used to tag functions as "printf-like" because
48 * some compilers (like GCC) can catch printf format string problems. 52 * some compilers (like GCC) can catch printf format string problems.
49 */ 53 */
50#define ACPI_PRINTF_LIKE_FUNC __attribute__ ((__format__ (__printf__, 4, 5))) 54#define ACPI_PRINTF_LIKE_FUNC __attribute__ ((__format__ (__printf__, 6, 7)))
51 55
52/* Some compilers complain about unused variables. Sometimes we don't want to 56/* Some compilers complain about unused variables. Sometimes we don't want to
53 * use all the variables (most specifically for _THIS_MODULE). This allow us 57 * use all the variables (for example, _acpi_module_name). This allows us
54 * to to tell the compiler warning in a per-variable manner that a variable 58 * to to tell the compiler warning in a per-variable manner that a variable
55 * is unused. 59 * is unused.
56 */ 60 */
57#define ACPI_UNUSED_VAR __attribute__ ((unused)) 61#define ACPI_UNUSED_VAR __attribute__ ((unused))
58 62
59#endif /* __ACGCC_H__ */ 63#endif /* __ACGCC_H__ */
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index a3de0db85694..c93e6562f0e1 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -62,7 +62,16 @@
62 62
63#define ACPI_MACHINE_WIDTH BITS_PER_LONG 63#define ACPI_MACHINE_WIDTH BITS_PER_LONG
64 64
65#else /* !__KERNEL__ */ 65/* Type(s) for the OSL */
66
67#ifdef ACPI_USE_LOCAL_CACHE
68#define acpi_cache_t struct acpi_memory_list
69#else
70#include <linux/slab.h>
71#define acpi_cache_t kmem_cache_t
72#endif
73
74#else /* !__KERNEL__ */
66 75
67#include <stdarg.h> 76#include <stdarg.h>
68#include <string.h> 77#include <string.h>
@@ -83,10 +92,10 @@
83 92
84#define __cdecl 93#define __cdecl
85#define ACPI_FLUSH_CPU_CACHE() 94#define ACPI_FLUSH_CPU_CACHE()
86#endif /* __KERNEL__ */ 95#endif /* __KERNEL__ */
87 96
88/* Linux uses GCC */ 97/* Linux uses GCC */
89 98
90#include "acgcc.h" 99#include "acgcc.h"
91 100
92#endif /* __ACLINUX_H__ */ 101#endif /* __ACLINUX_H__ */
diff --git a/include/acpi/processor.h b/include/acpi/processor.h
index 50cfea4ff6ca..7a00d5089de9 100644
--- a/include/acpi/processor.h
+++ b/include/acpi/processor.h
@@ -23,45 +23,44 @@
23struct acpi_processor_cx; 23struct acpi_processor_cx;
24 24
25struct acpi_power_register { 25struct acpi_power_register {
26 u8 descriptor; 26 u8 descriptor;
27 u16 length; 27 u16 length;
28 u8 space_id; 28 u8 space_id;
29 u8 bit_width; 29 u8 bit_width;
30 u8 bit_offset; 30 u8 bit_offset;
31 u8 reserved; 31 u8 reserved;
32 u64 address; 32 u64 address;
33} __attribute__ ((packed)); 33} __attribute__ ((packed));
34 34
35
36struct acpi_processor_cx_policy { 35struct acpi_processor_cx_policy {
37 u32 count; 36 u32 count;
38 struct acpi_processor_cx *state; 37 struct acpi_processor_cx *state;
39 struct { 38 struct {
40 u32 time; 39 u32 time;
41 u32 ticks; 40 u32 ticks;
42 u32 count; 41 u32 count;
43 u32 bm; 42 u32 bm;
44 } threshold; 43 } threshold;
45}; 44};
46 45
47struct acpi_processor_cx { 46struct acpi_processor_cx {
48 u8 valid; 47 u8 valid;
49 u8 type; 48 u8 type;
50 u32 address; 49 u32 address;
51 u32 latency; 50 u32 latency;
52 u32 latency_ticks; 51 u32 latency_ticks;
53 u32 power; 52 u32 power;
54 u32 usage; 53 u32 usage;
55 struct acpi_processor_cx_policy promotion; 54 struct acpi_processor_cx_policy promotion;
56 struct acpi_processor_cx_policy demotion; 55 struct acpi_processor_cx_policy demotion;
57}; 56};
58 57
59struct acpi_processor_power { 58struct acpi_processor_power {
60 struct acpi_processor_cx *state; 59 struct acpi_processor_cx *state;
61 unsigned long bm_check_timestamp; 60 unsigned long bm_check_timestamp;
62 u32 default_state; 61 u32 default_state;
63 u32 bm_activity; 62 u32 bm_activity;
64 int count; 63 int count;
65 struct acpi_processor_cx states[ACPI_PROCESSOR_MAX_POWER]; 64 struct acpi_processor_cx states[ACPI_PROCESSOR_MAX_POWER];
66 65
67 /* the _PDC objects passed by the driver, if any */ 66 /* the _PDC objects passed by the driver, if any */
@@ -71,85 +70,82 @@ struct acpi_processor_power {
71/* Performance Management */ 70/* Performance Management */
72 71
73struct acpi_pct_register { 72struct acpi_pct_register {
74 u8 descriptor; 73 u8 descriptor;
75 u16 length; 74 u16 length;
76 u8 space_id; 75 u8 space_id;
77 u8 bit_width; 76 u8 bit_width;
78 u8 bit_offset; 77 u8 bit_offset;
79 u8 reserved; 78 u8 reserved;
80 u64 address; 79 u64 address;
81} __attribute__ ((packed)); 80} __attribute__ ((packed));
82 81
83struct acpi_processor_px { 82struct acpi_processor_px {
84 acpi_integer core_frequency; /* megahertz */ 83 acpi_integer core_frequency; /* megahertz */
85 acpi_integer power; /* milliWatts */ 84 acpi_integer power; /* milliWatts */
86 acpi_integer transition_latency; /* microseconds */ 85 acpi_integer transition_latency; /* microseconds */
87 acpi_integer bus_master_latency; /* microseconds */ 86 acpi_integer bus_master_latency; /* microseconds */
88 acpi_integer control; /* control value */ 87 acpi_integer control; /* control value */
89 acpi_integer status; /* success indicator */ 88 acpi_integer status; /* success indicator */
90}; 89};
91 90
92struct acpi_processor_performance { 91struct acpi_processor_performance {
93 unsigned int state; 92 unsigned int state;
94 unsigned int platform_limit; 93 unsigned int platform_limit;
95 struct acpi_pct_register control_register; 94 struct acpi_pct_register control_register;
96 struct acpi_pct_register status_register; 95 struct acpi_pct_register status_register;
97 unsigned int state_count; 96 unsigned int state_count;
98 struct acpi_processor_px *states; 97 struct acpi_processor_px *states;
99 98
100 /* the _PDC objects passed by the driver, if any */ 99 /* the _PDC objects passed by the driver, if any */
101 struct acpi_object_list *pdc; 100 struct acpi_object_list *pdc;
102}; 101};
103 102
104
105
106/* Throttling Control */ 103/* Throttling Control */
107 104
108struct acpi_processor_tx { 105struct acpi_processor_tx {
109 u16 power; 106 u16 power;
110 u16 performance; 107 u16 performance;
111}; 108};
112 109
113struct acpi_processor_throttling { 110struct acpi_processor_throttling {
114 int state; 111 int state;
115 u32 address; 112 u32 address;
116 u8 duty_offset; 113 u8 duty_offset;
117 u8 duty_width; 114 u8 duty_width;
118 int state_count; 115 int state_count;
119 struct acpi_processor_tx states[ACPI_PROCESSOR_MAX_THROTTLING]; 116 struct acpi_processor_tx states[ACPI_PROCESSOR_MAX_THROTTLING];
120}; 117};
121 118
122/* Limit Interface */ 119/* Limit Interface */
123 120
124struct acpi_processor_lx { 121struct acpi_processor_lx {
125 int px; /* performace state */ 122 int px; /* performace state */
126 int tx; /* throttle level */ 123 int tx; /* throttle level */
127}; 124};
128 125
129struct acpi_processor_limit { 126struct acpi_processor_limit {
130 struct acpi_processor_lx state; /* current limit */ 127 struct acpi_processor_lx state; /* current limit */
131 struct acpi_processor_lx thermal; /* thermal limit */ 128 struct acpi_processor_lx thermal; /* thermal limit */
132 struct acpi_processor_lx user; /* user limit */ 129 struct acpi_processor_lx user; /* user limit */
133}; 130};
134 131
135
136struct acpi_processor_flags { 132struct acpi_processor_flags {
137 u8 power:1; 133 u8 power:1;
138 u8 performance:1; 134 u8 performance:1;
139 u8 throttling:1; 135 u8 throttling:1;
140 u8 limit:1; 136 u8 limit:1;
141 u8 bm_control:1; 137 u8 bm_control:1;
142 u8 bm_check:1; 138 u8 bm_check:1;
143 u8 has_cst:1; 139 u8 has_cst:1;
144 u8 power_setup_done:1; 140 u8 power_setup_done:1;
145}; 141};
146 142
147struct acpi_processor { 143struct acpi_processor {
148 acpi_handle handle; 144 acpi_handle handle;
149 u32 acpi_id; 145 u32 acpi_id;
150 u32 id; 146 u32 id;
151 u32 pblk; 147 u32 pblk;
152 int performance_platform_limit; 148 int performance_platform_limit;
153 struct acpi_processor_flags flags; 149 struct acpi_processor_flags flags;
154 struct acpi_processor_power power; 150 struct acpi_processor_power power;
155 struct acpi_processor_performance *performance; 151 struct acpi_processor_performance *performance;
@@ -158,50 +154,49 @@ struct acpi_processor {
158}; 154};
159 155
160struct acpi_processor_errata { 156struct acpi_processor_errata {
161 u8 smp; 157 u8 smp;
162 struct { 158 struct {
163 u8 throttle:1; 159 u8 throttle:1;
164 u8 fdma:1; 160 u8 fdma:1;
165 u8 reserved:6; 161 u8 reserved:6;
166 u32 bmisx; 162 u32 bmisx;
167 } piix4; 163 } piix4;
168}; 164};
169 165
170extern int acpi_processor_register_performance ( 166extern int acpi_processor_register_performance(struct acpi_processor_performance
171 struct acpi_processor_performance * performance, 167 *performance, unsigned int cpu);
172 unsigned int cpu); 168extern void acpi_processor_unregister_performance(struct
173extern void acpi_processor_unregister_performance ( 169 acpi_processor_performance
174 struct acpi_processor_performance * performance, 170 *performance,
175 unsigned int cpu); 171 unsigned int cpu);
176 172
177/* note: this locks both the calling module and the processor module 173/* note: this locks both the calling module and the processor module
178 if a _PPC object exists, rmmod is disallowed then */ 174 if a _PPC object exists, rmmod is disallowed then */
179int acpi_processor_notify_smm(struct module *calling_module); 175int acpi_processor_notify_smm(struct module *calling_module);
180 176
181
182
183/* for communication between multiple parts of the processor kernel module */ 177/* for communication between multiple parts of the processor kernel module */
184extern struct acpi_processor *processors[NR_CPUS]; 178extern struct acpi_processor *processors[NR_CPUS];
185extern struct acpi_processor_errata errata; 179extern struct acpi_processor_errata errata;
186 180
187int acpi_processor_set_pdc(struct acpi_processor *pr, 181int acpi_processor_set_pdc(struct acpi_processor *pr,
188 struct acpi_object_list *pdc_in); 182 struct acpi_object_list *pdc_in);
189 183
190#ifdef ARCH_HAS_POWER_PDC_INIT 184#ifdef ARCH_HAS_POWER_PDC_INIT
191void acpi_processor_power_init_pdc(struct acpi_processor_power *pow, 185void acpi_processor_power_init_pdc(struct acpi_processor_power *pow,
192 unsigned int cpu); 186 unsigned int cpu);
193void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags, 187void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
194 unsigned int cpu); 188 unsigned int cpu);
195#else 189#else
196static inline void acpi_processor_power_init_pdc( 190static inline void acpi_processor_power_init_pdc(struct acpi_processor_power
197 struct acpi_processor_power *pow, unsigned int cpu) 191 *pow, unsigned int cpu)
198{ 192{
199 pow->pdc = NULL; 193 pow->pdc = NULL;
200 return; 194 return;
201} 195}
202 196
203static inline void acpi_processor_power_init_bm_check( 197static inline void acpi_processor_power_init_bm_check(struct
204 struct acpi_processor_flags *flags, unsigned int cpu) 198 acpi_processor_flags
199 *flags, unsigned int cpu)
205{ 200{
206 flags->bm_check = 1; 201 flags->bm_check = 1;
207 return; 202 return;
@@ -215,51 +210,62 @@ void acpi_processor_ppc_init(void);
215void acpi_processor_ppc_exit(void); 210void acpi_processor_ppc_exit(void);
216int acpi_processor_ppc_has_changed(struct acpi_processor *pr); 211int acpi_processor_ppc_has_changed(struct acpi_processor *pr);
217#else 212#else
218static inline void acpi_processor_ppc_init(void) { return; } 213static inline void acpi_processor_ppc_init(void)
219static inline void acpi_processor_ppc_exit(void) { return; } 214{
220static inline int acpi_processor_ppc_has_changed(struct acpi_processor *pr) { 215 return;
216}
217static inline void acpi_processor_ppc_exit(void)
218{
219 return;
220}
221static inline int acpi_processor_ppc_has_changed(struct acpi_processor *pr)
222{
221 static unsigned int printout = 1; 223 static unsigned int printout = 1;
222 if (printout) { 224 if (printout) {
223 printk(KERN_WARNING "Warning: Processor Platform Limit event detected, but not handled.\n"); 225 printk(KERN_WARNING
224 printk(KERN_WARNING "Consider compiling CPUfreq support into your kernel.\n"); 226 "Warning: Processor Platform Limit event detected, but not handled.\n");
227 printk(KERN_WARNING
228 "Consider compiling CPUfreq support into your kernel.\n");
225 printout = 0; 229 printout = 0;
226 } 230 }
227 return 0; 231 return 0;
228} 232}
229#endif /* CONFIG_CPU_FREQ */ 233#endif /* CONFIG_CPU_FREQ */
230 234
231/* in processor_throttling.c */ 235/* in processor_throttling.c */
232int acpi_processor_get_throttling_info (struct acpi_processor *pr); 236int acpi_processor_get_throttling_info(struct acpi_processor *pr);
233int acpi_processor_set_throttling (struct acpi_processor *pr, int state); 237int acpi_processor_set_throttling(struct acpi_processor *pr, int state);
234ssize_t acpi_processor_write_throttling ( 238ssize_t acpi_processor_write_throttling(struct file *file,
235 struct file *file, 239 const char __user * buffer,
236 const char __user *buffer, 240 size_t count, loff_t * data);
237 size_t count,
238 loff_t *data);
239extern struct file_operations acpi_processor_throttling_fops; 241extern struct file_operations acpi_processor_throttling_fops;
240 242
241/* in processor_idle.c */ 243/* in processor_idle.c */
242int acpi_processor_power_init(struct acpi_processor *pr, struct acpi_device *device); 244int acpi_processor_power_init(struct acpi_processor *pr,
243int acpi_processor_cst_has_changed (struct acpi_processor *pr); 245 struct acpi_device *device);
244int acpi_processor_power_exit(struct acpi_processor *pr, struct acpi_device *device); 246int acpi_processor_cst_has_changed(struct acpi_processor *pr);
245 247int acpi_processor_power_exit(struct acpi_processor *pr,
248 struct acpi_device *device);
246 249
247/* in processor_thermal.c */ 250/* in processor_thermal.c */
248int acpi_processor_get_limit_info (struct acpi_processor *pr); 251int acpi_processor_get_limit_info(struct acpi_processor *pr);
249ssize_t acpi_processor_write_limit ( 252ssize_t acpi_processor_write_limit(struct file *file,
250 struct file *file, 253 const char __user * buffer,
251 const char __user *buffer, 254 size_t count, loff_t * data);
252 size_t count,
253 loff_t *data);
254extern struct file_operations acpi_processor_limit_fops; 255extern struct file_operations acpi_processor_limit_fops;
255 256
256#ifdef CONFIG_CPU_FREQ 257#ifdef CONFIG_CPU_FREQ
257void acpi_thermal_cpufreq_init(void); 258void acpi_thermal_cpufreq_init(void);
258void acpi_thermal_cpufreq_exit(void); 259void acpi_thermal_cpufreq_exit(void);
259#else 260#else
260static inline void acpi_thermal_cpufreq_init(void) { return; } 261static inline void acpi_thermal_cpufreq_init(void)
261static inline void acpi_thermal_cpufreq_exit(void) { return; } 262{
263 return;
264}
265static inline void acpi_thermal_cpufreq_exit(void)
266{
267 return;
268}
262#endif 269#endif
263 270
264
265#endif 271#endif
diff --git a/include/asm-i386/acpi.h b/include/asm-i386/acpi.h
index cf828ace13f9..df4ed323aa4d 100644
--- a/include/asm-i386/acpi.h
+++ b/include/asm-i386/acpi.h
@@ -103,7 +103,7 @@ __acpi_release_global_lock (unsigned int *lock)
103 :"=r"(n_hi), "=r"(n_lo) \ 103 :"=r"(n_hi), "=r"(n_lo) \
104 :"0"(n_hi), "1"(n_lo)) 104 :"0"(n_hi), "1"(n_lo))
105 105
106#ifdef CONFIG_ACPI_BOOT 106#ifdef CONFIG_ACPI
107extern int acpi_lapic; 107extern int acpi_lapic;
108extern int acpi_ioapic; 108extern int acpi_ioapic;
109extern int acpi_noirq; 109extern int acpi_noirq;
@@ -146,13 +146,6 @@ static inline void check_acpi_pci(void) { }
146 146
147#endif 147#endif
148 148
149#else /* CONFIG_ACPI_BOOT */
150# define acpi_lapic 0
151# define acpi_ioapic 0
152
153#endif
154
155#ifdef CONFIG_ACPI_PCI
156static inline void acpi_noirq_set(void) { acpi_noirq = 1; } 149static inline void acpi_noirq_set(void) { acpi_noirq = 1; }
157static inline void acpi_disable_pci(void) 150static inline void acpi_disable_pci(void)
158{ 151{
@@ -160,11 +153,16 @@ static inline void acpi_disable_pci(void)
160 acpi_noirq_set(); 153 acpi_noirq_set();
161} 154}
162extern int acpi_irq_balance_set(char *str); 155extern int acpi_irq_balance_set(char *str);
163#else 156
157#else /* !CONFIG_ACPI */
158
159#define acpi_lapic 0
160#define acpi_ioapic 0
164static inline void acpi_noirq_set(void) { } 161static inline void acpi_noirq_set(void) { }
165static inline void acpi_disable_pci(void) { } 162static inline void acpi_disable_pci(void) { }
166static inline int acpi_irq_balance_set(char *str) { return 0; } 163
167#endif 164#endif /* !CONFIG_ACPI */
165
168 166
169#ifdef CONFIG_ACPI_SLEEP 167#ifdef CONFIG_ACPI_SLEEP
170 168
diff --git a/include/asm-i386/fixmap.h b/include/asm-i386/fixmap.h
index c94cac958389..cfb1c61d3b9c 100644
--- a/include/asm-i386/fixmap.h
+++ b/include/asm-i386/fixmap.h
@@ -76,7 +76,7 @@ enum fixed_addresses {
76 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ 76 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
77 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, 77 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
78#endif 78#endif
79#ifdef CONFIG_ACPI_BOOT 79#ifdef CONFIG_ACPI
80 FIX_ACPI_BEGIN, 80 FIX_ACPI_BEGIN,
81 FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1, 81 FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
82#endif 82#endif
diff --git a/include/asm-i386/io_apic.h b/include/asm-i386/io_apic.h
index 002c203ccd6a..51c4e5fe6062 100644
--- a/include/asm-i386/io_apic.h
+++ b/include/asm-i386/io_apic.h
@@ -195,12 +195,12 @@ extern int skip_ioapic_setup;
195 */ 195 */
196#define io_apic_assign_pci_irqs (mp_irq_entries && !skip_ioapic_setup && io_apic_irqs) 196#define io_apic_assign_pci_irqs (mp_irq_entries && !skip_ioapic_setup && io_apic_irqs)
197 197
198#ifdef CONFIG_ACPI_BOOT 198#ifdef CONFIG_ACPI
199extern int io_apic_get_unique_id (int ioapic, int apic_id); 199extern int io_apic_get_unique_id (int ioapic, int apic_id);
200extern int io_apic_get_version (int ioapic); 200extern int io_apic_get_version (int ioapic);
201extern int io_apic_get_redir_entries (int ioapic); 201extern int io_apic_get_redir_entries (int ioapic);
202extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low); 202extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low);
203#endif /*CONFIG_ACPI_BOOT*/ 203#endif /* CONFIG_ACPI */
204 204
205extern int (*ioapic_renumber_irq)(int ioapic, int irq); 205extern int (*ioapic_renumber_irq)(int ioapic, int irq);
206 206
diff --git a/include/asm-i386/mpspec.h b/include/asm-i386/mpspec.h
index d9fafba075bc..b9e9f66d2721 100644
--- a/include/asm-i386/mpspec.h
+++ b/include/asm-i386/mpspec.h
@@ -26,14 +26,14 @@ extern unsigned long mp_lapic_addr;
26extern int pic_mode; 26extern int pic_mode;
27extern int using_apic_timer; 27extern int using_apic_timer;
28 28
29#ifdef CONFIG_ACPI_BOOT 29#ifdef CONFIG_ACPI
30extern void mp_register_lapic (u8 id, u8 enabled); 30extern void mp_register_lapic (u8 id, u8 enabled);
31extern void mp_register_lapic_address (u64 address); 31extern void mp_register_lapic_address (u64 address);
32extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base); 32extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base);
33extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 gsi); 33extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 gsi);
34extern void mp_config_acpi_legacy_irqs (void); 34extern void mp_config_acpi_legacy_irqs (void);
35extern int mp_register_gsi (u32 gsi, int edge_level, int active_high_low); 35extern int mp_register_gsi (u32 gsi, int edge_level, int active_high_low);
36#endif /*CONFIG_ACPI_BOOT*/ 36#endif /* CONFIG_ACPI */
37 37
38#define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) 38#define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
39 39
diff --git a/include/asm-ia64/acpi-ext.h b/include/asm-ia64/acpi-ext.h
index 9271d74c64cc..56d2ddc97b30 100644
--- a/include/asm-ia64/acpi-ext.h
+++ b/include/asm-ia64/acpi-ext.h
@@ -11,6 +11,7 @@
11#define _ASM_IA64_ACPI_EXT_H 11#define _ASM_IA64_ACPI_EXT_H
12 12
13#include <linux/types.h> 13#include <linux/types.h>
14#include <acpi/actypes.h>
14 15
15extern acpi_status hp_acpi_csr_space (acpi_handle, u64 *base, u64 *length); 16extern acpi_status hp_acpi_csr_space (acpi_handle, u64 *base, u64 *length);
16 17
diff --git a/include/asm-x86_64/acpi.h b/include/asm-x86_64/acpi.h
index dc8c981af27f..aa1c7b2e438c 100644
--- a/include/asm-x86_64/acpi.h
+++ b/include/asm-x86_64/acpi.h
@@ -101,7 +101,7 @@ __acpi_release_global_lock (unsigned int *lock)
101 :"=r"(n_hi), "=r"(n_lo) \ 101 :"=r"(n_hi), "=r"(n_lo) \
102 :"0"(n_hi), "1"(n_lo)) 102 :"0"(n_hi), "1"(n_lo))
103 103
104#ifdef CONFIG_ACPI_BOOT 104#ifdef CONFIG_ACPI
105extern int acpi_lapic; 105extern int acpi_lapic;
106extern int acpi_ioapic; 106extern int acpi_ioapic;
107extern int acpi_noirq; 107extern int acpi_noirq;
@@ -121,17 +121,6 @@ static inline void disable_acpi(void)
121#define FIX_ACPI_PAGES 4 121#define FIX_ACPI_PAGES 4
122 122
123extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq); 123extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq);
124
125#else /* !CONFIG_ACPI_BOOT */
126#define acpi_lapic 0
127#define acpi_ioapic 0
128#endif /* !CONFIG_ACPI_BOOT */
129
130extern int acpi_numa;
131extern int acpi_scan_nodes(unsigned long start, unsigned long end);
132#define NR_NODE_MEMBLKS (MAX_NUMNODES*2)
133
134#ifdef CONFIG_ACPI_PCI
135static inline void acpi_noirq_set(void) { acpi_noirq = 1; } 124static inline void acpi_noirq_set(void) { acpi_noirq = 1; }
136static inline void acpi_disable_pci(void) 125static inline void acpi_disable_pci(void)
137{ 126{
@@ -139,11 +128,19 @@ static inline void acpi_disable_pci(void)
139 acpi_noirq_set(); 128 acpi_noirq_set();
140} 129}
141extern int acpi_irq_balance_set(char *str); 130extern int acpi_irq_balance_set(char *str);
142#else 131
132#else /* !CONFIG_ACPI */
133
134#define acpi_lapic 0
135#define acpi_ioapic 0
143static inline void acpi_noirq_set(void) { } 136static inline void acpi_noirq_set(void) { }
144static inline void acpi_disable_pci(void) { } 137static inline void acpi_disable_pci(void) { }
145static inline int acpi_irq_balance_set(char *str) { return 0; } 138
146#endif 139#endif /* !CONFIG_ACPI */
140
141extern int acpi_numa;
142extern int acpi_scan_nodes(unsigned long start, unsigned long end);
143#define NR_NODE_MEMBLKS (MAX_NUMNODES*2)
147 144
148#ifdef CONFIG_ACPI_SLEEP 145#ifdef CONFIG_ACPI_SLEEP
149 146
diff --git a/include/asm-x86_64/io_apic.h b/include/asm-x86_64/io_apic.h
index a8babd2bbe84..ee1bc69aec9c 100644
--- a/include/asm-x86_64/io_apic.h
+++ b/include/asm-x86_64/io_apic.h
@@ -201,7 +201,7 @@ extern int skip_ioapic_setup;
201 */ 201 */
202#define io_apic_assign_pci_irqs (mp_irq_entries && !skip_ioapic_setup && io_apic_irqs) 202#define io_apic_assign_pci_irqs (mp_irq_entries && !skip_ioapic_setup && io_apic_irqs)
203 203
204#ifdef CONFIG_ACPI_BOOT 204#ifdef CONFIG_ACPI
205extern int io_apic_get_version (int ioapic); 205extern int io_apic_get_version (int ioapic);
206extern int io_apic_get_redir_entries (int ioapic); 206extern int io_apic_get_redir_entries (int ioapic);
207extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int, int); 207extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int, int);
diff --git a/include/asm-x86_64/mpspec.h b/include/asm-x86_64/mpspec.h
index 331f6a3c72a2..f267e10c023d 100644
--- a/include/asm-x86_64/mpspec.h
+++ b/include/asm-x86_64/mpspec.h
@@ -179,7 +179,7 @@ extern int mpc_default_type;
179extern unsigned long mp_lapic_addr; 179extern unsigned long mp_lapic_addr;
180extern int pic_mode; 180extern int pic_mode;
181 181
182#ifdef CONFIG_ACPI_BOOT 182#ifdef CONFIG_ACPI
183extern void mp_register_lapic (u8 id, u8 enabled); 183extern void mp_register_lapic (u8 id, u8 enabled);
184extern void mp_register_lapic_address (u64 address); 184extern void mp_register_lapic_address (u64 address);
185 185
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index b46a5205ee7b..026c3c011dc0 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -41,7 +41,7 @@
41#include <asm/acpi.h> 41#include <asm/acpi.h>
42 42
43 43
44#ifdef CONFIG_ACPI_BOOT 44#ifdef CONFIG_ACPI
45 45
46enum acpi_irq_model_id { 46enum acpi_irq_model_id {
47 ACPI_IRQ_MODEL_PIC = 0, 47 ACPI_IRQ_MODEL_PIC = 0,
@@ -429,23 +429,13 @@ extern int pci_mmcfg_config_num;
429 429
430extern int sbf_port ; 430extern int sbf_port ;
431 431
432#else /*!CONFIG_ACPI_BOOT*/ 432#else /* !CONFIG_ACPI */
433 433
434#define acpi_mp_config 0 434#define acpi_mp_config 0
435 435
436static inline int acpi_boot_init(void) 436#endif /* !CONFIG_ACPI */
437{
438 return 0;
439}
440
441static inline int acpi_boot_table_init(void)
442{
443 return 0;
444}
445 437
446#endif /*!CONFIG_ACPI_BOOT*/ 438int acpi_register_gsi (u32 gsi, int edge_level, int active_high_low);
447
448unsigned int acpi_register_gsi (u32 gsi, int edge_level, int active_high_low);
449int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); 439int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
450 440
451/* 441/*
@@ -455,7 +445,7 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
455 */ 445 */
456void acpi_unregister_gsi (u32 gsi); 446void acpi_unregister_gsi (u32 gsi);
457 447
458#ifdef CONFIG_ACPI_PCI 448#ifdef CONFIG_ACPI
459 449
460struct acpi_prt_entry { 450struct acpi_prt_entry {
461 struct list_head node; 451 struct list_head node;
@@ -489,7 +479,7 @@ struct acpi_pci_driver {
489int acpi_pci_register_driver(struct acpi_pci_driver *driver); 479int acpi_pci_register_driver(struct acpi_pci_driver *driver);
490void acpi_pci_unregister_driver(struct acpi_pci_driver *driver); 480void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
491 481
492#endif /*CONFIG_ACPI_PCI*/ 482#endif /* CONFIG_ACPI */
493 483
494#ifdef CONFIG_ACPI_EC 484#ifdef CONFIG_ACPI_EC
495 485
@@ -498,20 +488,9 @@ extern int ec_write(u8 addr, u8 val);
498 488
499#endif /*CONFIG_ACPI_EC*/ 489#endif /*CONFIG_ACPI_EC*/
500 490
501#ifdef CONFIG_ACPI_INTERPRETER
502
503extern int acpi_blacklisted(void); 491extern int acpi_blacklisted(void);
504extern void acpi_bios_year(char *s); 492extern void acpi_bios_year(char *s);
505 493
506#else /*!CONFIG_ACPI_INTERPRETER*/
507
508static inline int acpi_blacklisted(void)
509{
510 return 0;
511}
512
513#endif /*!CONFIG_ACPI_INTERPRETER*/
514
515#define ACPI_CSTATE_LIMIT_DEFINED /* for driver builds */ 494#define ACPI_CSTATE_LIMIT_DEFINED /* for driver builds */
516#ifdef CONFIG_ACPI 495#ifdef CONFIG_ACPI
517 496
@@ -549,5 +528,17 @@ static inline int acpi_get_pxm(acpi_handle handle)
549 528
550extern int pnpacpi_disabled; 529extern int pnpacpi_disabled;
551 530
531#else /* CONFIG_ACPI */
532
533static inline int acpi_boot_init(void)
534{
535 return 0;
536}
537
538static inline int acpi_boot_table_init(void)
539{
540 return 0;
541}
542
552#endif /* CONFIG_ACPI */ 543#endif /* CONFIG_ACPI */
553#endif /*_LINUX_ACPI_H*/ 544#endif /*_LINUX_ACPI_H*/