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 0x20110527 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_STRING Signature, 181 UINT32 Instance, 182 ACPI_TABLE_HEADER *OutTableHeader); 183 184 ACPI_STATUS 185 AcpiGetTable ( 186 ACPI_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_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_STRING Pathname, 269 ACPI_OBJECT_LIST *ParameterObjects, 270 ACPI_BUFFER *ReturnObjectBuffer); 271 272 ACPI_STATUS 273 AcpiEvaluateObjectTyped ( 274 ACPI_HANDLE Object, 275 ACPI_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 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