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