Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
acpixf.h
Go to the documentation of this file.
1 
2 /******************************************************************************
3  *
4  * Name: acpixf.h - External interfaces to the ACPI subsystem
5  *
6  *****************************************************************************/
7 
8 /*
9  * Copyright (C) 2000 - 2012, Intel Corp.
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 #ifndef __ACXFACE_H__
46 #define __ACXFACE_H__
47 
48 /* Current ACPICA subsystem version in YYYYMMDD format */
49 
50 #define ACPI_CA_VERSION 0x20120913
51 
52 #include <acpi/acconfig.h>
53 #include <acpi/actypes.h>
54 #include <acpi/actbl.h>
55 #include <acpi/acbuffer.h>
56 
58 
59 /*
60  * Globals that are publicly available, allowing for
61  * run time configuration
62  */
63 extern u32 acpi_dbg_level;
64 extern u32 acpi_dbg_layer;
75 
76 /*
77  * Hardware-reduced prototypes. All interfaces that use these macros will
78  * be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
79  * is set to TRUE.
80  */
81 #if (!ACPI_REDUCED_HARDWARE)
82 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \
83  prototype;
84 
85 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \
86  prototype;
87 
88 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \
89  prototype;
90 
91 #else
92 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \
93  static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);}
94 
95 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \
96  static ACPI_INLINE prototype {return(AE_OK);}
97 
98 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \
99  static ACPI_INLINE prototype {}
100 
101 #endif /* !ACPI_REDUCED_HARDWARE */
102 
104 extern struct acpi_table_fadt acpi_gbl_FADT;
106 extern u8 acpi_gbl_reduced_hardware; /* ACPI 5.0 */
107 
108 extern u32 acpi_rsdt_forced;
109 /*
110  * Global interfaces
111  */
113 acpi_initialize_tables(struct acpi_table_desc *initial_storage,
114  u32 initial_table_count, u8 allow_resize);
115 
117 
119 
121 
123 
124 #ifdef ACPI_FUTURE_USAGE
125 acpi_status acpi_subsystem_status(void);
126 #endif
127 
130 
131 #ifdef ACPI_FUTURE_USAGE
132 acpi_status acpi_get_system_info(struct acpi_buffer *ret_buffer);
133 #endif
134 
136 
138 
140 
142 
143 u32
145  acpi_physical_address address,
146  acpi_size length, u8 warn);
147 
149 acpi_decode_pld_buffer(u8 *in_buffer,
150  acpi_size length, struct acpi_pld_info **return_buffer);
151 
152 /*
153  * ACPI Memory management
154  */
155 void *acpi_allocate(u32 size);
156 
157 void *acpi_callocate(u32 size);
158 
159 void acpi_free(void *address);
160 
161 /*
162  * ACPI table load/unload interfaces
163  */
165 
167 
169 
170 /*
171  * ACPI table manipulation interfaces
172  */
174 
175 acpi_status acpi_find_root_pointer(acpi_size *rsdp_address);
176 
178 
181  u32 instance,
182  struct acpi_table_header *out_table_header);
183 
186  u32 instance, struct acpi_table_header **out_table,
187  acpi_size *tbl_size);
190  u32 instance, struct acpi_table_header **out_table);
191 
193 acpi_get_table_by_index(u32 table_index,
194  struct acpi_table_header **out_table);
195 
198 
200 
201 /*
202  * Namespace and name interfaces
203  */
206  acpi_handle start_object,
207  u32 max_depth,
208  acpi_walk_callback pre_order_visit,
209  acpi_walk_callback post_order_visit,
210  void *context, void **return_value);
211 
213 acpi_get_devices(const char *HID,
214  acpi_walk_callback user_function,
215  void *context, void **return_value);
216 
219  u32 name_type, struct acpi_buffer *ret_path_ptr);
220 
224 
226 acpi_attach_data(acpi_handle object, acpi_object_handler handler, void *data);
227 
229 
231 acpi_get_data(acpi_handle object, acpi_object_handler handler, void **data);
232 
234 acpi_debug_trace(char *name, u32 debug_level, u32 debug_layer, u32 flags);
235 
236 /*
237  * Object manipulation and enumeration
238  */
242  struct acpi_object_list *parameter_objects,
243  struct acpi_buffer *return_object_buffer);
244 
248  struct acpi_object_list *external_params,
249  struct acpi_buffer *return_buffer,
250  acpi_object_type return_type);
251 
254  struct acpi_device_info **return_buffer);
255 
257 
260  acpi_handle parent,
261  acpi_handle child, acpi_handle * out_handle);
262 
264 
266 
267 acpi_status acpi_get_parent(acpi_handle object, acpi_handle * out_handle);
268 
269 /*
270  * Handler interfaces
271  */
274 
277  (ACPI_GBL_EVENT_HANDLER handler, void *context))
278 
281  acpi_event,
283  handler,
284  void
285  *context))
289  handler))
292  gpe_device,
294  u32 type,
296  address,
297  void *context))
300  u32 gpe_number,
302  address))
306  acpi_notify_handler handler, void *context);
307 
311 
314  acpi_adr_space_type space_id,
315  acpi_adr_space_handler handler,
317 
320  acpi_adr_space_type space_id,
321  acpi_adr_space_handler handler);
322 
323 #ifdef ACPI_FUTURE_USAGE
324 acpi_status acpi_install_exception_handler(acpi_exception_handler handler);
325 #endif
326 
328 
329 /*
330  * Global Lock interfaces
331  */
334  u32 *handle))
337 
338 /*
339  * Interfaces to AML mutex objects
340  */
343 
345 
346 /*
347  * Fixed Event interfaces
348  */
351 
354 
356 
360  *event_status))
361 /*
362  * General Purpose Event (GPE) Interfaces
363  */
365 
367  acpi_enable_gpe(acpi_handle gpe_device,
368  u32 gpe_number))
369 
371  acpi_disable_gpe(acpi_handle gpe_device,
372  u32 gpe_number))
373 
375  acpi_clear_gpe(acpi_handle gpe_device,
376  u32 gpe_number))
377 
379  acpi_set_gpe(acpi_handle gpe_device,
381 
383  acpi_finish_gpe(acpi_handle gpe_device,
384  u32 gpe_number))
385 
388  parent_device,
389  acpi_handle gpe_device,
390  u32 gpe_number))
393  u32 gpe_number,
394  u8 action))
396  acpi_get_gpe_status(acpi_handle gpe_device,
397  u32 gpe_number,
399  *event_status))
400 
402 
404 
406  acpi_get_gpe_device(u32 gpe_index,
407  acpi_handle * gpe_device))
408 
411  struct
413  *gpe_block_address,
414  u32 register_count,
415  u32 interrupt_number))
418 
419 /*
420  * Resource interfaces
421  */
422 typedef
423 acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource,
424  void *context);
425 
428  char *name,
430  struct acpi_buffer *ret_buffer);
431 
434 
435 #ifdef ACPI_FUTURE_USAGE
437 acpi_get_possible_resources(acpi_handle device, struct acpi_buffer *ret_buffer);
438 #endif
439 
442  struct acpi_buffer *ret_buffer);
443 
446  char *name,
447  acpi_walk_resource_callback user_function, void *context);
448 
450 acpi_set_current_resources(acpi_handle device, struct acpi_buffer *in_buffer);
451 
453 acpi_get_irq_routing_table(acpi_handle device, struct acpi_buffer *ret_buffer);
454 
457  struct acpi_resource_address64 *out);
458 
460 acpi_buffer_to_resource(u8 *aml_buffer,
461  u16 aml_buffer_length,
462  struct acpi_resource **resource_ptr);
463 
464 /*
465  * Hardware (ACPI device) interfaces
466  */
467 acpi_status acpi_reset(void);
468 
470  acpi_read_bit_register(u32 register_id,
471  u32 *return_value))
472 
474  acpi_write_bit_register(u32 register_id,
475  u32 value))
476 
479  physical_address))
480 
481 #if ACPI_MACHINE_WIDTH == 64
483  acpi_set_firmware_waking_vector64(u64
484  physical_address))
485 #endif
486 
488 
490 
491 /*
492  * Sleep/Wake interfaces
493  */
495 acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b);
496 
498 
500 
502 
504 
506 
507 /*
508  * ACPI Timer interfaces
509  */
510 #ifdef ACPI_FUTURE_USAGE
512  acpi_get_timer_resolution(u32 *resolution))
513 
515 
517  acpi_get_timer_duration(u32 start_ticks,
518  u32 end_ticks,
519  u32 *time_elapsed))
520 #endif /* ACPI_FUTURE_USAGE */
521 
522 /*
523  * Error/Warning output
524  */
526 acpi_error(const char *module_name,
527  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
528 
530 acpi_exception(const char *module_name,
531  u32 line_number,
532  acpi_status status, const char *format, ...) ACPI_PRINTF_LIKE(4);
533 
535 acpi_warning(const char *module_name,
536  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
537 
539 acpi_info(const char *module_name,
540  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
541 
543 acpi_bios_error(const char *module_name,
544  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
545 
547 acpi_bios_warning(const char *module_name,
548  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
549 
550 /*
551  * Debug output
552  */
553 #ifdef ACPI_DEBUG_OUTPUT
554 
556 acpi_debug_print(u32 requested_debug_level,
557  u32 line_number,
558  const char *function_name,
559  const char *module_name,
560  u32 component_id, const char *format, ...) ACPI_PRINTF_LIKE(6);
561 
563 acpi_debug_print_raw(u32 requested_debug_level,
564  u32 line_number,
565  const char *function_name,
566  const char *module_name,
567  u32 component_id,
568  const char *format, ...) ACPI_PRINTF_LIKE(6);
569 #endif
570 
571 #endif /* __ACXFACE_H__ */