ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[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 - 2004, 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 acpi_status
74 acpi_subsystem_status (
75         void);
76
77 acpi_status
78 acpi_enable (
79         void);
80
81 acpi_status
82 acpi_disable (
83         void);
84
85 acpi_status
86 acpi_get_system_info (
87         struct acpi_buffer              *ret_buffer);
88
89 const char *
90 acpi_format_exception (
91         acpi_status                     exception);
92
93 acpi_status
94 acpi_purge_cached_objects (
95         void);
96
97 acpi_status
98 acpi_install_initialization_handler (
99         acpi_init_handler               handler,
100         u32                             function);
101
102 /*
103  * ACPI Memory manager
104  */
105
106 void *
107 acpi_allocate (
108         u32                             size);
109
110 void *
111 acpi_callocate (
112         u32                             size);
113
114 void
115 acpi_free (
116         void                            *address);
117
118
119 /*
120  * ACPI table manipulation interfaces
121  */
122
123 acpi_status
124 acpi_find_root_pointer (
125         u32                             flags,
126         struct acpi_pointer             *rsdp_address);
127
128 acpi_status
129 acpi_load_tables (
130         void);
131
132 acpi_status
133 acpi_load_table (
134         struct acpi_table_header        *table_ptr);
135
136 acpi_status
137 acpi_unload_table (
138         acpi_table_type                 table_type);
139
140 acpi_status
141 acpi_get_table_header (
142         acpi_table_type                 table_type,
143         u32                             instance,
144         struct acpi_table_header        *out_table_header);
145
146 acpi_status
147 acpi_get_table (
148         acpi_table_type                 table_type,
149         u32                             instance,
150         struct acpi_buffer              *ret_buffer);
151
152 acpi_status
153 acpi_get_firmware_table (
154         acpi_string                     signature,
155         u32                             instance,
156         u32                             flags,
157         struct acpi_table_header        **table_pointer);
158
159
160 /*
161  * Namespace and name interfaces
162  */
163
164 acpi_status
165 acpi_walk_namespace (
166         acpi_object_type                type,
167         acpi_handle                     start_object,
168         u32                             max_depth,
169         acpi_walk_callback              user_function,
170         void                            *context,
171         void                            **return_value);
172
173 acpi_status
174 acpi_get_devices (
175         char                            *HID,
176         acpi_walk_callback              user_function,
177         void                            *context,
178         void                            **return_value);
179
180 acpi_status
181 acpi_get_name (
182         acpi_handle                     handle,
183         u32                             name_type,
184         struct acpi_buffer              *ret_path_ptr);
185
186 acpi_status
187 acpi_get_handle (
188         acpi_handle                     parent,
189         acpi_string                     pathname,
190         acpi_handle                     *ret_handle);
191
192 acpi_status
193 acpi_attach_data (
194         acpi_handle                     obj_handle,
195         acpi_object_handler             handler,
196         void                            *data);
197
198 acpi_status
199 acpi_detach_data (
200         acpi_handle                     obj_handle,
201         acpi_object_handler             handler);
202
203 acpi_status
204 acpi_get_data (
205         acpi_handle                     obj_handle,
206         acpi_object_handler             handler,
207         void                            **data);
208
209
210 /*
211  * Object manipulation and enumeration
212  */
213
214 acpi_status
215 acpi_evaluate_object (
216         acpi_handle                     object,
217         acpi_string                     pathname,
218         struct acpi_object_list         *parameter_objects,
219         struct acpi_buffer              *return_object_buffer);
220
221 acpi_status
222 acpi_evaluate_object_typed (
223         acpi_handle                     object,
224         acpi_string                     pathname,
225         struct acpi_object_list         *external_params,
226         struct acpi_buffer              *return_buffer,
227         acpi_object_type                return_type);
228
229 acpi_status
230 acpi_get_object_info (
231         acpi_handle                     handle,
232         struct acpi_buffer              *return_buffer);
233
234 acpi_status
235 acpi_get_next_object (
236         acpi_object_type                type,
237         acpi_handle                     parent,
238         acpi_handle                     child,
239         acpi_handle                     *out_handle);
240
241 acpi_status
242 acpi_get_type (
243         acpi_handle                     object,
244         acpi_object_type                *out_type);
245
246 acpi_status
247 acpi_get_parent (
248         acpi_handle                     object,
249         acpi_handle                     *out_handle);
250
251
252 /*
253  * Event handler interfaces
254  */
255
256 acpi_status
257 acpi_install_fixed_event_handler (
258         u32                             acpi_event,
259         acpi_event_handler              handler,
260         void                            *context);
261
262 acpi_status
263 acpi_remove_fixed_event_handler (
264         u32                             acpi_event,
265         acpi_event_handler              handler);
266
267 acpi_status
268 acpi_install_notify_handler (
269         acpi_handle                     device,
270         u32                             handler_type,
271         acpi_notify_handler             handler,
272         void                            *context);
273
274 acpi_status
275 acpi_remove_notify_handler (
276         acpi_handle                     device,
277         u32                             handler_type,
278         acpi_notify_handler             handler);
279
280 acpi_status
281 acpi_install_address_space_handler (
282         acpi_handle                     device,
283         acpi_adr_space_type             space_id,
284         acpi_adr_space_handler          handler,
285         acpi_adr_space_setup            setup,
286         void                            *context);
287
288 acpi_status
289 acpi_remove_address_space_handler (
290         acpi_handle                     device,
291         acpi_adr_space_type             space_id,
292         acpi_adr_space_handler          handler);
293
294 acpi_status
295 acpi_install_gpe_handler (
296         acpi_handle                     gpe_device,
297         u32                             gpe_number,
298         u32                             type,
299         acpi_gpe_handler                handler,
300         void                            *context);
301
302 acpi_status
303 acpi_acquire_global_lock (
304         u16                             timeout,
305         u32                             *handle);
306
307 acpi_status
308 acpi_release_global_lock (
309         u32                             handle);
310
311 acpi_status
312 acpi_remove_gpe_handler (
313         acpi_handle                     gpe_device,
314         u32                             gpe_number,
315         acpi_gpe_handler                handler);
316
317 acpi_status
318 acpi_enable_event (
319         u32                             event,
320         u32                             flags);
321
322 acpi_status
323 acpi_disable_event (
324         u32                             event,
325         u32                             flags);
326
327 acpi_status
328 acpi_clear_event (
329         u32                             event);
330
331 acpi_status
332 acpi_get_event_status (
333         u32                             event,
334         acpi_event_status               *event_status);
335
336 acpi_status
337 acpi_enable_gpe (
338         acpi_handle                     gpe_device,
339         u32                             gpe_number,
340         u32                             flags);
341
342 acpi_status
343 acpi_disable_gpe (
344         acpi_handle                     gpe_device,
345         u32                             gpe_number,
346         u32                             flags);
347
348 acpi_status
349 acpi_clear_gpe (
350         acpi_handle                     gpe_device,
351         u32                             gpe_number,
352         u32                             flags);
353
354 acpi_status
355 acpi_get_gpe_status (
356         acpi_handle                     gpe_device,
357         u32                             gpe_number,
358         u32                             flags,
359         acpi_event_status               *event_status);
360
361 acpi_status
362 acpi_install_gpe_block (
363         acpi_handle                     gpe_device,
364         struct acpi_generic_address     *gpe_block_address,
365         u32                             register_count,
366         u32                             interrupt_level);
367
368 acpi_status
369 acpi_remove_gpe_block (
370         acpi_handle                     gpe_device);
371
372
373 /*
374  * Resource interfaces
375  */
376
377 typedef
378 acpi_status (*ACPI_WALK_RESOURCE_CALLBACK) (
379         struct acpi_resource            *resource,
380         void                            *context);
381
382
383 acpi_status
384 acpi_get_current_resources(
385         acpi_handle                     device_handle,
386         struct acpi_buffer              *ret_buffer);
387
388 acpi_status
389 acpi_get_possible_resources(
390         acpi_handle                     device_handle,
391         struct acpi_buffer              *ret_buffer);
392
393 acpi_status
394 acpi_walk_resources (
395         acpi_handle                             device_handle,
396         char                                    *path,
397         ACPI_WALK_RESOURCE_CALLBACK     user_function,
398         void                                    *context);
399
400 acpi_status
401 acpi_set_current_resources (
402         acpi_handle                     device_handle,
403         struct acpi_buffer              *in_buffer);
404
405 acpi_status
406 acpi_get_irq_routing_table (
407         acpi_handle                     bus_device_handle,
408         struct acpi_buffer              *ret_buffer);
409
410 acpi_status
411 acpi_resource_to_address64 (
412         struct acpi_resource            *resource,
413         struct acpi_resource_address64 *out);
414
415 /*
416  * Hardware (ACPI device) interfaces
417  */
418
419 acpi_status
420 acpi_get_register (
421         u32                             register_id,
422         u32                             *return_value,
423         u32                             flags);
424
425 acpi_status
426 acpi_set_register (
427         u32                             register_id,
428         u32                             value,
429         u32                             flags);
430
431 acpi_status
432 acpi_set_firmware_waking_vector (
433         acpi_physical_address           physical_address);
434
435 acpi_status
436 acpi_get_firmware_waking_vector (
437         acpi_physical_address           *physical_address);
438
439 acpi_status
440 acpi_get_sleep_type_data (
441         u8                              sleep_state,
442         u8                              *slp_typ_a,
443         u8                              *slp_typ_b);
444
445 acpi_status
446 acpi_enter_sleep_state_prep (
447         u8                              sleep_state);
448
449 acpi_status asmlinkage
450 acpi_enter_sleep_state (
451         u8                              sleep_state);
452
453 acpi_status asmlinkage
454 acpi_enter_sleep_state_s4bios (
455         void);
456
457 acpi_status
458 acpi_leave_sleep_state (
459         u8                              sleep_state);
460
461
462 #endif /* __ACXFACE_H__ */