acpixf.h revision 1.3 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 0x20110211
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
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_CONST_STRING Signature,
181 UINT32 Instance,
182 ACPI_TABLE_HEADER *OutTableHeader);
183
184 ACPI_STATUS
185 AcpiGetTable (
186 ACPI_CONST_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_CONST_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_CONST_STRING Pathname,
269 ACPI_OBJECT_LIST *ParameterObjects,
270 ACPI_BUFFER *ReturnObjectBuffer);
271
272 ACPI_STATUS
273 AcpiEvaluateObjectTyped (
274 ACPI_HANDLE Object,
275 ACPI_CONST_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 const 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__ */
661