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