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