xref: /netbsd-src/sys/external/bsd/acpica/dist/include/acpixf.h (revision ca453df649ce9db45b64d73678ba06cbccf9aa11)
1 
2 /******************************************************************************
3  *
4  * Name: acpixf.h - External interfaces to the ACPI subsystem
5  *
6  *****************************************************************************/
7 
8 /*
9  * Copyright (C) 2000 - 2011, 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 
46 #ifndef __ACXFACE_H__
47 #define __ACXFACE_H__
48 
49 /* Current ACPICA subsystem version in YYYYMMDD format */
50 
51 #define ACPI_CA_VERSION                 0x20110623
52 
53 #include "actypes.h"
54 #include "actbl.h"
55 
56 /*
57  * Globals that are publically available
58  */
59 extern UINT32               AcpiCurrentGpeCount;
60 extern ACPI_TABLE_FADT      AcpiGbl_FADT;
61 extern BOOLEAN              AcpiGbl_SystemAwakeAndRunning;
62 
63 /* Runtime configuration of debug print levels */
64 
65 extern UINT32               AcpiDbgLevel;
66 extern UINT32               AcpiDbgLayer;
67 
68 /* ACPICA runtime options */
69 
70 extern UINT8                AcpiGbl_EnableInterpreterSlack;
71 extern UINT8                AcpiGbl_AllMethodsSerialized;
72 extern UINT8                AcpiGbl_CreateOsiMethod;
73 extern UINT8                AcpiGbl_UseDefaultRegisterWidths;
74 extern ACPI_NAME            AcpiGbl_TraceMethodName;
75 extern UINT32               AcpiGbl_TraceFlags;
76 extern UINT8                AcpiGbl_EnableAmlDebugObject;
77 extern UINT8                AcpiGbl_CopyDsdtLocally;
78 extern UINT8                AcpiGbl_TruncateIoAddresses;
79 extern UINT8                AcpiGbl_DisableAutoRepair;
80 
81 
82 /*
83  * Initialization
84  */
85 ACPI_STATUS
86 AcpiInitializeTables (
87     ACPI_TABLE_DESC         *InitialStorage,
88     UINT32                  InitialTableCount,
89     BOOLEAN                 AllowResize);
90 
91 ACPI_STATUS
92 AcpiInitializeSubsystem (
93     void);
94 
95 ACPI_STATUS
96 AcpiEnableSubsystem (
97     UINT32                  Flags);
98 
99 ACPI_STATUS
100 AcpiInitializeObjects (
101     UINT32                  Flags);
102 
103 ACPI_STATUS
104 AcpiTerminate (
105     void);
106 
107 
108 /*
109  * Miscellaneous global interfaces
110  */
111 ACPI_STATUS
112 AcpiEnable (
113     void);
114 
115 ACPI_STATUS
116 AcpiDisable (
117     void);
118 
119 ACPI_STATUS
120 AcpiSubsystemStatus (
121     void);
122 
123 ACPI_STATUS
124 AcpiGetSystemInfo (
125     ACPI_BUFFER             *RetBuffer);
126 
127 ACPI_STATUS
128 AcpiGetStatistics (
129     ACPI_STATISTICS         *Stats);
130 
131 const char *
132 AcpiFormatException (
133     ACPI_STATUS             Exception);
134 
135 ACPI_STATUS
136 AcpiPurgeCachedObjects (
137     void);
138 
139 ACPI_STATUS
140 AcpiInstallInterface (
141     ACPI_STRING             InterfaceName);
142 
143 ACPI_STATUS
144 AcpiRemoveInterface (
145     ACPI_STRING             InterfaceName);
146 
147 
148 /*
149  * ACPI Memory management
150  */
151 void *
152 AcpiAllocate (
153     UINT32                  Size);
154 
155 void *
156 AcpiCallocate (
157     UINT32                  Size);
158 
159 void
160 AcpiFree (
161     void                    *Address);
162 
163 
164 /*
165  * ACPI table manipulation interfaces
166  */
167 ACPI_STATUS
168 AcpiReallocateRootTable (
169     void);
170 
171 ACPI_STATUS
172 AcpiFindRootPointer (
173     ACPI_SIZE               *RsdpAddress);
174 
175 ACPI_STATUS
176 AcpiLoadTables (
177     void);
178 
179 ACPI_STATUS
180 AcpiGetTableHeader (
181     ACPI_CONST_STRING       Signature,
182     UINT32                  Instance,
183     ACPI_TABLE_HEADER       *OutTableHeader);
184 
185 ACPI_STATUS
186 AcpiGetTable (
187     ACPI_CONST_STRING       Signature,
188     UINT32                  Instance,
189     ACPI_TABLE_HEADER       **OutTable);
190 
191 ACPI_STATUS
192 AcpiGetTableByIndex (
193     UINT32                  TableIndex,
194     ACPI_TABLE_HEADER       **OutTable);
195 
196 ACPI_STATUS
197 AcpiInstallTableHandler (
198     ACPI_TABLE_HANDLER      Handler,
199     void                    *Context);
200 
201 ACPI_STATUS
202 AcpiRemoveTableHandler (
203     ACPI_TABLE_HANDLER      Handler);
204 
205 
206 /*
207  * Namespace and name interfaces
208  */
209 ACPI_STATUS
210 AcpiWalkNamespace (
211     ACPI_OBJECT_TYPE        Type,
212     ACPI_HANDLE             StartObject,
213     UINT32                  MaxDepth,
214     ACPI_WALK_CALLBACK      PreOrderVisit,
215     ACPI_WALK_CALLBACK      PostOrderVisit,
216     void                    *Context,
217     void                    **ReturnValue);
218 
219 ACPI_STATUS
220 AcpiGetDevices (
221     char                    *HID,
222     ACPI_WALK_CALLBACK      UserFunction,
223     void                    *Context,
224     void                    **ReturnValue);
225 
226 ACPI_STATUS
227 AcpiGetName (
228     ACPI_HANDLE             Object,
229     UINT32                  NameType,
230     ACPI_BUFFER             *RetPathPtr);
231 
232 ACPI_STATUS
233 AcpiGetHandle (
234     ACPI_HANDLE             Parent,
235     ACPI_CONST_STRING       Pathname,
236     ACPI_HANDLE             *RetHandle);
237 
238 ACPI_STATUS
239 AcpiAttachData (
240     ACPI_HANDLE             Object,
241     ACPI_OBJECT_HANDLER     Handler,
242     void                    *Data);
243 
244 ACPI_STATUS
245 AcpiDetachData (
246     ACPI_HANDLE             Object,
247     ACPI_OBJECT_HANDLER     Handler);
248 
249 ACPI_STATUS
250 AcpiGetData (
251     ACPI_HANDLE             Object,
252     ACPI_OBJECT_HANDLER     Handler,
253     void                    **Data);
254 
255 ACPI_STATUS
256 AcpiDebugTrace (
257     char                    *Name,
258     UINT32                  DebugLevel,
259     UINT32                  DebugLayer,
260     UINT32                  Flags);
261 
262 
263 /*
264  * Object manipulation and enumeration
265  */
266 ACPI_STATUS
267 AcpiEvaluateObject (
268     ACPI_HANDLE             Object,
269     ACPI_CONST_STRING       Pathname,
270     ACPI_OBJECT_LIST        *ParameterObjects,
271     ACPI_BUFFER             *ReturnObjectBuffer);
272 
273 ACPI_STATUS
274 AcpiEvaluateObjectTyped (
275     ACPI_HANDLE             Object,
276     ACPI_CONST_STRING       Pathname,
277     ACPI_OBJECT_LIST        *ExternalParams,
278     ACPI_BUFFER             *ReturnBuffer,
279     ACPI_OBJECT_TYPE        ReturnType);
280 
281 ACPI_STATUS
282 AcpiGetObjectInfo (
283     ACPI_HANDLE             Object,
284     ACPI_DEVICE_INFO        **ReturnBuffer);
285 
286 ACPI_STATUS
287 AcpiInstallMethod (
288     UINT8                   *Buffer);
289 
290 ACPI_STATUS
291 AcpiGetNextObject (
292     ACPI_OBJECT_TYPE        Type,
293     ACPI_HANDLE             Parent,
294     ACPI_HANDLE             Child,
295     ACPI_HANDLE             *OutHandle);
296 
297 ACPI_STATUS
298 AcpiGetType (
299     ACPI_HANDLE             Object,
300     ACPI_OBJECT_TYPE        *OutType);
301 
302 ACPI_STATUS
303 AcpiGetParent (
304     ACPI_HANDLE             Object,
305     ACPI_HANDLE             *OutHandle);
306 
307 
308 /*
309  * Handler interfaces
310  */
311 ACPI_STATUS
312 AcpiInstallInitializationHandler (
313     ACPI_INIT_HANDLER       Handler,
314     UINT32                  Function);
315 
316 ACPI_STATUS
317 AcpiInstallGlobalEventHandler (
318     ACPI_GBL_EVENT_HANDLER  Handler,
319     void                    *Context);
320 
321 ACPI_STATUS
322 AcpiInstallFixedEventHandler (
323     UINT32                  AcpiEvent,
324     ACPI_EVENT_HANDLER      Handler,
325     void                    *Context);
326 
327 ACPI_STATUS
328 AcpiRemoveFixedEventHandler (
329     UINT32                  AcpiEvent,
330     ACPI_EVENT_HANDLER      Handler);
331 
332 ACPI_STATUS
333 AcpiInstallGpeHandler (
334     ACPI_HANDLE             GpeDevice,
335     UINT32                  GpeNumber,
336     UINT32                  Type,
337     ACPI_GPE_HANDLER        Address,
338     void                    *Context);
339 
340 ACPI_STATUS
341 AcpiRemoveGpeHandler (
342     ACPI_HANDLE             GpeDevice,
343     UINT32                  GpeNumber,
344     ACPI_GPE_HANDLER        Address);
345 
346 ACPI_STATUS
347 AcpiInstallNotifyHandler (
348     ACPI_HANDLE             Device,
349     UINT32                  HandlerType,
350     ACPI_NOTIFY_HANDLER     Handler,
351     void                    *Context);
352 
353 ACPI_STATUS
354 AcpiRemoveNotifyHandler (
355     ACPI_HANDLE             Device,
356     UINT32                  HandlerType,
357     ACPI_NOTIFY_HANDLER     Handler);
358 
359 ACPI_STATUS
360 AcpiInstallAddressSpaceHandler (
361     ACPI_HANDLE             Device,
362     ACPI_ADR_SPACE_TYPE     SpaceId,
363     ACPI_ADR_SPACE_HANDLER  Handler,
364     ACPI_ADR_SPACE_SETUP    Setup,
365     void                    *Context);
366 
367 ACPI_STATUS
368 AcpiRemoveAddressSpaceHandler (
369     ACPI_HANDLE             Device,
370     ACPI_ADR_SPACE_TYPE     SpaceId,
371     ACPI_ADR_SPACE_HANDLER  Handler);
372 
373 ACPI_STATUS
374 AcpiInstallExceptionHandler (
375     ACPI_EXCEPTION_HANDLER  Handler);
376 
377 ACPI_STATUS
378 AcpiInstallInterfaceHandler (
379     ACPI_INTERFACE_HANDLER  Handler);
380 
381 
382 /*
383  * Global Lock interfaces
384  */
385 ACPI_STATUS
386 AcpiAcquireGlobalLock (
387     UINT16                  Timeout,
388     UINT32                  *Handle);
389 
390 ACPI_STATUS
391 AcpiReleaseGlobalLock (
392     UINT32                  Handle);
393 
394 
395 /*
396  * Fixed Event interfaces
397  */
398 ACPI_STATUS
399 AcpiEnableEvent (
400     UINT32                  Event,
401     UINT32                  Flags);
402 
403 ACPI_STATUS
404 AcpiDisableEvent (
405     UINT32                  Event,
406     UINT32                  Flags);
407 
408 ACPI_STATUS
409 AcpiClearEvent (
410     UINT32                  Event);
411 
412 ACPI_STATUS
413 AcpiGetEventStatus (
414     UINT32                  Event,
415     ACPI_EVENT_STATUS       *EventStatus);
416 
417 
418 /*
419  * General Purpose Event (GPE) Interfaces
420  */
421 ACPI_STATUS
422 AcpiUpdateAllGpes (
423     void);
424 
425 ACPI_STATUS
426 AcpiEnableGpe (
427     ACPI_HANDLE             GpeDevice,
428     UINT32                  GpeNumber);
429 
430 ACPI_STATUS
431 AcpiDisableGpe (
432     ACPI_HANDLE             GpeDevice,
433     UINT32                  GpeNumber);
434 
435 ACPI_STATUS
436 AcpiClearGpe (
437     ACPI_HANDLE             GpeDevice,
438     UINT32                  GpeNumber);
439 
440 ACPI_STATUS
441 AcpiSetGpe (
442     ACPI_HANDLE             GpeDevice,
443     UINT32                  GpeNumber,
444     UINT8                   Action);
445 
446 ACPI_STATUS
447 AcpiFinishGpe (
448     ACPI_HANDLE             GpeDevice,
449     UINT32                  GpeNumber);
450 
451 ACPI_STATUS
452 AcpiSetupGpeForWake (
453     ACPI_HANDLE             ParentDevice,
454     ACPI_HANDLE             GpeDevice,
455     UINT32                  GpeNumber);
456 
457 ACPI_STATUS
458 AcpiSetGpeWakeMask (
459     ACPI_HANDLE             GpeDevice,
460     UINT32                  GpeNumber,
461     UINT8                   Action);
462 
463 ACPI_STATUS
464 AcpiGetGpeStatus (
465     ACPI_HANDLE             GpeDevice,
466     UINT32                  GpeNumber,
467     ACPI_EVENT_STATUS       *EventStatus);
468 
469 ACPI_STATUS
470 AcpiDisableAllGpes (
471     void);
472 
473 ACPI_STATUS
474 AcpiEnableAllRuntimeGpes (
475     void);
476 
477 ACPI_STATUS
478 AcpiGetGpeDevice (
479     UINT32                  GpeIndex,
480     ACPI_HANDLE             *GpeDevice);
481 
482 ACPI_STATUS
483 AcpiInstallGpeBlock (
484     ACPI_HANDLE             GpeDevice,
485     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
486     UINT32                  RegisterCount,
487     UINT32                  InterruptNumber);
488 
489 ACPI_STATUS
490 AcpiRemoveGpeBlock (
491     ACPI_HANDLE             GpeDevice);
492 
493 
494 /*
495  * Resource interfaces
496  */
497 typedef
498 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
499     ACPI_RESOURCE           *Resource,
500     void                    *Context);
501 
502 ACPI_STATUS
503 AcpiGetVendorResource (
504     ACPI_HANDLE             Device,
505     char                    *Name,
506     ACPI_VENDOR_UUID        *Uuid,
507     ACPI_BUFFER             *RetBuffer);
508 
509 ACPI_STATUS
510 AcpiGetCurrentResources (
511     ACPI_HANDLE             Device,
512     ACPI_BUFFER             *RetBuffer);
513 
514 ACPI_STATUS
515 AcpiGetPossibleResources (
516     ACPI_HANDLE             Device,
517     ACPI_BUFFER             *RetBuffer);
518 
519 ACPI_STATUS
520 AcpiWalkResources (
521     ACPI_HANDLE                 Device,
522     const char                  *Name,
523     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
524     void                        *Context);
525 
526 ACPI_STATUS
527 AcpiSetCurrentResources (
528     ACPI_HANDLE             Device,
529     ACPI_BUFFER             *InBuffer);
530 
531 ACPI_STATUS
532 AcpiGetIrqRoutingTable (
533     ACPI_HANDLE             Device,
534     ACPI_BUFFER             *RetBuffer);
535 
536 ACPI_STATUS
537 AcpiResourceToAddress64 (
538     ACPI_RESOURCE           *Resource,
539     ACPI_RESOURCE_ADDRESS64 *Out);
540 
541 
542 /*
543  * Hardware (ACPI device) interfaces
544  */
545 ACPI_STATUS
546 AcpiReset (
547     void);
548 
549 ACPI_STATUS
550 AcpiRead (
551     UINT64                  *Value,
552     ACPI_GENERIC_ADDRESS    *Reg);
553 
554 ACPI_STATUS
555 AcpiWrite (
556     UINT64                  Value,
557     ACPI_GENERIC_ADDRESS    *Reg);
558 
559 ACPI_STATUS
560 AcpiReadBitRegister (
561     UINT32                  RegisterId,
562     UINT32                  *ReturnValue);
563 
564 ACPI_STATUS
565 AcpiWriteBitRegister (
566     UINT32                  RegisterId,
567     UINT32                  Value);
568 
569 ACPI_STATUS
570 AcpiGetSleepTypeData (
571     UINT8                   SleepState,
572     UINT8                   *Slp_TypA,
573     UINT8                   *Slp_TypB);
574 
575 ACPI_STATUS
576 AcpiEnterSleepStatePrep (
577     UINT8                   SleepState);
578 
579 ACPI_STATUS
580 AcpiEnterSleepState (
581     UINT8                   SleepState);
582 
583 ACPI_STATUS
584 AcpiEnterSleepStateS4bios (
585     void);
586 
587 ACPI_STATUS
588 AcpiLeaveSleepState (
589     UINT8                   SleepState)
590     ;
591 ACPI_STATUS
592 AcpiSetFirmwareWakingVector (
593     UINT32                  PhysicalAddress);
594 
595 #if ACPI_MACHINE_WIDTH == 64
596 ACPI_STATUS
597 AcpiSetFirmwareWakingVector64 (
598     UINT64                  PhysicalAddress);
599 #endif
600 
601 
602 /*
603  * Error/Warning output
604  */
605 void ACPI_INTERNAL_VAR_XFACE
606 AcpiError (
607     const char              *ModuleName,
608     UINT32                  LineNumber,
609     const char              *Format,
610     ...) ACPI_PRINTF_LIKE(3);
611 
612 void  ACPI_INTERNAL_VAR_XFACE
613 AcpiException (
614     const char              *ModuleName,
615     UINT32                  LineNumber,
616     ACPI_STATUS             Status,
617     const char              *Format,
618     ...) ACPI_PRINTF_LIKE(4);
619 
620 void ACPI_INTERNAL_VAR_XFACE
621 AcpiWarning (
622     const char              *ModuleName,
623     UINT32                  LineNumber,
624     const char              *Format,
625     ...) ACPI_PRINTF_LIKE(3);
626 
627 void ACPI_INTERNAL_VAR_XFACE
628 AcpiInfo (
629     const char              *ModuleName,
630     UINT32                  LineNumber,
631     const char              *Format,
632     ...) ACPI_PRINTF_LIKE(3);
633 
634 
635 /*
636  * Debug output
637  */
638 #ifdef ACPI_DEBUG_OUTPUT
639 
640 void ACPI_INTERNAL_VAR_XFACE
641 AcpiDebugPrint (
642     UINT32                  RequestedDebugLevel,
643     UINT32                  LineNumber,
644     const char              *FunctionName,
645     const char              *ModuleName,
646     UINT32                  ComponentId,
647     const char              *Format,
648     ...) ACPI_PRINTF_LIKE(6);
649 
650 void ACPI_INTERNAL_VAR_XFACE
651 AcpiDebugPrintRaw (
652     UINT32                  RequestedDebugLevel,
653     UINT32                  LineNumber,
654     const char              *FunctionName,
655     const char              *ModuleName,
656     UINT32                  ComponentId,
657     const char              *Format,
658     ...) ACPI_PRINTF_LIKE(6);
659 #endif
660 
661 #endif /* __ACXFACE_H__ */
662