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