114
114
*****************************************************************************/
117
116
#ifndef __ACXFACE_H__
118
117
#define __ACXFACE_H__
120
119
/* Current ACPICA subsystem version in YYYYMMDD format */
122
#define ACPI_CA_VERSION 0x20140325
121
#define ACPI_CA_VERSION 0x20140424
124
123
#include "acconfig.h"
125
124
#include "actypes.h"
126
125
#include "actbl.h"
127
126
#include "acbuffer.h"
130
* Globals that are publically available
132
extern UINT32 AcpiCurrentGpeCount;
133
extern ACPI_TABLE_FADT AcpiGbl_FADT;
134
extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
135
extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */
136
extern UINT8 AcpiGbl_OsiData;
138
/* Runtime configuration of debug print levels */
140
extern UINT32 AcpiDbgLevel;
141
extern UINT32 AcpiDbgLayer;
143
/* ACPICA runtime options */
145
extern UINT8 AcpiGbl_AutoSerializeMethods;
146
extern UINT8 AcpiGbl_CopyDsdtLocally;
147
extern UINT8 AcpiGbl_CreateOsiMethod;
148
extern UINT8 AcpiGbl_DisableAutoRepair;
149
extern UINT8 AcpiGbl_DisableSsdtTableInstall;
150
extern UINT8 AcpiGbl_DoNotUseXsdt;
151
extern UINT8 AcpiGbl_EnableAmlDebugObject;
152
extern UINT8 AcpiGbl_EnableInterpreterSlack;
153
extern UINT32 AcpiGbl_TraceFlags;
154
extern ACPI_NAME AcpiGbl_TraceMethodName;
155
extern UINT8 AcpiGbl_TruncateIoAddresses;
156
extern UINT8 AcpiGbl_Use32BitFadtAddresses;
157
extern UINT8 AcpiGbl_UseDefaultRegisterWidths;
161
* Hardware-reduced prototypes. All interfaces that use these macros will
162
* be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
129
/*****************************************************************************
131
* Macros used for ACPICA globals and configuration
133
****************************************************************************/
136
* Ensure that global variables are defined and initialized only once.
138
* The use of these macros allows for a single list of globals (here)
139
* in order to simplify maintenance of the code.
141
#ifdef DEFINE_ACPI_GLOBALS
142
#define ACPI_GLOBAL(type,name) \
146
#define ACPI_INIT_GLOBAL(type,name,value) \
151
#define ACPI_GLOBAL(type,name) \
155
#ifndef ACPI_INIT_GLOBAL
156
#define ACPI_INIT_GLOBAL(type,name,value) \
162
* These macros configure the various ACPICA interfaces. They are
163
* useful for generating stub inline functions for features that are
164
* configured out of the current kernel or ACPICA application.
166
#ifndef ACPI_EXTERNAL_RETURN_STATUS
167
#define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \
171
#ifndef ACPI_EXTERNAL_RETURN_OK
172
#define ACPI_EXTERNAL_RETURN_OK(Prototype) \
176
#ifndef ACPI_EXTERNAL_RETURN_VOID
177
#define ACPI_EXTERNAL_RETURN_VOID(Prototype) \
181
#ifndef ACPI_EXTERNAL_RETURN_UINT32
182
#define ACPI_EXTERNAL_RETURN_UINT32(Prototype) \
186
#ifndef ACPI_EXTERNAL_RETURN_PTR
187
#define ACPI_EXTERNAL_RETURN_PTR(Prototype) \
192
/*****************************************************************************
194
* Public globals and runtime configuration options
196
****************************************************************************/
199
* Enable "slack mode" of the AML interpreter? Default is FALSE, and the
200
* interpreter strictly follows the ACPI specification. Setting to TRUE
201
* allows the interpreter to ignore certain errors and/or bad AML constructs.
203
* Currently, these features are enabled by this flag:
205
* 1) Allow "implicit return" of last value in a control method
206
* 2) Allow access beyond the end of an operation region
207
* 3) Allow access to uninitialized locals/args (auto-init to integer 0)
208
* 4) Allow ANY object type to be a source operand for the Store() operator
209
* 5) Allow unresolved references (invalid target name) in package objects
210
* 6) Enable warning messages for behavior that is not ACPI spec compliant
212
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableInterpreterSlack, FALSE);
215
* Automatically serialize all methods that create named objects? Default
216
* is TRUE, meaning that all NonSerialized methods are scanned once at
217
* table load time to determine those that create named objects. Methods
218
* that create named objects are marked Serialized in order to prevent
219
* possible run-time problems if they are entered by more than one thread.
221
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_AutoSerializeMethods, TRUE);
224
* Create the predefined _OSI method in the namespace? Default is TRUE
225
* because ACPICA is fully compatible with other ACPI implementations.
226
* Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior.
228
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CreateOsiMethod, TRUE);
231
* Optionally use default values for the ACPI register widths. Set this to
232
* TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
234
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_UseDefaultRegisterWidths, TRUE);
237
* Optionally enable output from the AML Debug Object.
239
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableAmlDebugObject, FALSE);
242
* Optionally copy the entire DSDT to local memory (instead of simply
243
* mapping it.) There are some BIOSs that corrupt or replace the original
244
* DSDT, creating the need for this option. Default is FALSE, do not copy
247
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE);
250
* Optionally ignore an XSDT if present and use the RSDT instead.
251
* Although the ACPI specification requires that an XSDT be used instead
252
* of the RSDT, the XSDT has been found to be corrupt or ill-formed on
253
* some machines. Default behavior is to use the XSDT if present.
255
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE);
258
* Optionally use 32-bit FADT addresses if and when there is a conflict
259
* (address mismatch) between the 32-bit and 64-bit versions of the
260
* address. Although ACPICA adheres to the ACPI specification which
261
* requires the use of the corresponding 64-bit address if it is non-zero,
262
* some machines have been found to have a corrupted non-zero 64-bit
263
* address. Default is FALSE, do not favor the 32-bit addresses.
265
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFadtAddresses, FALSE);
268
* Optionally truncate I/O addresses to 16 bits. Provides compatibility
269
* with other ACPI implementations. NOTE: During ACPICA initialization,
270
* this value is set to TRUE if any Windows OSI strings have been
271
* requested by the BIOS.
273
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_TruncateIoAddresses, FALSE);
276
* Disable runtime checking and repair of values returned by control methods.
277
* Use only if the repair is causing a problem on a particular machine.
279
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableAutoRepair, FALSE);
282
* Optionally do not install any SSDTs from the RSDT/XSDT during initialization.
283
* This can be useful for debugging ACPI problems on some machines.
285
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableSsdtTableInstall, FALSE);
288
* We keep track of the latest version of Windows that has been requested by
289
* the BIOS. ACPI 5.0.
291
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OsiData, 0);
294
* ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
295
* that the ACPI hardware is no longer required. A flag in the FADT indicates
296
* a reduced HW machine, and that flag is duplicated here for convenience.
298
ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ReducedHardware, FALSE);
301
* This mechanism is used to trace a specified AML method. The method is
302
* traced each time it is executed.
304
ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceFlags, 0);
305
ACPI_INIT_GLOBAL (ACPI_NAME, AcpiGbl_TraceMethodName, 0);
308
* Runtime configuration of debug output control masks. We want the debug
309
* switches statically initialized so they are already set when the debugger
312
#ifdef ACPI_DEBUG_OUTPUT
313
ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_DEBUG_DEFAULT);
315
ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_NORMAL_DEFAULT);
317
ACPI_INIT_GLOBAL (UINT32, AcpiDbgLayer, ACPI_COMPONENT_DEFAULT);
320
* Other miscellaneous globals
322
ACPI_GLOBAL (ACPI_TABLE_FADT, AcpiGbl_FADT);
323
ACPI_GLOBAL (UINT32, AcpiCurrentGpeCount);
324
ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning);
327
/*****************************************************************************
329
* ACPICA public interface configuration.
331
* Interfaces that are configured out of the ACPICA build are replaced
332
* by inlined stubs by default.
334
****************************************************************************/
337
* Hardware-reduced prototypes (default: Not hardware reduced).
339
* All ACPICA hardware-related interfaces that use these macros will be
340
* configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
163
341
* is set to TRUE.
343
* Note: This static build option for reduced hardware is intended to
344
* reduce ACPICA code size if desired or necessary. However, even if this
345
* option is not specified, the runtime behavior of ACPICA is dependent
346
* on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set,
347
* the flag will enable similar behavior -- ACPICA will not attempt
348
* to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.)
165
350
#if (!ACPI_REDUCED_HARDWARE)
166
351
#define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
352
ACPI_EXTERNAL_RETURN_STATUS(Prototype)
169
354
#define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
355
ACPI_EXTERNAL_RETURN_OK(Prototype)
172
357
#define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
358
ACPI_EXTERNAL_RETURN_VOID(Prototype)
176
361
#define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
459
ACPI_EXTERNAL_RETURN_STATUS (
228
461
AcpiSubsystemStatus (
464
ACPI_EXTERNAL_RETURN_STATUS (
232
466
AcpiGetSystemInfo (
233
ACPI_BUFFER *RetBuffer);
467
ACPI_BUFFER *RetBuffer))
469
ACPI_EXTERNAL_RETURN_STATUS (
236
471
AcpiGetStatistics (
237
ACPI_STATISTICS *Stats);
472
ACPI_STATISTICS *Stats))
474
ACPI_EXTERNAL_RETURN_PTR (
240
476
AcpiFormatException (
241
ACPI_STATUS Exception);
477
ACPI_STATUS Exception))
479
ACPI_EXTERNAL_RETURN_STATUS (
244
481
AcpiPurgeCachedObjects (
484
ACPI_EXTERNAL_RETURN_STATUS (
248
486
AcpiInstallInterface (
249
ACPI_STRING InterfaceName);
487
ACPI_STRING InterfaceName))
489
ACPI_EXTERNAL_RETURN_STATUS (
252
491
AcpiRemoveInterface (
253
ACPI_STRING InterfaceName);
492
ACPI_STRING InterfaceName))
494
ACPI_EXTERNAL_RETURN_STATUS (
256
496
AcpiUpdateInterfaces (
499
ACPI_EXTERNAL_RETURN_UINT32 (
260
501
AcpiCheckAddressRange (
261
502
ACPI_ADR_SPACE_TYPE SpaceId,
262
503
ACPI_PHYSICAL_ADDRESS Address,
263
504
ACPI_SIZE Length,
507
ACPI_EXTERNAL_RETURN_STATUS (
267
509
AcpiDecodePldBuffer (
269
511
ACPI_SIZE Length,
270
ACPI_PLD_INFO **ReturnBuffer);
512
ACPI_PLD_INFO **ReturnBuffer))
274
516
* ACPI table load/unload interfaces
518
ACPI_EXTERNAL_RETURN_STATUS (
277
520
AcpiInstallTable (
278
521
ACPI_PHYSICAL_ADDRESS Address,
524
ACPI_EXTERNAL_RETURN_STATUS (
283
ACPI_TABLE_HEADER *Table);
527
ACPI_TABLE_HEADER *Table))
529
ACPI_EXTERNAL_RETURN_STATUS (
286
531
AcpiUnloadParentTable (
534
ACPI_EXTERNAL_RETURN_STATUS (
295
541
* ACPI table manipulation interfaces
543
ACPI_EXTERNAL_RETURN_STATUS (
298
545
AcpiReallocateRootTable (
548
ACPI_EXTERNAL_RETURN_STATUS (
302
550
AcpiFindRootPointer (
303
ACPI_SIZE *RsdpAddress);
551
ACPI_SIZE *RsdpAddress))
553
ACPI_EXTERNAL_RETURN_STATUS (
306
555
AcpiGetTableHeader (
307
556
ACPI_STRING Signature,
309
ACPI_TABLE_HEADER *OutTableHeader);
558
ACPI_TABLE_HEADER *OutTableHeader))
560
ACPI_EXTERNAL_RETURN_STATUS (
313
563
ACPI_STRING Signature,
315
ACPI_TABLE_HEADER **OutTable);
565
ACPI_TABLE_HEADER **OutTable))
567
ACPI_EXTERNAL_RETURN_STATUS (
318
569
AcpiGetTableByIndex (
319
570
UINT32 TableIndex,
320
ACPI_TABLE_HEADER **OutTable);
571
ACPI_TABLE_HEADER **OutTable))
573
ACPI_EXTERNAL_RETURN_STATUS (
323
575
AcpiInstallTableHandler (
324
576
ACPI_TABLE_HANDLER Handler,
579
ACPI_EXTERNAL_RETURN_STATUS (
328
581
AcpiRemoveTableHandler (
329
ACPI_TABLE_HANDLER Handler);
582
ACPI_TABLE_HANDLER Handler))
333
586
* Namespace and name interfaces
588
ACPI_EXTERNAL_RETURN_STATUS (
336
590
AcpiWalkNamespace (
337
591
ACPI_OBJECT_TYPE Type,
340
594
ACPI_WALK_CALLBACK DescendingCallback,
341
595
ACPI_WALK_CALLBACK AscendingCallback,
599
ACPI_EXTERNAL_RETURN_STATUS (
348
603
ACPI_WALK_CALLBACK UserFunction,
607
ACPI_EXTERNAL_RETURN_STATUS (
354
610
ACPI_HANDLE Object,
356
ACPI_BUFFER *RetPathPtr);
612
ACPI_BUFFER *RetPathPtr))
614
ACPI_EXTERNAL_RETURN_STATUS (
360
617
ACPI_HANDLE Parent,
361
618
ACPI_STRING Pathname,
362
ACPI_HANDLE *RetHandle);
619
ACPI_HANDLE *RetHandle))
621
ACPI_EXTERNAL_RETURN_STATUS (
366
624
ACPI_HANDLE Object,
367
625
ACPI_OBJECT_HANDLER Handler,
628
ACPI_EXTERNAL_RETURN_STATUS (
372
631
ACPI_HANDLE Object,
373
ACPI_OBJECT_HANDLER Handler);
632
ACPI_OBJECT_HANDLER Handler))
634
ACPI_EXTERNAL_RETURN_STATUS (
377
637
ACPI_HANDLE Object,
378
638
ACPI_OBJECT_HANDLER Handler,
641
ACPI_EXTERNAL_RETURN_STATUS (
384
645
UINT32 DebugLevel,
385
646
UINT32 DebugLayer,
390
651
* Object manipulation and enumeration
653
ACPI_EXTERNAL_RETURN_STATUS (
393
655
AcpiEvaluateObject (
394
656
ACPI_HANDLE Object,
395
657
ACPI_STRING Pathname,
396
658
ACPI_OBJECT_LIST *ParameterObjects,
397
ACPI_BUFFER *ReturnObjectBuffer);
659
ACPI_BUFFER *ReturnObjectBuffer))
661
ACPI_EXTERNAL_RETURN_STATUS (
400
663
AcpiEvaluateObjectTyped (
401
664
ACPI_HANDLE Object,
402
665
ACPI_STRING Pathname,
403
666
ACPI_OBJECT_LIST *ExternalParams,
404
667
ACPI_BUFFER *ReturnBuffer,
405
ACPI_OBJECT_TYPE ReturnType);
668
ACPI_OBJECT_TYPE ReturnType))
670
ACPI_EXTERNAL_RETURN_STATUS (
408
672
AcpiGetObjectInfo (
409
673
ACPI_HANDLE Object,
410
ACPI_DEVICE_INFO **ReturnBuffer);
674
ACPI_DEVICE_INFO **ReturnBuffer))
676
ACPI_EXTERNAL_RETURN_STATUS (
413
678
AcpiInstallMethod (
681
ACPI_EXTERNAL_RETURN_STATUS (
417
683
AcpiGetNextObject (
418
684
ACPI_OBJECT_TYPE Type,
419
685
ACPI_HANDLE Parent,
420
686
ACPI_HANDLE Child,
421
ACPI_HANDLE *OutHandle);
687
ACPI_HANDLE *OutHandle))
689
ACPI_EXTERNAL_RETURN_STATUS (
425
692
ACPI_HANDLE Object,
426
ACPI_OBJECT_TYPE *OutType);
693
ACPI_OBJECT_TYPE *OutType))
695
ACPI_EXTERNAL_RETURN_STATUS (
430
698
ACPI_HANDLE Object,
431
ACPI_HANDLE *OutHandle);
699
ACPI_HANDLE *OutHandle))
435
703
* Handler interfaces
705
ACPI_EXTERNAL_RETURN_STATUS (
438
707
AcpiInstallInitializationHandler (
439
708
ACPI_INIT_HANDLER Handler,
442
711
ACPI_HW_DEPENDENT_RETURN_STATUS (