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