vserver 1.9.5.x5
[linux-2.6.git] / include / acpi / acpixf.h
1
2 /******************************************************************************
3  *
4  * Name: acpixf.h - External interfaces to the ACPI subsystem
5  *
6  *****************************************************************************/
7
8 /*
9  * Copyright (C) 2000 - 2005, R. Byron Moore
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions, and the following disclaimer,
17  *    without modification.
18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19  *    substantially similar to the "NO WARRANTY" disclaimer below
20  *    ("Disclaimer") and any redistribution must be conditioned upon
21  *    including a substantially similar Disclaimer requirement for further
22  *    binary redistribution.
23  * 3. Neither the names of the above-listed copyright holders nor the names
24  *    of any contributors may be used to endorse or promote products derived
25  *    from this software without specific prior written permission.
26  *
27  * Alternatively, this software may be distributed under the terms of the
28  * GNU General Public License ("GPL") version 2 as published by the Free
29  * Software Foundation.
30  *
31  * NO WARRANTY
32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42  * POSSIBILITY OF SUCH DAMAGES.
43  */
44
45
46 #ifndef __ACXFACE_H__
47 #define __ACXFACE_H__
48
49 #include "actypes.h"
50 #include "actbl.h"
51
52
53  /*
54  * Global interfaces
55  */
56
57 acpi_status
58 acpi_initialize_subsystem (
59         void);
60
61 acpi_status
62 acpi_enable_subsystem (
63         u32                             flags);
64
65 acpi_status
66 acpi_initialize_objects (
67         u32                             flags);
68
69 acpi_status
70 acpi_terminate (
71         void);
72
73 #ifdef ACPI_FUTURE_USAGE
74 acpi_status
75 acpi_subsystem_status (
76         void);
77 #endif
78
79 acpi_status
80 acpi_enable (
81         void);
82
83 acpi_status
84 acpi_disable (
85         void);
86
87 #ifdef ACPI_FUTURE_USAGE
88 acpi_status
89 acpi_get_system_info (
90         struct acpi_buffer              *ret_buffer);
91 #endif
92
93 const char *
94 acpi_format_exception (
95         acpi_status                     exception);
96
97 acpi_status
98 acpi_purge_cached_objects (
99         void);
100
101 #ifdef ACPI_FUTURE_USAGE
102 acpi_status
103 acpi_install_initialization_handler (
104         acpi_init_handler               handler,
105         u32                             function);
106 #endif
107
108 /*
109  * ACPI Memory manager
110  */
111
112 void *
113 acpi_allocate (
114         u32                             size);
115
116 void *
117 acpi_callocate (
118         u32                             size);
119
120 void
121 acpi_free (
122         void                            *address);
123
124
125 /*
126  * ACPI table manipulation interfaces
127  */
128
129 acpi_status
130 acpi_find_root_pointer (
131         u32                             flags,
132         struct acpi_pointer             *rsdp_address);
133
134 acpi_status
135 acpi_load_tables (
136         void);
137
138 #ifdef ACPI_FUTURE_USAGE
139 acpi_status
140 acpi_load_table (
141         struct acpi_table_header        *table_ptr);
142
143 acpi_status
144 acpi_unload_table (
145         acpi_table_type                 table_type);
146
147 acpi_status
148 acpi_get_table_header (
149         acpi_table_type                 table_type,
150         u32                             instance,
151         struct acpi_table_header        *out_table_header);
152 #endif  /*  ACPI_FUTURE_USAGE  */
153
154 acpi_status
155 acpi_get_table (
156         acpi_table_type                 table_type,
157         u32                             instance,
158         struct acpi_buffer              *ret_buffer);
159
160 acpi_status
161 acpi_get_firmware_table (
162         acpi_string                     signature,
163         u32                             instance,
164         u32                             flags,
165         struct acpi_table_header        **table_pointer);
166
167
168 /*
169  * Namespace and name interfaces
170  */
171
172 acpi_status
173 acpi_walk_namespace (
174         acpi_object_type                type,
175         acpi_handle                     start_object,
176         u32                             max_depth,
177         acpi_walk_callback              user_function,
178         void                            *context,
179         void                            **return_value);
180
181 acpi_status
182 acpi_get_devices (
183         char                            *HID,
184         acpi_walk_callback              user_function,
185         void                            *context,
186         void                            **return_value);
187
188 acpi_status
189 acpi_get_name (
190         acpi_handle                     handle,
191         u32                             name_type,
192         struct acpi_buffer              *ret_path_ptr);
193
194 acpi_status
195 acpi_get_handle (
196         acpi_handle                     parent,
197         acpi_string                     pathname,
198         acpi_handle                     *ret_handle);
199
200 acpi_status
201 acpi_attach_data (
202         acpi_handle                     obj_handle,
203         acpi_object_handler             handler,
204         void                            *data);
205
206 acpi_status
207 acpi_detach_data (
208         acpi_handle                     obj_handle,
209         acpi_object_handler             handler);
210
211 acpi_status
212 acpi_get_data (
213         acpi_handle                     obj_handle,
214         acpi_object_handler             handler,
215         void                            **data);
216
217
218 /*
219  * Object manipulation and enumeration
220  */
221
222 acpi_status
223 acpi_evaluate_object (
224         acpi_handle                     object,
225         acpi_string                     pathname,
226         struct acpi_object_list         *parameter_objects,
227         struct acpi_buffer              *return_object_buffer);
228
229 #ifdef ACPI_FUTURE_USAGE
230 acpi_status
231 acpi_evaluate_object_typed (
232         acpi_handle                     object,
233         acpi_string                     pathname,
234         struct acpi_object_list         *external_params,
235         struct acpi_buffer              *return_buffer,
236         acpi_object_type                return_type);
237 #endif
238
239 acpi_status
240 acpi_get_object_info (
241         acpi_handle                     handle,
242         struct acpi_buffer              *return_buffer);
243
244 acpi_status
245 acpi_get_next_object (
246         acpi_object_type                type,
247         acpi_handle                     parent,
248         acpi_handle                     child,
249         acpi_handle                     *out_handle);
250
251 acpi_status
252 acpi_get_type (
253         acpi_handle                     object,
254         acpi_object_type                *out_type);
255
256 acpi_status
257 acpi_get_parent (
258         acpi_handle                     object,
259         acpi_handle                     *out_handle);
260
261
262 /*
263  * Event handler interfaces
264  */
265
266 acpi_status
267 acpi_install_fixed_event_handler (
268         u32                             acpi_event,
269         acpi_event_handler              handler,
270         void                            *context);
271
272 acpi_status
273 acpi_remove_fixed_event_handler (
274         u32                             acpi_event,
275         acpi_event_handler              handler);
276
277 acpi_status
278 acpi_install_notify_handler (
279         acpi_handle                     device,
280         u32                             handler_type,
281         acpi_notify_handler             handler,
282         void                            *context);
283
284 acpi_status
285 acpi_remove_notify_handler (
286         acpi_handle                     device,
287         u32                             handler_type,
288         acpi_notify_handler             handler);
289
290 acpi_status
291 acpi_install_address_space_handler (
292         acpi_handle                     device,
293         acpi_adr_space_type             space_id,
294         acpi_adr_space_handler          handler,
295         acpi_adr_space_setup            setup,
296         void                            *context);
297
298 acpi_status
299 acpi_remove_address_space_handler (
300         acpi_handle                     device,
301         acpi_adr_space_type             space_id,
302         acpi_adr_space_handler          handler);
303
304 acpi_status
305 acpi_install_gpe_handler (
306         acpi_handle                     gpe_device,
307         u32                             gpe_number,
308         u32                             type,
309         acpi_event_handler              address,
310         void                            *context);
311
312 #ifdef ACPI_FUTURE_USAGE
313 acpi_status
314 acpi_install_exception_handler (
315         acpi_exception_handler          handler);
316 #endif
317
318
319 /*
320  * Event interfaces
321  */
322
323 acpi_status
324 acpi_acquire_global_lock (
325         u16                             timeout,
326         u32                             *handle);
327
328 acpi_status
329 acpi_release_global_lock (
330         u32                             handle);
331
332 acpi_status
333 acpi_remove_gpe_handler (
334         acpi_handle                     gpe_device,
335         u32                             gpe_number,
336         acpi_event_handler              address);
337
338 acpi_status
339 acpi_enable_event (
340         u32                             event,
341         u32                             flags);
342
343 acpi_status
344 acpi_disable_event (
345         u32                             event,
346         u32                             flags);
347
348 acpi_status
349 acpi_clear_event (
350         u32                             event);
351
352 #ifdef ACPI_FUTURE_USAGE
353 acpi_status
354 acpi_get_event_status (
355         u32                             event,
356         acpi_event_status               *event_status);
357 #endif  /*  ACPI_FUTURE_USAGE  */
358
359 acpi_status
360 acpi_set_gpe_type (
361         acpi_handle                     gpe_device,
362         u32                             gpe_number,
363         u8                              type);
364
365 acpi_status
366 acpi_enable_gpe (
367         acpi_handle                     gpe_device,
368         u32                             gpe_number,
369         u32                             flags);
370
371 acpi_status
372 acpi_disable_gpe (
373         acpi_handle                     gpe_device,
374         u32                             gpe_number,
375         u32                             flags);
376
377 acpi_status
378 acpi_clear_gpe (
379         acpi_handle                     gpe_device,
380         u32                             gpe_number,
381         u32                             flags);
382
383 #ifdef ACPI_FUTURE_USAGE
384 acpi_status
385 acpi_get_gpe_status (
386         acpi_handle                     gpe_device,
387         u32                             gpe_number,
388         u32                             flags,
389         acpi_event_status               *event_status);
390 #endif  /*  ACPI_FUTURE_USAGE  */
391
392 acpi_status
393 acpi_install_gpe_block (
394         acpi_handle                     gpe_device,
395         struct acpi_generic_address     *gpe_block_address,
396         u32                             register_count,
397         u32                             interrupt_level);
398
399 acpi_status
400 acpi_remove_gpe_block (
401         acpi_handle                     gpe_device);
402
403
404 /*
405  * Resource interfaces
406  */
407
408 typedef
409 acpi_status (*ACPI_WALK_RESOURCE_CALLBACK) (
410         struct acpi_resource            *resource,
411         void                            *context);
412
413
414 acpi_status
415 acpi_get_current_resources(
416         acpi_handle                     device_handle,
417         struct acpi_buffer              *ret_buffer);
418
419 #ifdef ACPI_FUTURE_USAGE
420 acpi_status
421 acpi_get_possible_resources(
422         acpi_handle                     device_handle,
423         struct acpi_buffer              *ret_buffer);
424 #endif
425
426 acpi_status
427 acpi_walk_resources (
428         acpi_handle                             device_handle,
429         char                                    *path,
430         ACPI_WALK_RESOURCE_CALLBACK     user_function,
431         void                                    *context);
432
433 acpi_status
434 acpi_set_current_resources (
435         acpi_handle                     device_handle,
436         struct acpi_buffer              *in_buffer);
437
438 acpi_status
439 acpi_get_irq_routing_table (
440         acpi_handle                     bus_device_handle,
441         struct acpi_buffer              *ret_buffer);
442
443 acpi_status
444 acpi_resource_to_address64 (
445         struct acpi_resource            *resource,
446         struct acpi_resource_address64 *out);
447
448 /*
449  * Hardware (ACPI device) interfaces
450  */
451
452 acpi_status
453 acpi_get_register (
454         u32                             register_id,
455         u32                             *return_value,
456         u32                             flags);
457
458 acpi_status
459 acpi_set_register (
460         u32                             register_id,
461         u32                             value,
462         u32                             flags);
463
464 acpi_status
465 acpi_set_firmware_waking_vector (
466         acpi_physical_address           physical_address);
467
468 #ifdef ACPI_FUTURE_USAGE
469 acpi_status
470 acpi_get_firmware_waking_vector (
471         acpi_physical_address           *physical_address);
472 #endif
473
474 acpi_status
475 acpi_get_sleep_type_data (
476         u8                              sleep_state,
477         u8                              *slp_typ_a,
478         u8                              *slp_typ_b);
479
480 acpi_status
481 acpi_enter_sleep_state_prep (
482         u8                              sleep_state);
483
484 acpi_status asmlinkage
485 acpi_enter_sleep_state (
486         u8                              sleep_state);
487
488 acpi_status asmlinkage
489 acpi_enter_sleep_state_s4bios (
490         void);
491
492 acpi_status
493 acpi_leave_sleep_state (
494         u8                              sleep_state);
495
496
497 #endif /* __ACXFACE_H__ */