Subversion Repositories Kolibri OS

Rev

Rev 6588 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6588 serge 1
/******************************************************************************
2
 *
3
 * Name: acpixf.h - External interfaces to the ACPI subsystem
4
 *
5
 *****************************************************************************/
6
 
7
/*
7143 serge 8
 * Copyright (C) 2000 - 2016, Intel Corp.
6588 serge 9
 * All rights reserved.
10
 *
11
 * Redistribution and use in source and binary forms, with or without
12
 * modification, are permitted provided that the following conditions
13
 * are met:
14
 * 1. Redistributions of source code must retain the above copyright
15
 *    notice, this list of conditions, and the following disclaimer,
16
 *    without modification.
17
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18
 *    substantially similar to the "NO WARRANTY" disclaimer below
19
 *    ("Disclaimer") and any redistribution must be conditioned upon
20
 *    including a substantially similar Disclaimer requirement for further
21
 *    binary redistribution.
22
 * 3. Neither the names of the above-listed copyright holders nor the names
23
 *    of any contributors may be used to endorse or promote products derived
24
 *    from this software without specific prior written permission.
25
 *
26
 * Alternatively, this software may be distributed under the terms of the
27
 * GNU General Public License ("GPL") version 2 as published by the Free
28
 * Software Foundation.
29
 *
30
 * NO WARRANTY
31
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
 * POSSIBILITY OF SUCH DAMAGES.
42
 */
43
 
44
#ifndef __ACXFACE_H__
45
#define __ACXFACE_H__
46
 
47
/* Current ACPICA subsystem version in YYYYMMDD format */
48
 
7143 serge 49
#define ACPI_CA_VERSION                 0x20160108
6588 serge 50
 
51
#include 
52
#include 
53
#include 
54
#include 
55
 
56
/*****************************************************************************
57
 *
58
 * Macros used for ACPICA globals and configuration
59
 *
60
 ****************************************************************************/
61
 
62
/*
63
 * Ensure that global variables are defined and initialized only once.
64
 *
65
 * The use of these macros allows for a single list of globals (here)
66
 * in order to simplify maintenance of the code.
67
 */
68
#ifdef DEFINE_ACPI_GLOBALS
69
#define ACPI_GLOBAL(type,name) \
70
	extern type name; \
71
	type name
72
 
73
#define ACPI_INIT_GLOBAL(type,name,value) \
74
	type name=value
75
 
76
#else
77
#ifndef ACPI_GLOBAL
78
#define ACPI_GLOBAL(type,name) \
79
	extern type name
80
#endif
81
 
82
#ifndef ACPI_INIT_GLOBAL
83
#define ACPI_INIT_GLOBAL(type,name,value) \
84
	extern type name
85
#endif
86
#endif
87
 
88
/*
89
 * These macros configure the various ACPICA interfaces. They are
90
 * useful for generating stub inline functions for features that are
91
 * configured out of the current kernel or ACPICA application.
92
 */
93
#ifndef ACPI_EXTERNAL_RETURN_STATUS
94
#define ACPI_EXTERNAL_RETURN_STATUS(prototype) \
95
	prototype;
96
#endif
97
 
98
#ifndef ACPI_EXTERNAL_RETURN_OK
99
#define ACPI_EXTERNAL_RETURN_OK(prototype) \
100
	prototype;
101
#endif
102
 
103
#ifndef ACPI_EXTERNAL_RETURN_VOID
104
#define ACPI_EXTERNAL_RETURN_VOID(prototype) \
105
	prototype;
106
#endif
107
 
108
#ifndef ACPI_EXTERNAL_RETURN_UINT32
109
#define ACPI_EXTERNAL_RETURN_UINT32(prototype) \
110
	prototype;
111
#endif
112
 
113
#ifndef ACPI_EXTERNAL_RETURN_PTR
114
#define ACPI_EXTERNAL_RETURN_PTR(prototype) \
115
	prototype;
116
#endif
117
 
118
/*****************************************************************************
119
 *
120
 * Public globals and runtime configuration options
121
 *
122
 ****************************************************************************/
123
 
124
/*
125
 * Enable "slack mode" of the AML interpreter?  Default is FALSE, and the
126
 * interpreter strictly follows the ACPI specification. Setting to TRUE
127
 * allows the interpreter to ignore certain errors and/or bad AML constructs.
128
 *
129
 * Currently, these features are enabled by this flag:
130
 *
131
 * 1) Allow "implicit return" of last value in a control method
132
 * 2) Allow access beyond the end of an operation region
133
 * 3) Allow access to uninitialized locals/args (auto-init to integer 0)
134
 * 4) Allow ANY object type to be a source operand for the Store() operator
135
 * 5) Allow unresolved references (invalid target name) in package objects
136
 * 6) Enable warning messages for behavior that is not ACPI spec compliant
137
 */
138
ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_interpreter_slack, FALSE);
139
 
140
/*
141
 * Automatically serialize all methods that create named objects? Default
142
 * is TRUE, meaning that all non_serialized methods are scanned once at
143
 * table load time to determine those that create named objects. Methods
144
 * that create named objects are marked Serialized in order to prevent
145
 * possible run-time problems if they are entered by more than one thread.
146
 */
147
ACPI_INIT_GLOBAL(u8, acpi_gbl_auto_serialize_methods, TRUE);
148
 
149
/*
150
 * Create the predefined _OSI method in the namespace? Default is TRUE
151
 * because ACPICA is fully compatible with other ACPI implementations.
152
 * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior.
153
 */
154
ACPI_INIT_GLOBAL(u8, acpi_gbl_create_osi_method, TRUE);
155
 
156
/*
157
 * Optionally use default values for the ACPI register widths. Set this to
158
 * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
159
 */
160
ACPI_INIT_GLOBAL(u8, acpi_gbl_use_default_register_widths, TRUE);
161
 
162
/*
163
 * Whether or not to verify the table checksum before installation. Set
164
 * this to TRUE to verify the table checksum before install it to the table
165
 * manager. Note that enabling this option causes errors to happen in some
166
 * OSPMs during early initialization stages. Default behavior is to do such
167
 * verification.
168
 */
169
ACPI_INIT_GLOBAL(u8, acpi_gbl_verify_table_checksum, TRUE);
170
 
171
/*
172
 * Optionally enable output from the AML Debug Object.
173
 */
174
ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_aml_debug_object, FALSE);
175
 
176
/*
177
 * Optionally copy the entire DSDT to local memory (instead of simply
178
 * mapping it.) There are some BIOSs that corrupt or replace the original
179
 * DSDT, creating the need for this option. Default is FALSE, do not copy
180
 * the DSDT.
181
 */
182
ACPI_INIT_GLOBAL(u8, acpi_gbl_copy_dsdt_locally, FALSE);
183
 
184
/*
185
 * Optionally ignore an XSDT if present and use the RSDT instead.
186
 * Although the ACPI specification requires that an XSDT be used instead
187
 * of the RSDT, the XSDT has been found to be corrupt or ill-formed on
188
 * some machines. Default behavior is to use the XSDT if present.
189
 */
190
ACPI_INIT_GLOBAL(u8, acpi_gbl_do_not_use_xsdt, FALSE);
191
 
192
/*
7143 serge 193
 * Optionally support group module level code.
194
 */
195
ACPI_INIT_GLOBAL(u8, acpi_gbl_group_module_level_code, TRUE);
196
 
197
/*
6588 serge 198
 * Optionally use 32-bit FADT addresses if and when there is a conflict
199
 * (address mismatch) between the 32-bit and 64-bit versions of the
200
 * address. Although ACPICA adheres to the ACPI specification which
201
 * requires the use of the corresponding 64-bit address if it is non-zero,
202
 * some machines have been found to have a corrupted non-zero 64-bit
203
 * address. Default is FALSE, do not favor the 32-bit addresses.
204
 */
205
ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_fadt_addresses, FALSE);
206
 
207
/*
208
 * Optionally use 32-bit FACS table addresses.
209
 * It is reported that some platforms fail to resume from system suspending
210
 * if 64-bit FACS table address is selected:
211
 * https://bugzilla.kernel.org/show_bug.cgi?id=74021
212
 * Default is TRUE, favor the 32-bit addresses.
213
 */
214
ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_facs_addresses, TRUE);
215
 
216
/*
217
 * Optionally truncate I/O addresses to 16 bits. Provides compatibility
218
 * with other ACPI implementations. NOTE: During ACPICA initialization,
219
 * this value is set to TRUE if any Windows OSI strings have been
220
 * requested by the BIOS.
221
 */
222
ACPI_INIT_GLOBAL(u8, acpi_gbl_truncate_io_addresses, FALSE);
223
 
224
/*
225
 * Disable runtime checking and repair of values returned by control methods.
226
 * Use only if the repair is causing a problem on a particular machine.
227
 */
228
ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_auto_repair, FALSE);
229
 
230
/*
231
 * Optionally do not install any SSDTs from the RSDT/XSDT during initialization.
232
 * This can be useful for debugging ACPI problems on some machines.
233
 */
234
ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_ssdt_table_install, FALSE);
235
 
236
/*
237
 * Optionally enable runtime namespace override.
238
 */
239
ACPI_INIT_GLOBAL(u8, acpi_gbl_runtime_namespace_override, TRUE);
240
 
241
/*
242
 * We keep track of the latest version of Windows that has been requested by
243
 * the BIOS. ACPI 5.0.
244
 */
245
ACPI_INIT_GLOBAL(u8, acpi_gbl_osi_data, 0);
246
 
247
/*
248
 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
249
 * that the ACPI hardware is no longer required. A flag in the FADT indicates
250
 * a reduced HW machine, and that flag is duplicated here for convenience.
251
 */
252
ACPI_INIT_GLOBAL(u8, acpi_gbl_reduced_hardware, FALSE);
253
 
254
/*
255
 * This mechanism is used to trace a specified AML method. The method is
256
 * traced each time it is executed.
257
 */
258
ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_flags, 0);
259
ACPI_INIT_GLOBAL(const char *, acpi_gbl_trace_method_name, NULL);
260
ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_level, ACPI_TRACE_LEVEL_DEFAULT);
261
ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_layer, ACPI_TRACE_LAYER_DEFAULT);
262
 
263
/*
264
 * Runtime configuration of debug output control masks. We want the debug
265
 * switches statically initialized so they are already set when the debugger
266
 * is entered.
267
 */
268
ACPI_INIT_GLOBAL(u32, acpi_dbg_level, ACPI_DEBUG_DEFAULT);
269
ACPI_INIT_GLOBAL(u32, acpi_dbg_layer, 0);
270
 
7143 serge 271
/* Optionally enable timer output with Debug Object output */
272
 
273
ACPI_INIT_GLOBAL(u8, acpi_gbl_display_debug_timer, FALSE);
274
 
6588 serge 275
/*
7143 serge 276
 * Debugger command handshake globals. Host OSes need to access these
277
 * variables to implement their own command handshake mechanism.
278
 */
279
#ifdef ACPI_DEBUGGER
280
ACPI_INIT_GLOBAL(u8, acpi_gbl_method_executing, FALSE);
281
ACPI_GLOBAL(char, acpi_gbl_db_line_buf[ACPI_DB_LINE_BUFFER_SIZE]);
282
#endif
283
 
284
/*
6588 serge 285
 * Other miscellaneous globals
286
 */
287
ACPI_GLOBAL(struct acpi_table_fadt, acpi_gbl_FADT);
288
ACPI_GLOBAL(u32, acpi_current_gpe_count);
289
ACPI_GLOBAL(u8, acpi_gbl_system_awake_and_running);
290
 
291
/*****************************************************************************
292
 *
293
 * ACPICA public interface configuration.
294
 *
295
 * Interfaces that are configured out of the ACPICA build are replaced
296
 * by inlined stubs by default.
297
 *
298
 ****************************************************************************/
299
 
300
/*
301
 * Hardware-reduced prototypes (default: Not hardware reduced).
302
 *
303
 * All ACPICA hardware-related interfaces that use these macros will be
304
 * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
305
 * is set to TRUE.
306
 *
307
 * Note: This static build option for reduced hardware is intended to
308
 * reduce ACPICA code size if desired or necessary. However, even if this
309
 * option is not specified, the runtime behavior of ACPICA is dependent
310
 * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set,
311
 * the flag will enable similar behavior -- ACPICA will not attempt
312
 * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.)
313
 */
314
#if (!ACPI_REDUCED_HARDWARE)
315
#define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \
316
	ACPI_EXTERNAL_RETURN_STATUS(prototype)
317
 
318
#define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \
319
	ACPI_EXTERNAL_RETURN_OK(prototype)
320
 
321
#define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \
322
	ACPI_EXTERNAL_RETURN_VOID(prototype)
323
 
324
#else
325
#define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \
326
	static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);}
327
 
328
#define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \
329
	static ACPI_INLINE prototype {return(AE_OK);}
330
 
331
#define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \
332
	static ACPI_INLINE prototype {return;}
333
 
334
#endif				/* !ACPI_REDUCED_HARDWARE */
335
 
336
/*
337
 * Error message prototypes (default: error messages enabled).
338
 *
339
 * All interfaces related to error and warning messages
340
 * will be configured out of the ACPICA build if the
341
 * ACPI_NO_ERROR_MESSAGE flag is defined.
342
 */
343
#ifndef ACPI_NO_ERROR_MESSAGES
344
#define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \
345
	prototype;
346
 
347
#else
348
#define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \
349
	static ACPI_INLINE prototype {return;}
350
 
351
#endif				/* ACPI_NO_ERROR_MESSAGES */
352
 
353
/*
354
 * Debugging output prototypes (default: no debug output).
355
 *
356
 * All interfaces related to debug output messages
357
 * will be configured out of the ACPICA build unless the
358
 * ACPI_DEBUG_OUTPUT flag is defined.
359
 */
360
#ifdef ACPI_DEBUG_OUTPUT
361
#define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \
362
	prototype;
363
 
364
#else
365
#define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \
366
	static ACPI_INLINE prototype {return;}
367
 
368
#endif				/* ACPI_DEBUG_OUTPUT */
369
 
370
/*
371
 * Application prototypes
372
 *
373
 * All interfaces used by application will be configured
374
 * out of the ACPICA build unless the ACPI_APPLICATION
375
 * flag is defined.
376
 */
377
#ifdef ACPI_APPLICATION
378
#define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \
379
	prototype;
380
 
381
#else
382
#define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \
383
	static ACPI_INLINE prototype {return;}
384
 
385
#endif				/* ACPI_APPLICATION */
386
 
7143 serge 387
/*
388
 * Debugger prototypes
389
 *
390
 * All interfaces used by debugger will be configured
391
 * out of the ACPICA build unless the ACPI_DEBUGGER
392
 * flag is defined.
393
 */
394
#ifdef ACPI_DEBUGGER
395
#define ACPI_DBR_DEPENDENT_RETURN_OK(prototype) \
396
	ACPI_EXTERNAL_RETURN_OK(prototype)
397
 
398
#define ACPI_DBR_DEPENDENT_RETURN_VOID(prototype) \
399
	ACPI_EXTERNAL_RETURN_VOID(prototype)
400
 
401
#else
402
#define ACPI_DBR_DEPENDENT_RETURN_OK(prototype) \
403
	static ACPI_INLINE prototype {return(AE_OK);}
404
 
405
#define ACPI_DBR_DEPENDENT_RETURN_VOID(prototype) \
406
	static ACPI_INLINE prototype {return;}
407
 
408
#endif				/* ACPI_DEBUGGER */
409
 
6588 serge 410
/*****************************************************************************
411
 *
412
 * ACPICA public interface prototypes
413
 *
414
 ****************************************************************************/
415
 
416
/*
417
 * Initialization
418
 */
419
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init
420
			    acpi_initialize_tables(struct acpi_table_desc
421
						   *initial_storage,
422
						   u32 initial_table_count,
423
						   u8 allow_resize))
424
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_initialize_subsystem(void))
425
 
426
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_enable_subsystem(u32 flags))
427
 
428
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init
429
			    acpi_initialize_objects(u32 flags))
430
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_terminate(void))
431
 
432
/*
433
 * Miscellaneous global interfaces
434
 */
435
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable(void))
436
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable(void))
437
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_subsystem_status(void))
438
 
439
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
440
			    acpi_get_system_info(struct acpi_buffer
441
						 *ret_buffer))
442
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
443
			     acpi_get_statistics(struct acpi_statistics *stats))
444
ACPI_EXTERNAL_RETURN_PTR(const char
445
			  *acpi_format_exception(acpi_status exception))
446
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_purge_cached_objects(void))
447
 
448
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
449
			    acpi_install_interface(acpi_string interface_name))
450
 
451
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
452
			    acpi_remove_interface(acpi_string interface_name))
453
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_update_interfaces(u8 action))
454
 
455
ACPI_EXTERNAL_RETURN_UINT32(u32
456
			    acpi_check_address_range(acpi_adr_space_type
457
						     space_id,
458
						     acpi_physical_address
459
						     address, acpi_size length,
460
						     u8 warn))
461
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
462
			     acpi_decode_pld_buffer(u8 *in_buffer,
463
						    acpi_size length,
464
						    struct acpi_pld_info
465
						    **return_buffer))
466
 
467
/*
468
 * ACPI table load/unload interfaces
469
 */
470
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init
471
			    acpi_install_table(acpi_physical_address address,
472
					       u8 physical))
473
 
474
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
475
			    acpi_load_table(struct acpi_table_header *table))
476
 
477
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
478
			    acpi_unload_parent_table(acpi_handle object))
479
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_load_tables(void))
480
 
481
/*
482
 * ACPI table manipulation interfaces
483
 */
484
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_reallocate_root_table(void))
485
 
486
ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init
487
			    acpi_find_root_pointer(acpi_physical_address *
488
						   rsdp_address))
489
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
490
			     acpi_get_table_header(acpi_string signature,
491
						   u32 instance,
492
						   struct acpi_table_header
493
						   *out_table_header))
494
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
495
			     acpi_get_table(acpi_string signature, u32 instance,
496
					    struct acpi_table_header
497
					    **out_table))
498
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
499
			     acpi_get_table_by_index(u32 table_index,
500
						     struct acpi_table_header
501
						     **out_table))
502
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
503
			     acpi_install_table_handler(acpi_table_handler
504
							handler, void *context))
505
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
506
			     acpi_remove_table_handler(acpi_table_handler
507
						       handler))
508
 
509
/*
510
 * Namespace and name interfaces
511
 */
512
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
513
			    acpi_walk_namespace(acpi_object_type type,
514
						acpi_handle start_object,
515
						u32 max_depth,
516
						acpi_walk_callback
517
						descending_callback,
518
						acpi_walk_callback
519
						ascending_callback,
520
						void *context,
521
						void **return_value))
522
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
523
			     acpi_get_devices(const char *HID,
524
					      acpi_walk_callback user_function,
525
					      void *context,
526
					      void **return_value))
527
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
528
			     acpi_get_name(acpi_handle object, u32 name_type,
529
					   struct acpi_buffer *ret_path_ptr))
530
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
531
			     acpi_get_handle(acpi_handle parent,
532
					     acpi_string pathname,
533
					     acpi_handle * ret_handle))
534
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
535
			     acpi_attach_data(acpi_handle object,
536
					      acpi_object_handler handler,
537
					      void *data))
538
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
539
			     acpi_detach_data(acpi_handle object,
540
					      acpi_object_handler handler))
541
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
542
			     acpi_get_data(acpi_handle object,
543
					   acpi_object_handler handler,
544
					   void **data))
545
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
546
			     acpi_debug_trace(const char *name, u32 debug_level,
547
					      u32 debug_layer, u32 flags))
548
 
549
/*
550
 * Object manipulation and enumeration
551
 */
552
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
553
			    acpi_evaluate_object(acpi_handle object,
554
						 acpi_string pathname,
555
						 struct acpi_object_list
556
						 *parameter_objects,
557
						 struct acpi_buffer
558
						 *return_object_buffer))
559
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
560
			     acpi_evaluate_object_typed(acpi_handle object,
561
							acpi_string pathname,
562
							struct acpi_object_list
563
							*external_params,
564
							struct acpi_buffer
565
							*return_buffer,
566
							acpi_object_type
567
							return_type))
568
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
569
			     acpi_get_object_info(acpi_handle object,
570
						  struct acpi_device_info
571
						  **return_buffer))
572
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_install_method(u8 *buffer))
573
 
574
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
575
			    acpi_get_next_object(acpi_object_type type,
576
						 acpi_handle parent,
577
						 acpi_handle child,
578
						 acpi_handle * out_handle))
579
 
580
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
581
			    acpi_get_type(acpi_handle object,
582
					  acpi_object_type * out_type))
583
 
584
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
585
			    acpi_get_parent(acpi_handle object,
586
					    acpi_handle * out_handle))
587
 
588
/*
589
 * Handler interfaces
590
 */
591
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
592
			    acpi_install_initialization_handler
593
			    (acpi_init_handler handler, u32 function))
594
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
595
				 acpi_install_sci_handler(acpi_sci_handler
596
							  address,
597
							  void *context))
598
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
599
				 acpi_remove_sci_handler(acpi_sci_handler
600
							 address))
601
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
602
				 acpi_install_global_event_handler
603
				 (acpi_gbl_event_handler handler,
604
				  void *context))
605
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
606
				 acpi_install_fixed_event_handler(u32
607
								  acpi_event,
608
								  acpi_event_handler
609
								  handler,
610
								  void
611
								  *context))
612
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
613
				 acpi_remove_fixed_event_handler(u32 acpi_event,
614
								 acpi_event_handler
615
								 handler))
616
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
617
				 acpi_install_gpe_handler(acpi_handle
618
							  gpe_device,
619
							  u32 gpe_number,
620
							  u32 type,
621
							  acpi_gpe_handler
622
							  address,
623
							  void *context))
624
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
625
				 acpi_install_gpe_raw_handler(acpi_handle
626
							      gpe_device,
627
							      u32 gpe_number,
628
							      u32 type,
629
							      acpi_gpe_handler
630
							      address,
631
							      void *context))
632
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
633
				 acpi_remove_gpe_handler(acpi_handle gpe_device,
634
							 u32 gpe_number,
635
							 acpi_gpe_handler
636
							 address))
637
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
638
			     acpi_install_notify_handler(acpi_handle device,
639
							 u32 handler_type,
640
							 acpi_notify_handler
641
							 handler,
642
							 void *context))
643
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
644
			     acpi_remove_notify_handler(acpi_handle device,
645
							u32 handler_type,
646
							acpi_notify_handler
647
							handler))
648
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
649
			     acpi_install_address_space_handler(acpi_handle
650
								device,
651
								acpi_adr_space_type
652
								space_id,
653
								acpi_adr_space_handler
654
								handler,
655
								acpi_adr_space_setup
656
								setup,
657
								void *context))
658
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
659
			     acpi_remove_address_space_handler(acpi_handle
660
							       device,
661
							       acpi_adr_space_type
662
							       space_id,
663
							       acpi_adr_space_handler
664
							       handler))
665
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
666
			     acpi_install_exception_handler
667
			     (acpi_exception_handler handler))
668
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
669
			     acpi_install_interface_handler
670
			     (acpi_interface_handler handler))
671
 
672
/*
673
 * Global Lock interfaces
674
 */
675
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
676
				acpi_acquire_global_lock(u16 timeout,
677
							 u32 *handle))
678
 
679
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
680
				acpi_release_global_lock(u32 handle))
681
 
682
/*
683
 * Interfaces to AML mutex objects
684
 */
685
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
686
			    acpi_acquire_mutex(acpi_handle handle,
687
					       acpi_string pathname,
688
					       u16 timeout))
689
 
690
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
691
			    acpi_release_mutex(acpi_handle handle,
692
					       acpi_string pathname))
693
 
694
/*
695
 * Fixed Event interfaces
696
 */
697
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
698
				acpi_enable_event(u32 event, u32 flags))
699
 
700
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
701
				acpi_disable_event(u32 event, u32 flags))
702
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_clear_event(u32 event))
703
 
704
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
705
				acpi_get_event_status(u32 event,
706
						      acpi_event_status
707
						      *event_status))
708
 
709
/*
710
 * General Purpose Event (GPE) Interfaces
711
 */
712
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_update_all_gpes(void))
713
 
714
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
715
				acpi_enable_gpe(acpi_handle gpe_device,
716
						u32 gpe_number))
717
 
718
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
719
				acpi_disable_gpe(acpi_handle gpe_device,
720
						 u32 gpe_number))
721
 
722
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
723
				acpi_clear_gpe(acpi_handle gpe_device,
724
					       u32 gpe_number))
725
 
726
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
727
				acpi_set_gpe(acpi_handle gpe_device,
728
					     u32 gpe_number, u8 action))
729
 
730
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
731
				acpi_finish_gpe(acpi_handle gpe_device,
732
						u32 gpe_number))
733
 
734
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
735
				acpi_mark_gpe_for_wake(acpi_handle gpe_device,
736
						       u32 gpe_number))
737
 
738
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
739
				acpi_setup_gpe_for_wake(acpi_handle
740
							parent_device,
741
							acpi_handle gpe_device,
742
							u32 gpe_number))
743
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
744
				 acpi_set_gpe_wake_mask(acpi_handle gpe_device,
745
							u32 gpe_number,
746
							u8 action))
747
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
748
				 acpi_get_gpe_status(acpi_handle gpe_device,
749
						     u32 gpe_number,
750
						     acpi_event_status
751
						     *event_status))
752
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void))
753
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void))
754
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_wakeup_gpes(void))
755
 
756
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
757
				acpi_get_gpe_device(u32 gpe_index,
758
						    acpi_handle * gpe_device))
759
 
760
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
761
				acpi_install_gpe_block(acpi_handle gpe_device,
762
						       struct
763
						       acpi_generic_address
764
						       *gpe_block_address,
765
						       u32 register_count,
766
						       u32 interrupt_number))
767
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
768
				 acpi_remove_gpe_block(acpi_handle gpe_device))
769
 
770
/*
771
 * Resource interfaces
772
 */
773
typedef
774
acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource,
775
					   void *context);
776
 
777
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
778
			    acpi_get_vendor_resource(acpi_handle device,
779
						     char *name,
780
						     struct acpi_vendor_uuid
781
						     *uuid,
782
						     struct acpi_buffer
783
						     *ret_buffer))
784
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
785
			     acpi_get_current_resources(acpi_handle device,
786
							struct acpi_buffer
787
							*ret_buffer))
788
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
789
			     acpi_get_possible_resources(acpi_handle device,
790
							 struct acpi_buffer
791
							 *ret_buffer))
792
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
793
			     acpi_get_event_resources(acpi_handle device_handle,
794
						      struct acpi_buffer
795
						      *ret_buffer))
796
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
797
			     acpi_walk_resource_buffer(struct acpi_buffer
798
						       *buffer,
799
						       acpi_walk_resource_callback
800
						       user_function,
801
						       void *context))
802
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
803
			     acpi_walk_resources(acpi_handle device, char *name,
804
						 acpi_walk_resource_callback
805
						 user_function, void *context))
806
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
807
			     acpi_set_current_resources(acpi_handle device,
808
							struct acpi_buffer
809
							*in_buffer))
810
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
811
			     acpi_get_irq_routing_table(acpi_handle device,
812
							struct acpi_buffer
813
							*ret_buffer))
814
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
815
			     acpi_resource_to_address64(struct acpi_resource
816
							*resource,
817
							struct
818
							acpi_resource_address64
819
							*out))
820
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
821
			     acpi_buffer_to_resource(u8 *aml_buffer,
822
						     u16 aml_buffer_length,
823
						     struct acpi_resource
824
						     **resource_ptr))
825
 
826
/*
827
 * Hardware (ACPI device) interfaces
828
 */
829
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_reset(void))
830
 
831
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
832
			    acpi_read(u64 *value,
833
				      struct acpi_generic_address *reg))
834
 
835
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
836
			    acpi_write(u64 value,
837
				       struct acpi_generic_address *reg))
838
 
839
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
840
				acpi_read_bit_register(u32 register_id,
841
						       u32 *return_value))
842
 
843
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
844
				acpi_write_bit_register(u32 register_id,
845
							u32 value))
846
 
847
/*
848
 * Sleep/Wake interfaces
849
 */
850
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
851
			    acpi_get_sleep_type_data(u8 sleep_state,
852
						     u8 *slp_typ_a,
853
						     u8 *slp_typ_b))
854
 
855
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
856
			    acpi_enter_sleep_state_prep(u8 sleep_state))
857
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_enter_sleep_state(u8 sleep_state))
858
 
859
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enter_sleep_state_s4bios(void))
860
 
861
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
862
			    acpi_leave_sleep_state_prep(u8 sleep_state))
863
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state))
864
 
865
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
7143 serge 866
				acpi_set_firmware_waking_vector
6588 serge 867
				(acpi_physical_address physical_address,
868
				 acpi_physical_address physical_address64))
869
/*
870
 * ACPI Timer interfaces
871
 */
872
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
873
				acpi_get_timer_resolution(u32 *resolution))
874
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_get_timer(u32 *ticks))
875
 
876
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
877
				acpi_get_timer_duration(u32 start_ticks,
878
							u32 end_ticks,
879
							u32 *time_elapsed))
880
 
881
/*
882
 * Error/Warning output
883
 */
884
ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3)
885
			       void ACPI_INTERNAL_VAR_XFACE
886
			       acpi_error(const char *module_name,
887
					  u32 line_number,
888
					  const char *format, ...))
889
ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(4)
890
				void ACPI_INTERNAL_VAR_XFACE
891
				acpi_exception(const char *module_name,
892
					       u32 line_number,
893
					       acpi_status status,
894
					       const char *format, ...))
895
ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3)
896
				void ACPI_INTERNAL_VAR_XFACE
897
				acpi_warning(const char *module_name,
898
					     u32 line_number,
899
					     const char *format, ...))
7143 serge 900
ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1)
6588 serge 901
				void ACPI_INTERNAL_VAR_XFACE
7143 serge 902
				acpi_info(const char *format, ...))
6588 serge 903
ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3)
904
				void ACPI_INTERNAL_VAR_XFACE
905
				acpi_bios_error(const char *module_name,
906
						u32 line_number,
907
						const char *format, ...))
908
ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3)
909
				void ACPI_INTERNAL_VAR_XFACE
910
				acpi_bios_warning(const char *module_name,
911
						  u32 line_number,
912
						  const char *format, ...))
913
 
914
/*
915
 * Debug output
916
 */
917
ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6)
918
			       void ACPI_INTERNAL_VAR_XFACE
919
			       acpi_debug_print(u32 requested_debug_level,
920
						u32 line_number,
921
						const char *function_name,
922
						const char *module_name,
923
						u32 component_id,
924
						const char *format, ...))
925
ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6)
926
				void ACPI_INTERNAL_VAR_XFACE
927
				acpi_debug_print_raw(u32 requested_debug_level,
928
						     u32 line_number,
929
						     const char *function_name,
930
						     const char *module_name,
931
						     u32 component_id,
932
						     const char *format, ...))
933
 
934
ACPI_DBG_DEPENDENT_RETURN_VOID(void
935
			       acpi_trace_point(acpi_trace_event_type type,
936
						u8 begin,
937
						u8 *aml, char *pathname))
938
ACPI_APP_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1)
939
				void ACPI_INTERNAL_VAR_XFACE
940
				acpi_log_error(const char *format, ...))
941
 acpi_status acpi_initialize_debugger(void);
942
 
943
void acpi_terminate_debugger(void);
944
 
945
/*
946
 * Divergences
947
 */
948
ACPI_GLOBAL(u8, acpi_gbl_permanent_mmap);
949
 
950
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
951
			    acpi_get_table_with_size(acpi_string signature,
952
						     u32 instance,
953
						     struct acpi_table_header
954
						     **out_table,
955
						     acpi_size *tbl_size))
956
 
957
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
958
			    acpi_get_data_full(acpi_handle object,
959
					       acpi_object_handler handler,
960
					       void **data,
961
					       void (*callback)(void *)))
962
 
7143 serge 963
void acpi_run_debugger(char *batch_buffer);
964
 
6588 serge 965
void acpi_set_debugger_thread_id(acpi_thread_id thread_id);
966
 
967
#endif				/* __ACXFACE_H__ */