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