Sync with trunk r58687.
[reactos.git] / drivers / bus / acpi / acpica / include / acpixf.h
1
2 /******************************************************************************
3 *
4 * Name: acpixf.h - External interfaces to the ACPI subsystem
5 *
6 *****************************************************************************/
7
8 /******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
13 * All rights reserved.
14 *
15 * 2. License
16 *
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.
21 *
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26 * make derivatives, distribute, use and display any portion of the Covered
27 * Code in any form, with the right to sublicense such rights; and
28 *
29 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30 * license (with the right to sublicense), under only those claims of Intel
31 * patents that are infringed by the Original Intel Code, to make, use, sell,
32 * offer to sell, and import the Covered Code and derivative works thereof
33 * solely to the minimum extent necessary to exercise the above copyright
34 * license, and in no event shall the patent license extend to any additions
35 * to or modifications of the Original Intel Code. No other license or right
36 * is granted directly or by implication, estoppel or otherwise;
37 *
38 * The above copyright and patent license is granted only if the following
39 * conditions are met:
40 *
41 * 3. Conditions
42 *
43 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44 * Redistribution of source code of any substantial portion of the Covered
45 * Code or modification with rights to further distribute source must include
46 * the above Copyright Notice, the above License, this list of Conditions,
47 * and the following Disclaimer and Export Compliance provision. In addition,
48 * Licensee must cause all Covered Code to which Licensee contributes to
49 * contain a file documenting the changes Licensee made to create that Covered
50 * Code and the date of any change. Licensee must include in that file the
51 * documentation of any changes made by any predecessor Licensee. Licensee
52 * must include a prominent statement that the modification is derived,
53 * directly or indirectly, from Original Intel Code.
54 *
55 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56 * Redistribution of source code of any substantial portion of the Covered
57 * Code or modification without rights to further distribute source must
58 * include the following Disclaimer and Export Compliance provision in the
59 * documentation and/or other materials provided with distribution. In
60 * addition, Licensee may not authorize further sublicense of source of any
61 * portion of the Covered Code, and must include terms to the effect that the
62 * license from Licensee to its licensee is limited to the intellectual
63 * property embodied in the software Licensee provides to its licensee, and
64 * not to intellectual property embodied in modifications its licensee may
65 * make.
66 *
67 * 3.3. Redistribution of Executable. Redistribution in executable form of any
68 * substantial portion of the Covered Code or modification must reproduce the
69 * above Copyright Notice, and the following Disclaimer and Export Compliance
70 * provision in the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3.4. Intel retains all right, title, and interest in and to the Original
74 * Intel Code.
75 *
76 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77 * Intel shall be used in advertising or otherwise to promote the sale, use or
78 * other dealings in products derived from or relating to the Covered Code
79 * without prior written authorization from Intel.
80 *
81 * 4. Disclaimer and Export Compliance
82 *
83 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
86 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
87 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
88 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89 * PARTICULAR PURPOSE.
90 *
91 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
97 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98 * LIMITED REMEDY.
99 *
100 * 4.3. Licensee shall not export, either directly or indirectly, any of this
101 * software or system incorporating such software without first obtaining any
102 * required license or other approval from the U. S. Department of Commerce or
103 * any other agency or department of the United States Government. In the
104 * event Licensee exports any such software from the United States or
105 * re-exports any such software from a foreign destination, Licensee shall
106 * ensure that the distribution and export/re-export of the software is in
107 * compliance with all laws, regulations, orders, or other restrictions of the
108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109 * any of its subsidiaries will export/re-export any technical data, process,
110 * software, or service, directly or indirectly, to any country for which the
111 * United States government or any agency thereof requires an export license,
112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
114 *
115 *****************************************************************************/
116
117
118 #ifndef __ACXFACE_H__
119 #define __ACXFACE_H__
120
121 /* Current ACPICA subsystem version in YYYYMMDD format */
122
123 #define ACPI_CA_VERSION 0x20110922
124
125 #include "actypes.h"
126 #include "actbl.h"
127
128 /*
129 * Globals that are publically available
130 */
131 extern UINT32 AcpiCurrentGpeCount;
132 extern ACPI_TABLE_FADT AcpiGbl_FADT;
133 extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
134
135 /* Runtime configuration of debug print levels */
136
137 extern UINT32 AcpiDbgLevel;
138 extern UINT32 AcpiDbgLayer;
139
140 /* ACPICA runtime options */
141
142 extern UINT8 AcpiGbl_EnableInterpreterSlack;
143 extern UINT8 AcpiGbl_AllMethodsSerialized;
144 extern UINT8 AcpiGbl_CreateOsiMethod;
145 extern UINT8 AcpiGbl_UseDefaultRegisterWidths;
146 extern ACPI_NAME AcpiGbl_TraceMethodName;
147 extern UINT32 AcpiGbl_TraceFlags;
148 extern UINT8 AcpiGbl_EnableAmlDebugObject;
149 extern UINT8 AcpiGbl_CopyDsdtLocally;
150 extern UINT8 AcpiGbl_TruncateIoAddresses;
151 extern UINT8 AcpiGbl_DisableAutoRepair;
152
153
154 /*
155 * Initialization
156 */
157 ACPI_STATUS
158 AcpiInitializeTables (
159 ACPI_TABLE_DESC *InitialStorage,
160 UINT32 InitialTableCount,
161 BOOLEAN AllowResize);
162
163 ACPI_STATUS
164 AcpiInitializeSubsystem (
165 void);
166
167 ACPI_STATUS
168 AcpiEnableSubsystem (
169 UINT32 Flags);
170
171 ACPI_STATUS
172 AcpiInitializeObjects (
173 UINT32 Flags);
174
175 ACPI_STATUS
176 AcpiTerminate (
177 void);
178
179
180 /*
181 * Miscellaneous global interfaces
182 */
183 ACPI_STATUS
184 AcpiEnable (
185 void);
186
187 ACPI_STATUS
188 AcpiDisable (
189 void);
190
191 ACPI_STATUS
192 AcpiSubsystemStatus (
193 void);
194
195 ACPI_STATUS
196 AcpiGetSystemInfo (
197 ACPI_BUFFER *RetBuffer);
198
199 ACPI_STATUS
200 AcpiGetStatistics (
201 ACPI_STATISTICS *Stats);
202
203 const char *
204 AcpiFormatException (
205 ACPI_STATUS Exception);
206
207 ACPI_STATUS
208 AcpiPurgeCachedObjects (
209 void);
210
211 ACPI_STATUS
212 AcpiInstallInterface (
213 ACPI_STRING InterfaceName);
214
215 ACPI_STATUS
216 AcpiRemoveInterface (
217 ACPI_STRING InterfaceName);
218
219
220 /*
221 * ACPI Memory management
222 */
223 void *
224 AcpiAllocate (
225 UINT32 Size);
226
227 void *
228 AcpiCallocate (
229 UINT32 Size);
230
231 void
232 AcpiFree (
233 void *Address);
234
235
236 /*
237 * ACPI table manipulation interfaces
238 */
239 ACPI_STATUS
240 AcpiReallocateRootTable (
241 void);
242
243 ACPI_STATUS
244 AcpiFindRootPointer (
245 ACPI_SIZE *RsdpAddress);
246
247 ACPI_STATUS
248 AcpiLoadTables (
249 void);
250
251 ACPI_STATUS
252 AcpiGetTableHeader (
253 ACPI_STRING Signature,
254 UINT32 Instance,
255 ACPI_TABLE_HEADER *OutTableHeader);
256
257 ACPI_STATUS
258 AcpiGetTable (
259 ACPI_STRING Signature,
260 UINT32 Instance,
261 ACPI_TABLE_HEADER **OutTable);
262
263 ACPI_STATUS
264 AcpiGetTableByIndex (
265 UINT32 TableIndex,
266 ACPI_TABLE_HEADER **OutTable);
267
268 ACPI_STATUS
269 AcpiInstallTableHandler (
270 ACPI_TABLE_HANDLER Handler,
271 void *Context);
272
273 ACPI_STATUS
274 AcpiRemoveTableHandler (
275 ACPI_TABLE_HANDLER Handler);
276
277
278 /*
279 * Namespace and name interfaces
280 */
281 ACPI_STATUS
282 AcpiWalkNamespace (
283 ACPI_OBJECT_TYPE Type,
284 ACPI_HANDLE StartObject,
285 UINT32 MaxDepth,
286 ACPI_WALK_CALLBACK PreOrderVisit,
287 ACPI_WALK_CALLBACK PostOrderVisit,
288 void *Context,
289 void **ReturnValue);
290
291 ACPI_STATUS
292 AcpiGetDevices (
293 char *HID,
294 ACPI_WALK_CALLBACK UserFunction,
295 void *Context,
296 void **ReturnValue);
297
298 ACPI_STATUS
299 AcpiGetName (
300 ACPI_HANDLE Object,
301 UINT32 NameType,
302 ACPI_BUFFER *RetPathPtr);
303
304 ACPI_STATUS
305 AcpiGetHandle (
306 ACPI_HANDLE Parent,
307 ACPI_STRING Pathname,
308 ACPI_HANDLE *RetHandle);
309
310 ACPI_STATUS
311 AcpiAttachData (
312 ACPI_HANDLE Object,
313 ACPI_OBJECT_HANDLER Handler,
314 void *Data);
315
316 ACPI_STATUS
317 AcpiDetachData (
318 ACPI_HANDLE Object,
319 ACPI_OBJECT_HANDLER Handler);
320
321 ACPI_STATUS
322 AcpiGetData (
323 ACPI_HANDLE Object,
324 ACPI_OBJECT_HANDLER Handler,
325 void **Data);
326
327 ACPI_STATUS
328 AcpiDebugTrace (
329 char *Name,
330 UINT32 DebugLevel,
331 UINT32 DebugLayer,
332 UINT32 Flags);
333
334
335 /*
336 * Object manipulation and enumeration
337 */
338 ACPI_STATUS
339 AcpiEvaluateObject (
340 ACPI_HANDLE Object,
341 ACPI_STRING Pathname,
342 ACPI_OBJECT_LIST *ParameterObjects,
343 ACPI_BUFFER *ReturnObjectBuffer);
344
345 ACPI_STATUS
346 AcpiEvaluateObjectTyped (
347 ACPI_HANDLE Object,
348 ACPI_STRING Pathname,
349 ACPI_OBJECT_LIST *ExternalParams,
350 ACPI_BUFFER *ReturnBuffer,
351 ACPI_OBJECT_TYPE ReturnType);
352
353 ACPI_STATUS
354 AcpiGetObjectInfo (
355 ACPI_HANDLE Object,
356 ACPI_DEVICE_INFO **ReturnBuffer);
357
358 ACPI_STATUS
359 AcpiInstallMethod (
360 UINT8 *Buffer);
361
362 ACPI_STATUS
363 AcpiGetNextObject (
364 ACPI_OBJECT_TYPE Type,
365 ACPI_HANDLE Parent,
366 ACPI_HANDLE Child,
367 ACPI_HANDLE *OutHandle);
368
369 ACPI_STATUS
370 AcpiGetType (
371 ACPI_HANDLE Object,
372 ACPI_OBJECT_TYPE *OutType);
373
374 ACPI_STATUS
375 AcpiGetParent (
376 ACPI_HANDLE Object,
377 ACPI_HANDLE *OutHandle);
378
379
380 /*
381 * Handler interfaces
382 */
383 ACPI_STATUS
384 AcpiInstallInitializationHandler (
385 ACPI_INIT_HANDLER Handler,
386 UINT32 Function);
387
388 ACPI_STATUS
389 AcpiInstallGlobalEventHandler (
390 ACPI_GBL_EVENT_HANDLER Handler,
391 void *Context);
392
393 ACPI_STATUS
394 AcpiInstallFixedEventHandler (
395 UINT32 AcpiEvent,
396 ACPI_EVENT_HANDLER Handler,
397 void *Context);
398
399 ACPI_STATUS
400 AcpiRemoveFixedEventHandler (
401 UINT32 AcpiEvent,
402 ACPI_EVENT_HANDLER Handler);
403
404 ACPI_STATUS
405 AcpiInstallGpeHandler (
406 ACPI_HANDLE GpeDevice,
407 UINT32 GpeNumber,
408 UINT32 Type,
409 ACPI_GPE_HANDLER Address,
410 void *Context);
411
412 ACPI_STATUS
413 AcpiRemoveGpeHandler (
414 ACPI_HANDLE GpeDevice,
415 UINT32 GpeNumber,
416 ACPI_GPE_HANDLER Address);
417
418 ACPI_STATUS
419 AcpiInstallNotifyHandler (
420 ACPI_HANDLE Device,
421 UINT32 HandlerType,
422 ACPI_NOTIFY_HANDLER Handler,
423 void *Context);
424
425 ACPI_STATUS
426 AcpiRemoveNotifyHandler (
427 ACPI_HANDLE Device,
428 UINT32 HandlerType,
429 ACPI_NOTIFY_HANDLER Handler);
430
431 ACPI_STATUS
432 AcpiInstallAddressSpaceHandler (
433 ACPI_HANDLE Device,
434 ACPI_ADR_SPACE_TYPE SpaceId,
435 ACPI_ADR_SPACE_HANDLER Handler,
436 ACPI_ADR_SPACE_SETUP Setup,
437 void *Context);
438
439 ACPI_STATUS
440 AcpiRemoveAddressSpaceHandler (
441 ACPI_HANDLE Device,
442 ACPI_ADR_SPACE_TYPE SpaceId,
443 ACPI_ADR_SPACE_HANDLER Handler);
444
445 ACPI_STATUS
446 AcpiInstallExceptionHandler (
447 ACPI_EXCEPTION_HANDLER Handler);
448
449 ACPI_STATUS
450 AcpiInstallInterfaceHandler (
451 ACPI_INTERFACE_HANDLER Handler);
452
453
454 /*
455 * Global Lock interfaces
456 */
457 ACPI_STATUS
458 AcpiAcquireGlobalLock (
459 UINT16 Timeout,
460 UINT32 *Handle);
461
462 ACPI_STATUS
463 AcpiReleaseGlobalLock (
464 UINT32 Handle);
465
466
467 /*
468 * Fixed Event interfaces
469 */
470 ACPI_STATUS
471 AcpiEnableEvent (
472 UINT32 Event,
473 UINT32 Flags);
474
475 ACPI_STATUS
476 AcpiDisableEvent (
477 UINT32 Event,
478 UINT32 Flags);
479
480 ACPI_STATUS
481 AcpiClearEvent (
482 UINT32 Event);
483
484 ACPI_STATUS
485 AcpiGetEventStatus (
486 UINT32 Event,
487 ACPI_EVENT_STATUS *EventStatus);
488
489
490 /*
491 * General Purpose Event (GPE) Interfaces
492 */
493 ACPI_STATUS
494 AcpiUpdateAllGpes (
495 void);
496
497 ACPI_STATUS
498 AcpiEnableGpe (
499 ACPI_HANDLE GpeDevice,
500 UINT32 GpeNumber);
501
502 ACPI_STATUS
503 AcpiDisableGpe (
504 ACPI_HANDLE GpeDevice,
505 UINT32 GpeNumber);
506
507 ACPI_STATUS
508 AcpiClearGpe (
509 ACPI_HANDLE GpeDevice,
510 UINT32 GpeNumber);
511
512 ACPI_STATUS
513 AcpiSetGpe (
514 ACPI_HANDLE GpeDevice,
515 UINT32 GpeNumber,
516 UINT8 Action);
517
518 ACPI_STATUS
519 AcpiFinishGpe (
520 ACPI_HANDLE GpeDevice,
521 UINT32 GpeNumber);
522
523 ACPI_STATUS
524 AcpiSetupGpeForWake (
525 ACPI_HANDLE ParentDevice,
526 ACPI_HANDLE GpeDevice,
527 UINT32 GpeNumber);
528
529 ACPI_STATUS
530 AcpiSetGpeWakeMask (
531 ACPI_HANDLE GpeDevice,
532 UINT32 GpeNumber,
533 UINT8 Action);
534
535 ACPI_STATUS
536 AcpiGetGpeStatus (
537 ACPI_HANDLE GpeDevice,
538 UINT32 GpeNumber,
539 ACPI_EVENT_STATUS *EventStatus);
540
541 ACPI_STATUS
542 AcpiDisableAllGpes (
543 void);
544
545 ACPI_STATUS
546 AcpiEnableAllRuntimeGpes (
547 void);
548
549 ACPI_STATUS
550 AcpiGetGpeDevice (
551 UINT32 GpeIndex,
552 ACPI_HANDLE *GpeDevice);
553
554 ACPI_STATUS
555 AcpiInstallGpeBlock (
556 ACPI_HANDLE GpeDevice,
557 ACPI_GENERIC_ADDRESS *GpeBlockAddress,
558 UINT32 RegisterCount,
559 UINT32 InterruptNumber);
560
561 ACPI_STATUS
562 AcpiRemoveGpeBlock (
563 ACPI_HANDLE GpeDevice);
564
565
566 /*
567 * Resource interfaces
568 */
569 typedef
570 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
571 ACPI_RESOURCE *Resource,
572 void *Context);
573
574 ACPI_STATUS
575 AcpiGetVendorResource (
576 ACPI_HANDLE Device,
577 char *Name,
578 ACPI_VENDOR_UUID *Uuid,
579 ACPI_BUFFER *RetBuffer);
580
581 ACPI_STATUS
582 AcpiGetCurrentResources (
583 ACPI_HANDLE Device,
584 ACPI_BUFFER *RetBuffer);
585
586 ACPI_STATUS
587 AcpiGetPossibleResources (
588 ACPI_HANDLE Device,
589 ACPI_BUFFER *RetBuffer);
590
591 ACPI_STATUS
592 AcpiWalkResources (
593 ACPI_HANDLE Device,
594 char *Name,
595 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
596 void *Context);
597
598 ACPI_STATUS
599 AcpiSetCurrentResources (
600 ACPI_HANDLE Device,
601 ACPI_BUFFER *InBuffer);
602
603 ACPI_STATUS
604 AcpiGetIrqRoutingTable (
605 ACPI_HANDLE Device,
606 ACPI_BUFFER *RetBuffer);
607
608 ACPI_STATUS
609 AcpiResourceToAddress64 (
610 ACPI_RESOURCE *Resource,
611 ACPI_RESOURCE_ADDRESS64 *Out);
612
613
614 /*
615 * Hardware (ACPI device) interfaces
616 */
617 ACPI_STATUS
618 AcpiReset (
619 void);
620
621 ACPI_STATUS
622 AcpiRead (
623 UINT64 *Value,
624 ACPI_GENERIC_ADDRESS *Reg);
625
626 ACPI_STATUS
627 AcpiWrite (
628 UINT64 Value,
629 ACPI_GENERIC_ADDRESS *Reg);
630
631 ACPI_STATUS
632 AcpiReadBitRegister (
633 UINT32 RegisterId,
634 UINT32 *ReturnValue);
635
636 ACPI_STATUS
637 AcpiWriteBitRegister (
638 UINT32 RegisterId,
639 UINT32 Value);
640
641 ACPI_STATUS
642 AcpiGetSleepTypeData (
643 UINT8 SleepState,
644 UINT8 *Slp_TypA,
645 UINT8 *Slp_TypB);
646
647 ACPI_STATUS
648 AcpiEnterSleepStatePrep (
649 UINT8 SleepState);
650
651 ACPI_STATUS
652 AcpiEnterSleepState (
653 UINT8 SleepState);
654
655 ACPI_STATUS
656 AcpiEnterSleepStateS4bios (
657 void);
658
659 ACPI_STATUS
660 AcpiLeaveSleepState (
661 UINT8 SleepState)
662 ;
663 ACPI_STATUS
664 AcpiSetFirmwareWakingVector (
665 UINT32 PhysicalAddress);
666
667 #if ACPI_MACHINE_WIDTH == 64
668 ACPI_STATUS
669 AcpiSetFirmwareWakingVector64 (
670 UINT64 PhysicalAddress);
671 #endif
672
673
674 /*
675 * Error/Warning output
676 */
677 void ACPI_INTERNAL_VAR_XFACE
678 AcpiError (
679 const char *ModuleName,
680 UINT32 LineNumber,
681 const char *Format,
682 ...) ACPI_PRINTF_LIKE(3);
683
684 void ACPI_INTERNAL_VAR_XFACE
685 AcpiException (
686 const char *ModuleName,
687 UINT32 LineNumber,
688 ACPI_STATUS Status,
689 const char *Format,
690 ...) ACPI_PRINTF_LIKE(4);
691
692 void ACPI_INTERNAL_VAR_XFACE
693 AcpiWarning (
694 const char *ModuleName,
695 UINT32 LineNumber,
696 const char *Format,
697 ...) ACPI_PRINTF_LIKE(3);
698
699 void ACPI_INTERNAL_VAR_XFACE
700 AcpiInfo (
701 const char *ModuleName,
702 UINT32 LineNumber,
703 const char *Format,
704 ...) ACPI_PRINTF_LIKE(3);
705
706
707 /*
708 * Debug output
709 */
710 #ifdef ACPI_DEBUG_OUTPUT
711
712 void ACPI_INTERNAL_VAR_XFACE
713 AcpiDebugPrint (
714 UINT32 RequestedDebugLevel,
715 UINT32 LineNumber,
716 const char *FunctionName,
717 const char *ModuleName,
718 UINT32 ComponentId,
719 const char *Format,
720 ...) ACPI_PRINTF_LIKE(6);
721
722 void ACPI_INTERNAL_VAR_XFACE
723 AcpiDebugPrintRaw (
724 UINT32 RequestedDebugLevel,
725 UINT32 LineNumber,
726 const char *FunctionName,
727 const char *ModuleName,
728 UINT32 ComponentId,
729 const char *Format,
730 ...) ACPI_PRINTF_LIKE(6);
731 #endif
732
733 #endif /* __ACXFACE_H__ */