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