1 /****************************************************************************** 2 * 3 * Name: acpixf.h - External interfaces to the ACPI subsystem 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2016, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44 #ifndef __ACXFACE_H__ 45 #define __ACXFACE_H__ 46 47 /* Current ACPICA subsystem version in YYYYMMDD format */ 48 49 #define ACPI_CA_VERSION 0x20160930 50 51 #include <contrib/dev/acpica/include/acconfig.h> 52 #include <contrib/dev/acpica/include/actypes.h> 53 #include <contrib/dev/acpica/include/actbl.h> 54 #include <contrib/dev/acpica/include/acbuffer.h> 55 56 57 /***************************************************************************** 58 * 59 * Macros used for ACPICA globals and configuration 60 * 61 ****************************************************************************/ 62 63 /* 64 * Ensure that global variables are defined and initialized only once. 65 * 66 * The use of these macros allows for a single list of globals (here) 67 * in order to simplify maintenance of the code. 68 */ 69 #ifdef DEFINE_ACPI_GLOBALS 70 #define ACPI_GLOBAL(type,name) \ 71 extern type name; \ 72 type name 73 74 #define ACPI_INIT_GLOBAL(type,name,value) \ 75 type name=value 76 77 #else 78 #ifndef ACPI_GLOBAL 79 #define ACPI_GLOBAL(type,name) \ 80 extern type name 81 #endif 82 83 #ifndef ACPI_INIT_GLOBAL 84 #define ACPI_INIT_GLOBAL(type,name,value) \ 85 extern type name 86 #endif 87 #endif 88 89 /* 90 * These macros configure the various ACPICA interfaces. They are 91 * useful for generating stub inline functions for features that are 92 * configured out of the current kernel or ACPICA application. 93 */ 94 #ifndef ACPI_EXTERNAL_RETURN_STATUS 95 #define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \ 96 Prototype; 97 #endif 98 99 #ifndef ACPI_EXTERNAL_RETURN_OK 100 #define ACPI_EXTERNAL_RETURN_OK(Prototype) \ 101 Prototype; 102 #endif 103 104 #ifndef ACPI_EXTERNAL_RETURN_VOID 105 #define ACPI_EXTERNAL_RETURN_VOID(Prototype) \ 106 Prototype; 107 #endif 108 109 #ifndef ACPI_EXTERNAL_RETURN_UINT32 110 #define ACPI_EXTERNAL_RETURN_UINT32(Prototype) \ 111 Prototype; 112 #endif 113 114 #ifndef ACPI_EXTERNAL_RETURN_PTR 115 #define ACPI_EXTERNAL_RETURN_PTR(Prototype) \ 116 Prototype; 117 #endif 118 119 120 /***************************************************************************** 121 * 122 * Public globals and runtime configuration options 123 * 124 ****************************************************************************/ 125 126 /* 127 * Enable "slack mode" of the AML interpreter? Default is FALSE, and the 128 * interpreter strictly follows the ACPI specification. Setting to TRUE 129 * allows the interpreter to ignore certain errors and/or bad AML constructs. 130 * 131 * Currently, these features are enabled by this flag: 132 * 133 * 1) Allow "implicit return" of last value in a control method 134 * 2) Allow access beyond the end of an operation region 135 * 3) Allow access to uninitialized locals/args (auto-init to integer 0) 136 * 4) Allow ANY object type to be a source operand for the Store() operator 137 * 5) Allow unresolved references (invalid target name) in package objects 138 * 6) Enable warning messages for behavior that is not ACPI spec compliant 139 */ 140 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableInterpreterSlack, FALSE); 141 142 /* 143 * Automatically serialize all methods that create named objects? Default 144 * is TRUE, meaning that all NonSerialized methods are scanned once at 145 * table load time to determine those that create named objects. Methods 146 * that create named objects are marked Serialized in order to prevent 147 * possible run-time problems if they are entered by more than one thread. 148 */ 149 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_AutoSerializeMethods, TRUE); 150 151 /* 152 * Create the predefined _OSI method in the namespace? Default is TRUE 153 * because ACPICA is fully compatible with other ACPI implementations. 154 * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior. 155 */ 156 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CreateOsiMethod, TRUE); 157 158 /* 159 * Optionally use default values for the ACPI register widths. Set this to 160 * TRUE to use the defaults, if an FADT contains incorrect widths/lengths. 161 */ 162 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_UseDefaultRegisterWidths, TRUE); 163 164 /* 165 * Whether or not to verify the table checksum before installation. Set 166 * this to TRUE to verify the table checksum before install it to the table 167 * manager. Note that enabling this option causes errors to happen in some 168 * OSPMs during early initialization stages. Default behavior is to do such 169 * verification. 170 */ 171 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_VerifyTableChecksum, TRUE); 172 173 /* 174 * Optionally enable output from the AML Debug Object. 175 */ 176 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableAmlDebugObject, FALSE); 177 178 /* 179 * Optionally copy the entire DSDT to local memory (instead of simply 180 * mapping it.) There are some BIOSs that corrupt or replace the original 181 * DSDT, creating the need for this option. Default is FALSE, do not copy 182 * the DSDT. 183 */ 184 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE); 185 186 /* 187 * Optionally ignore an XSDT if present and use the RSDT instead. 188 * Although the ACPI specification requires that an XSDT be used instead 189 * of the RSDT, the XSDT has been found to be corrupt or ill-formed on 190 * some machines. Default behavior is to use the XSDT if present. 191 */ 192 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE); 193 194 /* 195 * Optionally support group module level code. 196 */ 197 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE); 198 199 /* 200 * Optionally support module level code by parsing the entire table as 201 * a TermList. Default is FALSE, do not execute entire table until some 202 * lock order issues are fixed. 203 */ 204 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_ParseTableAsTermList, FALSE); 205 206 /* 207 * Optionally use 32-bit FADT addresses if and when there is a conflict 208 * (address mismatch) between the 32-bit and 64-bit versions of the 209 * address. Although ACPICA adheres to the ACPI specification which 210 * requires the use of the corresponding 64-bit address if it is non-zero, 211 * some machines have been found to have a corrupted non-zero 64-bit 212 * address. Default is FALSE, do not favor the 32-bit addresses. 213 */ 214 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFadtAddresses, FALSE); 215 216 /* 217 * Optionally use 32-bit FACS table addresses. 218 * It is reported that some platforms fail to resume from system suspending 219 * if 64-bit FACS table address is selected: 220 * https://bugzilla.kernel.org/show_bug.cgi?id=74021 221 * Default is TRUE, favor the 32-bit addresses. 222 */ 223 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFacsAddresses, TRUE); 224 225 /* 226 * Optionally truncate I/O addresses to 16 bits. Provides compatibility 227 * with other ACPI implementations. NOTE: During ACPICA initialization, 228 * this value is set to TRUE if any Windows OSI strings have been 229 * requested by the BIOS. 230 */ 231 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_TruncateIoAddresses, FALSE); 232 233 /* 234 * Disable runtime checking and repair of values returned by control methods. 235 * Use only if the repair is causing a problem on a particular machine. 236 */ 237 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableAutoRepair, FALSE); 238 239 /* 240 * Optionally do not install any SSDTs from the RSDT/XSDT during initialization. 241 * This can be useful for debugging ACPI problems on some machines. 242 */ 243 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableSsdtTableInstall, FALSE); 244 245 /* 246 * Optionally enable runtime namespace override. 247 */ 248 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_RuntimeNamespaceOverride, TRUE); 249 250 /* 251 * We keep track of the latest version of Windows that has been requested by 252 * the BIOS. ACPI 5.0. 253 */ 254 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OsiData, 0); 255 256 /* 257 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning 258 * that the ACPI hardware is no longer required. A flag in the FADT indicates 259 * a reduced HW machine, and that flag is duplicated here for convenience. 260 */ 261 ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ReducedHardware, FALSE); 262 263 /* 264 * Maximum number of While() loop iterations before forced method abort. 265 * This mechanism is intended to prevent infinite loops during interpreter 266 * execution within a host kernel. 267 */ 268 ACPI_INIT_GLOBAL (UINT32, AcpiGbl_MaxLoopIterations, ACPI_MAX_LOOP_COUNT); 269 270 /* 271 * This mechanism is used to trace a specified AML method. The method is 272 * traced each time it is executed. 273 */ 274 ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceFlags, 0); 275 ACPI_INIT_GLOBAL (const char *, AcpiGbl_TraceMethodName, NULL); 276 ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceDbgLevel, ACPI_TRACE_LEVEL_DEFAULT); 277 ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceDbgLayer, ACPI_TRACE_LAYER_DEFAULT); 278 279 /* 280 * Runtime configuration of debug output control masks. We want the debug 281 * switches statically initialized so they are already set when the debugger 282 * is entered. 283 */ 284 #ifdef ACPI_DEBUG_OUTPUT 285 ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_DEBUG_DEFAULT); 286 #else 287 ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_NORMAL_DEFAULT); 288 #endif 289 ACPI_INIT_GLOBAL (UINT32, AcpiDbgLayer, ACPI_COMPONENT_DEFAULT); 290 291 /* Optionally enable timer output with Debug Object output */ 292 293 ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisplayDebugTimer, FALSE); 294 295 /* 296 * Other miscellaneous globals 297 */ 298 ACPI_GLOBAL (ACPI_TABLE_FADT, AcpiGbl_FADT); 299 ACPI_GLOBAL (UINT32, AcpiCurrentGpeCount); 300 ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning); 301 302 303 /***************************************************************************** 304 * 305 * ACPICA public interface configuration. 306 * 307 * Interfaces that are configured out of the ACPICA build are replaced 308 * by inlined stubs by default. 309 * 310 ****************************************************************************/ 311 312 /* 313 * Hardware-reduced prototypes (default: Not hardware reduced). 314 * 315 * All ACPICA hardware-related interfaces that use these macros will be 316 * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag 317 * is set to TRUE. 318 * 319 * Note: This static build option for reduced hardware is intended to 320 * reduce ACPICA code size if desired or necessary. However, even if this 321 * option is not specified, the runtime behavior of ACPICA is dependent 322 * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set, 323 * the flag will enable similar behavior -- ACPICA will not attempt 324 * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.) 325 */ 326 #if (!ACPI_REDUCED_HARDWARE) 327 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \ 328 ACPI_EXTERNAL_RETURN_STATUS(Prototype) 329 330 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \ 331 ACPI_EXTERNAL_RETURN_OK(Prototype) 332 333 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \ 334 ACPI_EXTERNAL_RETURN_VOID(Prototype) 335 336 #else 337 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \ 338 static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);} 339 340 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \ 341 static ACPI_INLINE Prototype {return(AE_OK);} 342 343 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \ 344 static ACPI_INLINE Prototype {return;} 345 346 #endif /* !ACPI_REDUCED_HARDWARE */ 347 348 349 /* 350 * Error message prototypes (default: error messages enabled). 351 * 352 * All interfaces related to error and warning messages 353 * will be configured out of the ACPICA build if the 354 * ACPI_NO_ERROR_MESSAGE flag is defined. 355 */ 356 #ifndef ACPI_NO_ERROR_MESSAGES 357 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \ 358 Prototype; 359 360 #else 361 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \ 362 static ACPI_INLINE Prototype {return;} 363 364 #endif /* ACPI_NO_ERROR_MESSAGES */ 365 366 367 /* 368 * Debugging output prototypes (default: no debug output). 369 * 370 * All interfaces related to debug output messages 371 * will be configured out of the ACPICA build unless the 372 * ACPI_DEBUG_OUTPUT flag is defined. 373 */ 374 #ifdef ACPI_DEBUG_OUTPUT 375 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \ 376 Prototype; 377 378 #else 379 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \ 380 static ACPI_INLINE Prototype {return;} 381 382 #endif /* ACPI_DEBUG_OUTPUT */ 383 384 385 /* 386 * Application prototypes 387 * 388 * All interfaces used by application will be configured 389 * out of the ACPICA build unless the ACPI_APPLICATION 390 * flag is defined. 391 */ 392 #ifdef ACPI_APPLICATION 393 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \ 394 Prototype; 395 396 #else 397 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \ 398 static ACPI_INLINE Prototype {return;} 399 400 #endif /* ACPI_APPLICATION */ 401 402 403 /* 404 * Debugger prototypes 405 * 406 * All interfaces used by debugger will be configured 407 * out of the ACPICA build unless the ACPI_DEBUGGER 408 * flag is defined. 409 */ 410 #ifdef ACPI_DEBUGGER 411 #define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ 412 ACPI_EXTERNAL_RETURN_OK(Prototype) 413 414 #define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ 415 ACPI_EXTERNAL_RETURN_VOID(Prototype) 416 417 #else 418 #define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ 419 static ACPI_INLINE Prototype {return(AE_OK);} 420 421 #define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ 422 static ACPI_INLINE Prototype {return;} 423 424 #endif /* ACPI_DEBUGGER */ 425 426 427 /***************************************************************************** 428 * 429 * ACPICA public interface prototypes 430 * 431 ****************************************************************************/ 432 433 /* 434 * Initialization 435 */ 436 ACPI_EXTERNAL_RETURN_STATUS ( 437 ACPI_STATUS ACPI_INIT_FUNCTION 438 AcpiInitializeTables ( 439 ACPI_TABLE_DESC *InitialStorage, 440 UINT32 InitialTableCount, 441 BOOLEAN AllowResize)) 442 443 ACPI_EXTERNAL_RETURN_STATUS ( 444 ACPI_STATUS ACPI_INIT_FUNCTION 445 AcpiInitializeSubsystem ( 446 void)) 447 448 ACPI_EXTERNAL_RETURN_STATUS ( 449 ACPI_STATUS ACPI_INIT_FUNCTION 450 AcpiEnableSubsystem ( 451 UINT32 Flags)) 452 453 ACPI_EXTERNAL_RETURN_STATUS ( 454 ACPI_STATUS ACPI_INIT_FUNCTION 455 AcpiInitializeObjects ( 456 UINT32 Flags)) 457 458 ACPI_EXTERNAL_RETURN_STATUS ( 459 ACPI_STATUS ACPI_INIT_FUNCTION 460 AcpiTerminate ( 461 void)) 462 463 464 /* 465 * Miscellaneous global interfaces 466 */ 467 ACPI_HW_DEPENDENT_RETURN_STATUS ( 468 ACPI_STATUS 469 AcpiEnable ( 470 void)) 471 472 ACPI_HW_DEPENDENT_RETURN_STATUS ( 473 ACPI_STATUS 474 AcpiDisable ( 475 void)) 476 477 ACPI_EXTERNAL_RETURN_STATUS ( 478 ACPI_STATUS 479 AcpiSubsystemStatus ( 480 void)) 481 482 ACPI_EXTERNAL_RETURN_STATUS ( 483 ACPI_STATUS 484 AcpiGetSystemInfo ( 485 ACPI_BUFFER *RetBuffer)) 486 487 ACPI_EXTERNAL_RETURN_STATUS ( 488 ACPI_STATUS 489 AcpiGetStatistics ( 490 ACPI_STATISTICS *Stats)) 491 492 ACPI_EXTERNAL_RETURN_PTR ( 493 const char * 494 AcpiFormatException ( 495 ACPI_STATUS Exception)) 496 497 ACPI_EXTERNAL_RETURN_STATUS ( 498 ACPI_STATUS 499 AcpiPurgeCachedObjects ( 500 void)) 501 502 ACPI_EXTERNAL_RETURN_STATUS ( 503 ACPI_STATUS 504 AcpiInstallInterface ( 505 ACPI_STRING InterfaceName)) 506 507 ACPI_EXTERNAL_RETURN_STATUS ( 508 ACPI_STATUS 509 AcpiRemoveInterface ( 510 ACPI_STRING InterfaceName)) 511 512 ACPI_EXTERNAL_RETURN_STATUS ( 513 ACPI_STATUS 514 AcpiUpdateInterfaces ( 515 UINT8 Action)) 516 517 ACPI_EXTERNAL_RETURN_UINT32 ( 518 UINT32 519 AcpiCheckAddressRange ( 520 ACPI_ADR_SPACE_TYPE SpaceId, 521 ACPI_PHYSICAL_ADDRESS Address, 522 ACPI_SIZE Length, 523 BOOLEAN Warn)) 524 525 ACPI_EXTERNAL_RETURN_STATUS ( 526 ACPI_STATUS 527 AcpiDecodePldBuffer ( 528 UINT8 *InBuffer, 529 ACPI_SIZE Length, 530 ACPI_PLD_INFO **ReturnBuffer)) 531 532 533 /* 534 * ACPI table load/unload interfaces 535 */ 536 ACPI_EXTERNAL_RETURN_STATUS ( 537 ACPI_STATUS ACPI_INIT_FUNCTION 538 AcpiInstallTable ( 539 ACPI_PHYSICAL_ADDRESS Address, 540 BOOLEAN Physical)) 541 542 ACPI_EXTERNAL_RETURN_STATUS ( 543 ACPI_STATUS 544 AcpiLoadTable ( 545 ACPI_TABLE_HEADER *Table)) 546 547 ACPI_EXTERNAL_RETURN_STATUS ( 548 ACPI_STATUS 549 AcpiUnloadParentTable ( 550 ACPI_HANDLE Object)) 551 552 ACPI_EXTERNAL_RETURN_STATUS ( 553 ACPI_STATUS ACPI_INIT_FUNCTION 554 AcpiLoadTables ( 555 void)) 556 557 558 /* 559 * ACPI table manipulation interfaces 560 */ 561 ACPI_EXTERNAL_RETURN_STATUS ( 562 ACPI_STATUS ACPI_INIT_FUNCTION 563 AcpiReallocateRootTable ( 564 void)) 565 566 ACPI_EXTERNAL_RETURN_STATUS ( 567 ACPI_STATUS ACPI_INIT_FUNCTION 568 AcpiFindRootPointer ( 569 ACPI_PHYSICAL_ADDRESS *RsdpAddress)) 570 571 ACPI_EXTERNAL_RETURN_STATUS ( 572 ACPI_STATUS 573 AcpiGetTableHeader ( 574 ACPI_STRING Signature, 575 UINT32 Instance, 576 ACPI_TABLE_HEADER *OutTableHeader)) 577 578 ACPI_EXTERNAL_RETURN_STATUS ( 579 ACPI_STATUS 580 AcpiGetTable ( 581 ACPI_STRING Signature, 582 UINT32 Instance, 583 ACPI_TABLE_HEADER **OutTable)) 584 585 ACPI_EXTERNAL_RETURN_STATUS ( 586 ACPI_STATUS 587 AcpiGetTableByIndex ( 588 UINT32 TableIndex, 589 ACPI_TABLE_HEADER **OutTable)) 590 591 ACPI_EXTERNAL_RETURN_STATUS ( 592 ACPI_STATUS 593 AcpiInstallTableHandler ( 594 ACPI_TABLE_HANDLER Handler, 595 void *Context)) 596 597 ACPI_EXTERNAL_RETURN_STATUS ( 598 ACPI_STATUS 599 AcpiRemoveTableHandler ( 600 ACPI_TABLE_HANDLER Handler)) 601 602 603 /* 604 * Namespace and name interfaces 605 */ 606 ACPI_EXTERNAL_RETURN_STATUS ( 607 ACPI_STATUS 608 AcpiWalkNamespace ( 609 ACPI_OBJECT_TYPE Type, 610 ACPI_HANDLE StartObject, 611 UINT32 MaxDepth, 612 ACPI_WALK_CALLBACK DescendingCallback, 613 ACPI_WALK_CALLBACK AscendingCallback, 614 void *Context, 615 void **ReturnValue)) 616 617 ACPI_EXTERNAL_RETURN_STATUS ( 618 ACPI_STATUS 619 AcpiGetDevices ( 620 char *HID, 621 ACPI_WALK_CALLBACK UserFunction, 622 void *Context, 623 void **ReturnValue)) 624 625 ACPI_EXTERNAL_RETURN_STATUS ( 626 ACPI_STATUS 627 AcpiGetName ( 628 ACPI_HANDLE Object, 629 UINT32 NameType, 630 ACPI_BUFFER *RetPathPtr)) 631 632 ACPI_EXTERNAL_RETURN_STATUS ( 633 ACPI_STATUS 634 AcpiGetHandle ( 635 ACPI_HANDLE Parent, 636 ACPI_STRING Pathname, 637 ACPI_HANDLE *RetHandle)) 638 639 ACPI_EXTERNAL_RETURN_STATUS ( 640 ACPI_STATUS 641 AcpiAttachData ( 642 ACPI_HANDLE Object, 643 ACPI_OBJECT_HANDLER Handler, 644 void *Data)) 645 646 ACPI_EXTERNAL_RETURN_STATUS ( 647 ACPI_STATUS 648 AcpiDetachData ( 649 ACPI_HANDLE Object, 650 ACPI_OBJECT_HANDLER Handler)) 651 652 ACPI_EXTERNAL_RETURN_STATUS ( 653 ACPI_STATUS 654 AcpiGetData ( 655 ACPI_HANDLE Object, 656 ACPI_OBJECT_HANDLER Handler, 657 void **Data)) 658 659 ACPI_EXTERNAL_RETURN_STATUS ( 660 ACPI_STATUS 661 AcpiDebugTrace ( 662 const char *Name, 663 UINT32 DebugLevel, 664 UINT32 DebugLayer, 665 UINT32 Flags)) 666 667 668 /* 669 * Object manipulation and enumeration 670 */ 671 ACPI_EXTERNAL_RETURN_STATUS ( 672 ACPI_STATUS 673 AcpiEvaluateObject ( 674 ACPI_HANDLE Object, 675 ACPI_STRING Pathname, 676 ACPI_OBJECT_LIST *ParameterObjects, 677 ACPI_BUFFER *ReturnObjectBuffer)) 678 679 ACPI_EXTERNAL_RETURN_STATUS ( 680 ACPI_STATUS 681 AcpiEvaluateObjectTyped ( 682 ACPI_HANDLE Object, 683 ACPI_STRING Pathname, 684 ACPI_OBJECT_LIST *ExternalParams, 685 ACPI_BUFFER *ReturnBuffer, 686 ACPI_OBJECT_TYPE ReturnType)) 687 688 ACPI_EXTERNAL_RETURN_STATUS ( 689 ACPI_STATUS 690 AcpiGetObjectInfo ( 691 ACPI_HANDLE Object, 692 ACPI_DEVICE_INFO **ReturnBuffer)) 693 694 ACPI_EXTERNAL_RETURN_STATUS ( 695 ACPI_STATUS 696 AcpiInstallMethod ( 697 UINT8 *Buffer)) 698 699 ACPI_EXTERNAL_RETURN_STATUS ( 700 ACPI_STATUS 701 AcpiGetNextObject ( 702 ACPI_OBJECT_TYPE Type, 703 ACPI_HANDLE Parent, 704 ACPI_HANDLE Child, 705 ACPI_HANDLE *OutHandle)) 706 707 ACPI_EXTERNAL_RETURN_STATUS ( 708 ACPI_STATUS 709 AcpiGetType ( 710 ACPI_HANDLE Object, 711 ACPI_OBJECT_TYPE *OutType)) 712 713 ACPI_EXTERNAL_RETURN_STATUS ( 714 ACPI_STATUS 715 AcpiGetParent ( 716 ACPI_HANDLE Object, 717 ACPI_HANDLE *OutHandle)) 718 719 720 /* 721 * Handler interfaces 722 */ 723 ACPI_EXTERNAL_RETURN_STATUS ( 724 ACPI_STATUS 725 AcpiInstallInitializationHandler ( 726 ACPI_INIT_HANDLER Handler, 727 UINT32 Function)) 728 729 ACPI_HW_DEPENDENT_RETURN_STATUS ( 730 ACPI_STATUS 731 AcpiInstallSciHandler ( 732 ACPI_SCI_HANDLER Address, 733 void *Context)) 734 735 ACPI_HW_DEPENDENT_RETURN_STATUS ( 736 ACPI_STATUS 737 AcpiRemoveSciHandler ( 738 ACPI_SCI_HANDLER Address)) 739 740 ACPI_HW_DEPENDENT_RETURN_STATUS ( 741 ACPI_STATUS 742 AcpiInstallGlobalEventHandler ( 743 ACPI_GBL_EVENT_HANDLER Handler, 744 void *Context)) 745 746 ACPI_HW_DEPENDENT_RETURN_STATUS ( 747 ACPI_STATUS 748 AcpiInstallFixedEventHandler ( 749 UINT32 AcpiEvent, 750 ACPI_EVENT_HANDLER Handler, 751 void *Context)) 752 753 ACPI_HW_DEPENDENT_RETURN_STATUS ( 754 ACPI_STATUS 755 AcpiRemoveFixedEventHandler ( 756 UINT32 AcpiEvent, 757 ACPI_EVENT_HANDLER Handler)) 758 759 ACPI_HW_DEPENDENT_RETURN_STATUS ( 760 ACPI_STATUS 761 AcpiInstallGpeHandler ( 762 ACPI_HANDLE GpeDevice, 763 UINT32 GpeNumber, 764 UINT32 Type, 765 ACPI_GPE_HANDLER Address, 766 void *Context)) 767 768 ACPI_HW_DEPENDENT_RETURN_STATUS ( 769 ACPI_STATUS 770 AcpiInstallGpeRawHandler ( 771 ACPI_HANDLE GpeDevice, 772 UINT32 GpeNumber, 773 UINT32 Type, 774 ACPI_GPE_HANDLER Address, 775 void *Context)) 776 777 ACPI_HW_DEPENDENT_RETURN_STATUS ( 778 ACPI_STATUS 779 AcpiRemoveGpeHandler ( 780 ACPI_HANDLE GpeDevice, 781 UINT32 GpeNumber, 782 ACPI_GPE_HANDLER Address)) 783 784 ACPI_EXTERNAL_RETURN_STATUS ( 785 ACPI_STATUS 786 AcpiInstallNotifyHandler ( 787 ACPI_HANDLE Device, 788 UINT32 HandlerType, 789 ACPI_NOTIFY_HANDLER Handler, 790 void *Context)) 791 792 ACPI_EXTERNAL_RETURN_STATUS ( 793 ACPI_STATUS 794 AcpiRemoveNotifyHandler ( 795 ACPI_HANDLE Device, 796 UINT32 HandlerType, 797 ACPI_NOTIFY_HANDLER Handler)) 798 799 ACPI_EXTERNAL_RETURN_STATUS ( 800 ACPI_STATUS 801 AcpiInstallAddressSpaceHandler ( 802 ACPI_HANDLE Device, 803 ACPI_ADR_SPACE_TYPE SpaceId, 804 ACPI_ADR_SPACE_HANDLER Handler, 805 ACPI_ADR_SPACE_SETUP Setup, 806 void *Context)) 807 808 ACPI_EXTERNAL_RETURN_STATUS ( 809 ACPI_STATUS 810 AcpiRemoveAddressSpaceHandler ( 811 ACPI_HANDLE Device, 812 ACPI_ADR_SPACE_TYPE SpaceId, 813 ACPI_ADR_SPACE_HANDLER Handler)) 814 815 ACPI_EXTERNAL_RETURN_STATUS ( 816 ACPI_STATUS 817 AcpiInstallExceptionHandler ( 818 ACPI_EXCEPTION_HANDLER Handler)) 819 820 ACPI_EXTERNAL_RETURN_STATUS ( 821 ACPI_STATUS 822 AcpiInstallInterfaceHandler ( 823 ACPI_INTERFACE_HANDLER Handler)) 824 825 826 /* 827 * Global Lock interfaces 828 */ 829 ACPI_HW_DEPENDENT_RETURN_STATUS ( 830 ACPI_STATUS 831 AcpiAcquireGlobalLock ( 832 UINT16 Timeout, 833 UINT32 *Handle)) 834 835 ACPI_HW_DEPENDENT_RETURN_STATUS ( 836 ACPI_STATUS 837 AcpiReleaseGlobalLock ( 838 UINT32 Handle)) 839 840 841 /* 842 * Interfaces to AML mutex objects 843 */ 844 ACPI_EXTERNAL_RETURN_STATUS ( 845 ACPI_STATUS 846 AcpiAcquireMutex ( 847 ACPI_HANDLE Handle, 848 ACPI_STRING Pathname, 849 UINT16 Timeout)) 850 851 ACPI_EXTERNAL_RETURN_STATUS ( 852 ACPI_STATUS 853 AcpiReleaseMutex ( 854 ACPI_HANDLE Handle, 855 ACPI_STRING Pathname)) 856 857 858 /* 859 * Fixed Event interfaces 860 */ 861 ACPI_HW_DEPENDENT_RETURN_STATUS ( 862 ACPI_STATUS 863 AcpiEnableEvent ( 864 UINT32 Event, 865 UINT32 Flags)) 866 867 ACPI_HW_DEPENDENT_RETURN_STATUS ( 868 ACPI_STATUS 869 AcpiDisableEvent ( 870 UINT32 Event, 871 UINT32 Flags)) 872 873 ACPI_HW_DEPENDENT_RETURN_STATUS ( 874 ACPI_STATUS 875 AcpiClearEvent ( 876 UINT32 Event)) 877 878 ACPI_HW_DEPENDENT_RETURN_STATUS ( 879 ACPI_STATUS 880 AcpiGetEventStatus ( 881 UINT32 Event, 882 ACPI_EVENT_STATUS *EventStatus)) 883 884 885 /* 886 * General Purpose Event (GPE) Interfaces 887 */ 888 ACPI_HW_DEPENDENT_RETURN_STATUS ( 889 ACPI_STATUS 890 AcpiUpdateAllGpes ( 891 void)) 892 893 ACPI_HW_DEPENDENT_RETURN_STATUS ( 894 ACPI_STATUS 895 AcpiEnableGpe ( 896 ACPI_HANDLE GpeDevice, 897 UINT32 GpeNumber)) 898 899 ACPI_HW_DEPENDENT_RETURN_STATUS ( 900 ACPI_STATUS 901 AcpiDisableGpe ( 902 ACPI_HANDLE GpeDevice, 903 UINT32 GpeNumber)) 904 905 ACPI_HW_DEPENDENT_RETURN_STATUS ( 906 ACPI_STATUS 907 AcpiClearGpe ( 908 ACPI_HANDLE GpeDevice, 909 UINT32 GpeNumber)) 910 911 ACPI_HW_DEPENDENT_RETURN_STATUS ( 912 ACPI_STATUS 913 AcpiSetGpe ( 914 ACPI_HANDLE GpeDevice, 915 UINT32 GpeNumber, 916 UINT8 Action)) 917 918 ACPI_HW_DEPENDENT_RETURN_STATUS ( 919 ACPI_STATUS 920 AcpiFinishGpe ( 921 ACPI_HANDLE GpeDevice, 922 UINT32 GpeNumber)) 923 924 ACPI_HW_DEPENDENT_RETURN_STATUS ( 925 ACPI_STATUS 926 AcpiMaskGpe ( 927 ACPI_HANDLE GpeDevice, 928 UINT32 GpeNumber, 929 BOOLEAN IsMasked)) 930 931 ACPI_HW_DEPENDENT_RETURN_STATUS ( 932 ACPI_STATUS 933 AcpiMarkGpeForWake ( 934 ACPI_HANDLE GpeDevice, 935 UINT32 GpeNumber)) 936 937 ACPI_HW_DEPENDENT_RETURN_STATUS ( 938 ACPI_STATUS 939 AcpiSetupGpeForWake ( 940 ACPI_HANDLE ParentDevice, 941 ACPI_HANDLE GpeDevice, 942 UINT32 GpeNumber)) 943 944 ACPI_HW_DEPENDENT_RETURN_STATUS ( 945 ACPI_STATUS 946 AcpiSetGpeWakeMask ( 947 ACPI_HANDLE GpeDevice, 948 UINT32 GpeNumber, 949 UINT8 Action)) 950 951 ACPI_HW_DEPENDENT_RETURN_STATUS ( 952 ACPI_STATUS 953 AcpiGetGpeStatus ( 954 ACPI_HANDLE GpeDevice, 955 UINT32 GpeNumber, 956 ACPI_EVENT_STATUS *EventStatus)) 957 958 ACPI_HW_DEPENDENT_RETURN_STATUS ( 959 ACPI_STATUS 960 AcpiDisableAllGpes ( 961 void)) 962 963 ACPI_HW_DEPENDENT_RETURN_STATUS ( 964 ACPI_STATUS 965 AcpiEnableAllRuntimeGpes ( 966 void)) 967 968 ACPI_HW_DEPENDENT_RETURN_STATUS ( 969 ACPI_STATUS 970 AcpiEnableAllWakeupGpes ( 971 void)) 972 973 ACPI_HW_DEPENDENT_RETURN_STATUS ( 974 ACPI_STATUS 975 AcpiGetGpeDevice ( 976 UINT32 GpeIndex, 977 ACPI_HANDLE *GpeDevice)) 978 979 ACPI_HW_DEPENDENT_RETURN_STATUS ( 980 ACPI_STATUS 981 AcpiInstallGpeBlock ( 982 ACPI_HANDLE GpeDevice, 983 ACPI_GENERIC_ADDRESS *GpeBlockAddress, 984 UINT32 RegisterCount, 985 UINT32 InterruptNumber)) 986 987 ACPI_HW_DEPENDENT_RETURN_STATUS ( 988 ACPI_STATUS 989 AcpiRemoveGpeBlock ( 990 ACPI_HANDLE GpeDevice)) 991 992 993 /* 994 * Resource interfaces 995 */ 996 typedef 997 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) ( 998 ACPI_RESOURCE *Resource, 999 void *Context); 1000 1001 ACPI_EXTERNAL_RETURN_STATUS ( 1002 ACPI_STATUS 1003 AcpiGetVendorResource ( 1004 ACPI_HANDLE Device, 1005 char *Name, 1006 ACPI_VENDOR_UUID *Uuid, 1007 ACPI_BUFFER *RetBuffer)) 1008 1009 ACPI_EXTERNAL_RETURN_STATUS ( 1010 ACPI_STATUS 1011 AcpiGetCurrentResources ( 1012 ACPI_HANDLE Device, 1013 ACPI_BUFFER *RetBuffer)) 1014 1015 ACPI_EXTERNAL_RETURN_STATUS ( 1016 ACPI_STATUS 1017 AcpiGetPossibleResources ( 1018 ACPI_HANDLE Device, 1019 ACPI_BUFFER *RetBuffer)) 1020 1021 ACPI_EXTERNAL_RETURN_STATUS ( 1022 ACPI_STATUS 1023 AcpiGetEventResources ( 1024 ACPI_HANDLE DeviceHandle, 1025 ACPI_BUFFER *RetBuffer)) 1026 1027 ACPI_EXTERNAL_RETURN_STATUS ( 1028 ACPI_STATUS 1029 AcpiWalkResourceBuffer ( 1030 ACPI_BUFFER *Buffer, 1031 ACPI_WALK_RESOURCE_CALLBACK UserFunction, 1032 void *Context)) 1033 1034 ACPI_EXTERNAL_RETURN_STATUS ( 1035 ACPI_STATUS 1036 AcpiWalkResources ( 1037 ACPI_HANDLE Device, 1038 char *Name, 1039 ACPI_WALK_RESOURCE_CALLBACK UserFunction, 1040 void *Context)) 1041 1042 ACPI_EXTERNAL_RETURN_STATUS ( 1043 ACPI_STATUS 1044 AcpiSetCurrentResources ( 1045 ACPI_HANDLE Device, 1046 ACPI_BUFFER *InBuffer)) 1047 1048 ACPI_EXTERNAL_RETURN_STATUS ( 1049 ACPI_STATUS 1050 AcpiGetIrqRoutingTable ( 1051 ACPI_HANDLE Device, 1052 ACPI_BUFFER *RetBuffer)) 1053 1054 ACPI_EXTERNAL_RETURN_STATUS ( 1055 ACPI_STATUS 1056 AcpiResourceToAddress64 ( 1057 ACPI_RESOURCE *Resource, 1058 ACPI_RESOURCE_ADDRESS64 *Out)) 1059 1060 ACPI_EXTERNAL_RETURN_STATUS ( 1061 ACPI_STATUS 1062 AcpiBufferToResource ( 1063 UINT8 *AmlBuffer, 1064 UINT16 AmlBufferLength, 1065 ACPI_RESOURCE **ResourcePtr)) 1066 1067 1068 /* 1069 * Hardware (ACPI device) interfaces 1070 */ 1071 ACPI_EXTERNAL_RETURN_STATUS ( 1072 ACPI_STATUS 1073 AcpiReset ( 1074 void)) 1075 1076 ACPI_EXTERNAL_RETURN_STATUS ( 1077 ACPI_STATUS 1078 AcpiRead ( 1079 UINT64 *Value, 1080 ACPI_GENERIC_ADDRESS *Reg)) 1081 1082 ACPI_EXTERNAL_RETURN_STATUS ( 1083 ACPI_STATUS 1084 AcpiWrite ( 1085 UINT64 Value, 1086 ACPI_GENERIC_ADDRESS *Reg)) 1087 1088 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1089 ACPI_STATUS 1090 AcpiReadBitRegister ( 1091 UINT32 RegisterId, 1092 UINT32 *ReturnValue)) 1093 1094 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1095 ACPI_STATUS 1096 AcpiWriteBitRegister ( 1097 UINT32 RegisterId, 1098 UINT32 Value)) 1099 1100 1101 /* 1102 * Sleep/Wake interfaces 1103 */ 1104 ACPI_EXTERNAL_RETURN_STATUS ( 1105 ACPI_STATUS 1106 AcpiGetSleepTypeData ( 1107 UINT8 SleepState, 1108 UINT8 *Slp_TypA, 1109 UINT8 *Slp_TypB)) 1110 1111 ACPI_EXTERNAL_RETURN_STATUS ( 1112 ACPI_STATUS 1113 AcpiEnterSleepStatePrep ( 1114 UINT8 SleepState)) 1115 1116 ACPI_EXTERNAL_RETURN_STATUS ( 1117 ACPI_STATUS 1118 AcpiEnterSleepState ( 1119 UINT8 SleepState)) 1120 1121 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1122 ACPI_STATUS 1123 AcpiEnterSleepStateS4bios ( 1124 void)) 1125 1126 ACPI_EXTERNAL_RETURN_STATUS ( 1127 ACPI_STATUS 1128 AcpiLeaveSleepStatePrep ( 1129 UINT8 SleepState)) 1130 1131 ACPI_EXTERNAL_RETURN_STATUS ( 1132 ACPI_STATUS 1133 AcpiLeaveSleepState ( 1134 UINT8 SleepState)) 1135 1136 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1137 ACPI_STATUS 1138 AcpiSetFirmwareWakingVector ( 1139 ACPI_PHYSICAL_ADDRESS PhysicalAddress, 1140 ACPI_PHYSICAL_ADDRESS PhysicalAddress64)) 1141 1142 1143 /* 1144 * ACPI Timer interfaces 1145 */ 1146 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1147 ACPI_STATUS 1148 AcpiGetTimerResolution ( 1149 UINT32 *Resolution)) 1150 1151 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1152 ACPI_STATUS 1153 AcpiGetTimer ( 1154 UINT32 *Ticks)) 1155 1156 ACPI_HW_DEPENDENT_RETURN_STATUS ( 1157 ACPI_STATUS 1158 AcpiGetTimerDuration ( 1159 UINT32 StartTicks, 1160 UINT32 EndTicks, 1161 UINT32 *TimeElapsed)) 1162 1163 1164 /* 1165 * Error/Warning output 1166 */ 1167 ACPI_MSG_DEPENDENT_RETURN_VOID ( 1168 ACPI_PRINTF_LIKE(3) 1169 void ACPI_INTERNAL_VAR_XFACE 1170 AcpiError ( 1171 const char *ModuleName, 1172 UINT32 LineNumber, 1173 const char *Format, 1174 ...)) 1175 1176 ACPI_MSG_DEPENDENT_RETURN_VOID ( 1177 ACPI_PRINTF_LIKE(4) 1178 void ACPI_INTERNAL_VAR_XFACE 1179 AcpiException ( 1180 const char *ModuleName, 1181 UINT32 LineNumber, 1182 ACPI_STATUS Status, 1183 const char *Format, 1184 ...)) 1185 1186 ACPI_MSG_DEPENDENT_RETURN_VOID ( 1187 ACPI_PRINTF_LIKE(3) 1188 void ACPI_INTERNAL_VAR_XFACE 1189 AcpiWarning ( 1190 const char *ModuleName, 1191 UINT32 LineNumber, 1192 const char *Format, 1193 ...)) 1194 1195 ACPI_MSG_DEPENDENT_RETURN_VOID ( 1196 ACPI_PRINTF_LIKE(1) 1197 void ACPI_INTERNAL_VAR_XFACE 1198 AcpiInfo ( 1199 const char *Format, 1200 ...)) 1201 1202 ACPI_MSG_DEPENDENT_RETURN_VOID ( 1203 ACPI_PRINTF_LIKE(3) 1204 void ACPI_INTERNAL_VAR_XFACE 1205 AcpiBiosError ( 1206 const char *ModuleName, 1207 UINT32 LineNumber, 1208 const char *Format, 1209 ...)) 1210 1211 ACPI_MSG_DEPENDENT_RETURN_VOID ( 1212 ACPI_PRINTF_LIKE(3) 1213 void ACPI_INTERNAL_VAR_XFACE 1214 AcpiBiosWarning ( 1215 const char *ModuleName, 1216 UINT32 LineNumber, 1217 const char *Format, 1218 ...)) 1219 1220 1221 /* 1222 * Debug output 1223 */ 1224 ACPI_DBG_DEPENDENT_RETURN_VOID ( 1225 ACPI_PRINTF_LIKE(6) 1226 void ACPI_INTERNAL_VAR_XFACE 1227 AcpiDebugPrint ( 1228 UINT32 RequestedDebugLevel, 1229 UINT32 LineNumber, 1230 const char *FunctionName, 1231 const char *ModuleName, 1232 UINT32 ComponentId, 1233 const char *Format, 1234 ...)) 1235 1236 ACPI_DBG_DEPENDENT_RETURN_VOID ( 1237 ACPI_PRINTF_LIKE(6) 1238 void ACPI_INTERNAL_VAR_XFACE 1239 AcpiDebugPrintRaw ( 1240 UINT32 RequestedDebugLevel, 1241 UINT32 LineNumber, 1242 const char *FunctionName, 1243 const char *ModuleName, 1244 UINT32 ComponentId, 1245 const char *Format, 1246 ...)) 1247 1248 ACPI_DBG_DEPENDENT_RETURN_VOID ( 1249 void 1250 AcpiTracePoint ( 1251 ACPI_TRACE_EVENT_TYPE Type, 1252 BOOLEAN Begin, 1253 UINT8 *Aml, 1254 char *Pathname)) 1255 1256 ACPI_STATUS 1257 AcpiInitializeDebugger ( 1258 void); 1259 1260 void 1261 AcpiTerminateDebugger ( 1262 void); 1263 1264 void 1265 AcpiSetDebuggerThreadId ( 1266 ACPI_THREAD_ID ThreadId); 1267 1268 #endif /* __ACXFACE_H__ */ 1269