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_CONST_STRING Signature, 182 UINT32 Instance, 183 ACPI_TABLE_HEADER *OutTableHeader); 184 185 ACPI_STATUS 186 AcpiGetTable ( 187 ACPI_CONST_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_CONST_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_CONST_STRING Pathname, 270 ACPI_OBJECT_LIST *ParameterObjects, 271 ACPI_BUFFER *ReturnObjectBuffer); 272 273 ACPI_STATUS 274 AcpiEvaluateObjectTyped ( 275 ACPI_HANDLE Object, 276 ACPI_CONST_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 const 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