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