acevents.h revision 281075
1204431Sraj/****************************************************************************** 2204431Sraj * 3204431Sraj * Name: acevents.h - Event subcomponent prototypes and defines 4204431Sraj * 5204431Sraj *****************************************************************************/ 6204431Sraj 7204431Sraj/* 8204431Sraj * Copyright (C) 2000 - 2015, Intel Corp. 9204431Sraj * All rights reserved. 10204431Sraj * 11204431Sraj * Redistribution and use in source and binary forms, with or without 12204431Sraj * modification, are permitted provided that the following conditions 13204431Sraj * are met: 14204431Sraj * 1. Redistributions of source code must retain the above copyright 15204431Sraj * notice, this list of conditions, and the following disclaimer, 16204431Sraj * without modification. 17204431Sraj * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18204431Sraj * substantially similar to the "NO WARRANTY" disclaimer below 19204431Sraj * ("Disclaimer") and any redistribution must be conditioned upon 20204433Sraj * including a substantially similar Disclaimer requirement for further 21204433Sraj * binary redistribution. 22204433Sraj * 3. Neither the names of the above-listed copyright holders nor the names 23204433Sraj * of any contributors may be used to endorse or promote products derived 24204431Sraj * from this software without specific prior written permission. 25204431Sraj * 26204431Sraj * Alternatively, this software may be distributed under the terms of the 27238742Simp * GNU General Public License ("GPL") version 2 as published by the Free 28238742Simp * Software Foundation. 29238742Simp * 30238742Simp * NO WARRANTY 31238742Simp * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32204433Sraj * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33238742Simp * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34238742Simp * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35204431Sraj * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36204433Sraj * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37238742Simp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38238742Simp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39238742Simp * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40204433Sraj * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41238742Simp * POSSIBILITY OF SUCH DAMAGES. 42238742Simp */ 43238742Simp 44204433Sraj#ifndef __ACEVENTS_H__ 45238742Simp#define __ACEVENTS_H__ 46238742Simp 47238742Simp 48238742Simp/* 49238742Simp * evevent 50238742Simp */ 51204433SrajACPI_STATUS 52238742SimpAcpiEvInitializeEvents ( 53238742Simp void); 54238742Simp 55238742SimpACPI_STATUS 56238742SimpAcpiEvInstallXruptHandlers ( 57238742Simp void); 58238742Simp 59238742SimpUINT32 60238742SimpAcpiEvFixedEventDetect ( 61238742Simp void); 62238742Simp 63238742Simp 64238742Simp/* 65238742Simp * evmisc 66238742Simp */ 67238742SimpBOOLEAN 68238742SimpAcpiEvIsNotifyObject ( 69238742Simp ACPI_NAMESPACE_NODE *Node); 70238742Simp 71238742SimpUINT32 72204431SrajAcpiEvGetGpeNumberIndex ( 73204431Sraj UINT32 GpeNumber); 74204431Sraj 75238742SimpACPI_STATUS 76204433SrajAcpiEvQueueNotifyRequest ( 77238742Simp ACPI_NAMESPACE_NODE *Node, 78238742Simp UINT32 NotifyValue); 79204431Sraj 80238742Simp 81238742Simp/* 82204431Sraj * evglock - Global Lock support 83238742Simp */ 84204431SrajACPI_STATUS 85204431SrajAcpiEvInitGlobalLockHandler ( 86238742Simp void); 87204431Sraj 88204431SrajACPI_HW_DEPENDENT_RETURN_OK ( 89238742SimpACPI_STATUS 90238742SimpAcpiEvAcquireGlobalLock( 91238742Simp UINT16 Timeout)) 92238742Simp 93238742SimpACPI_HW_DEPENDENT_RETURN_OK ( 94238742SimpACPI_STATUS 95238742SimpAcpiEvReleaseGlobalLock( 96238742Simp void)) 97238742Simp 98238742SimpACPI_STATUS 99204431SrajAcpiEvRemoveGlobalLockHandler ( 100238742Simp void); 101238742Simp 102238742Simp 103204431Sraj/* 104238742Simp * evgpe - Low-level GPE support 105238742Simp */ 106238742SimpUINT32 107238742SimpAcpiEvGpeDetect ( 108238742Simp ACPI_GPE_XRUPT_INFO *GpeXruptList); 109204431Sraj 110238742SimpACPI_STATUS 111238742SimpAcpiEvUpdateGpeEnableMask ( 112238742Simp ACPI_GPE_EVENT_INFO *GpeEventInfo); 113204431Sraj 114238742SimpACPI_STATUS 115238742SimpAcpiEvEnableGpe ( 116204431Sraj ACPI_GPE_EVENT_INFO *GpeEventInfo); 117238742Simp 118238742SimpACPI_STATUS 119238742SimpAcpiEvAddGpeReference ( 120238742Simp ACPI_GPE_EVENT_INFO *GpeEventInfo); 121204431Sraj 122204431SrajACPI_STATUS 123238742SimpAcpiEvRemoveGpeReference ( 124238742Simp ACPI_GPE_EVENT_INFO *GpeEventInfo); 125238742Simp 126238742SimpACPI_GPE_EVENT_INFO * 127238742SimpAcpiEvGetGpeEventInfo ( 128238742Simp ACPI_HANDLE GpeDevice, 129238742Simp UINT32 GpeNumber); 130204431Sraj 131204431SrajACPI_GPE_EVENT_INFO * 132238742SimpAcpiEvLowGetGpeInfo ( 133238742Simp UINT32 GpeNumber, 134204431Sraj ACPI_GPE_BLOCK_INFO *GpeBlock); 135238742Simp 136238742SimpACPI_STATUS 137238742SimpAcpiEvFinishGpe ( 138238742Simp ACPI_GPE_EVENT_INFO *GpeEventInfo); 139204431Sraj 140238742Simp 141238742Simp/* 142204431Sraj * evgpeblk - Upper-level GPE block support 143238742Simp */ 144238742SimpACPI_STATUS 145238742SimpAcpiEvCreateGpeBlock ( 146204431Sraj ACPI_NAMESPACE_NODE *GpeDevice, 147238742Simp UINT64 Address, 148238742Simp UINT8 SpaceId, 149204431Sraj UINT32 RegisterCount, 150238742Simp UINT16 GpeBlockBaseNumber, 151204431Sraj UINT32 InterruptNumber, 152238742Simp ACPI_GPE_BLOCK_INFO **ReturnGpeBlock); 153238742Simp 154238742SimpACPI_STATUS 155238742SimpAcpiEvInitializeGpeBlock ( 156238742Simp ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 157238742Simp ACPI_GPE_BLOCK_INFO *GpeBlock, 158238742Simp void *Context); 159238742Simp 160204431SrajACPI_HW_DEPENDENT_RETURN_OK ( 161204431SrajACPI_STATUS 162266130SianAcpiEvDeleteGpeBlock ( 163238742Simp ACPI_GPE_BLOCK_INFO *GpeBlock)) 164238742Simp 165204433SrajUINT32 166238742SimpAcpiEvGpeDispatch ( 167238742Simp ACPI_NAMESPACE_NODE *GpeDevice, 168238742Simp ACPI_GPE_EVENT_INFO *GpeEventInfo, 169238742Simp UINT32 GpeNumber); 170238742Simp 171238742Simp 172238742Simp/* 173238742Simp * evgpeinit - GPE initialization and update 174238742Simp */ 175238742SimpACPI_STATUS 176238742SimpAcpiEvGpeInitialize ( 177238742Simp void); 178238742Simp 179238742SimpACPI_HW_DEPENDENT_RETURN_VOID ( 180266130Sianvoid 181238742SimpAcpiEvUpdateGpes ( 182238742Simp ACPI_OWNER_ID TableOwnerId)) 183238742Simp 184204431SrajACPI_STATUS 185238742SimpAcpiEvMatchGpeMethod ( 186238742Simp ACPI_HANDLE ObjHandle, 187238742Simp UINT32 Level, 188238742Simp void *Context, 189238742Simp void **ReturnValue); 190238742Simp 191238742Simp 192238742Simp/* 193238742Simp * evgpeutil - GPE utilities 194238742Simp */ 195238742SimpACPI_STATUS 196238742SimpAcpiEvWalkGpeList ( 197238742Simp ACPI_GPE_CALLBACK GpeWalkCallback, 198204433Sraj void *Context); 199204431Sraj 200238742SimpACPI_STATUS 201238742SimpAcpiEvGetGpeDevice ( 202238742Simp ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 203204433Sraj ACPI_GPE_BLOCK_INFO *GpeBlock, 204238742Simp void *Context); 205238742Simp 206238742SimpACPI_STATUS 207238742SimpAcpiEvGetGpeXruptBlock ( 208238742Simp UINT32 InterruptNumber, 209238742Simp ACPI_GPE_XRUPT_INFO **GpeXruptBlock); 210238742Simp 211238742SimpACPI_STATUS 212238742SimpAcpiEvDeleteGpeXrupt ( 213238742Simp ACPI_GPE_XRUPT_INFO *GpeXrupt); 214238742Simp 215204433SrajACPI_STATUS 216238742SimpAcpiEvDeleteGpeHandlers ( 217204433Sraj ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 218238742Simp ACPI_GPE_BLOCK_INFO *GpeBlock, 219204433Sraj void *Context); 220238742Simp 221238742Simp 222238742Simp/* 223238742Simp * evhandler - Address space handling 224238742Simp */ 225238742SimpBOOLEAN 226238742SimpAcpiEvHasDefaultHandler ( 227238742Simp ACPI_NAMESPACE_NODE *Node, 228238742Simp ACPI_ADR_SPACE_TYPE SpaceId); 229238742Simp 230238742SimpACPI_STATUS 231238742SimpAcpiEvInstallRegionHandlers ( 232238742Simp void); 233238742Simp 234238742SimpACPI_STATUS 235238742SimpAcpiEvInstallSpaceHandler ( 236238742Simp ACPI_NAMESPACE_NODE *Node, 237238742Simp ACPI_ADR_SPACE_TYPE SpaceId, 238238742Simp ACPI_ADR_SPACE_HANDLER Handler, 239238742Simp ACPI_ADR_SPACE_SETUP Setup, 240238742Simp void *Context); 241238742Simp 242238742Simp 243238742Simp/* 244238742Simp * evregion - Operation region support 245238742Simp */ 246204433SrajACPI_STATUS 247204431SrajAcpiEvInitializeOpRegions ( 248204433Sraj void); 249204433Sraj 250204433SrajACPI_STATUS 251204433SrajAcpiEvAddressSpaceDispatch ( 252238742Simp ACPI_OPERAND_OBJECT *RegionObj, 253204433Sraj ACPI_OPERAND_OBJECT *FieldObj, 254204433Sraj UINT32 Function, 255204433Sraj UINT32 RegionOffset, 256204433Sraj UINT32 BitWidth, 257204433Sraj UINT64 *Value); 258204433Sraj 259204433SrajACPI_STATUS 260204433SrajAcpiEvAttachRegion ( 261204433Sraj ACPI_OPERAND_OBJECT *HandlerObj, 262204433Sraj ACPI_OPERAND_OBJECT *RegionObj, 263204433Sraj BOOLEAN AcpiNsIsLocked); 264204433Sraj 265238742Simpvoid 266204433SrajAcpiEvDetachRegion ( 267238742Simp ACPI_OPERAND_OBJECT *RegionObj, 268204433Sraj BOOLEAN AcpiNsIsLocked); 269238742Simp 270204433SrajACPI_STATUS 271238742SimpAcpiEvExecuteRegMethods ( 272204433Sraj ACPI_NAMESPACE_NODE *Node, 273204433Sraj ACPI_ADR_SPACE_TYPE SpaceId); 274204433Sraj 275238742SimpACPI_STATUS 276238742SimpAcpiEvExecuteRegMethod ( 277238742Simp ACPI_OPERAND_OBJECT *RegionObj, 278238742Simp UINT32 Function); 279238742Simp 280238742Simp 281238742Simp/* 282238742Simp * evregini - Region initialization and setup 283238742Simp */ 284238742SimpACPI_STATUS 285238742SimpAcpiEvSystemMemoryRegionSetup ( 286204433Sraj ACPI_HANDLE Handle, 287238742Simp UINT32 Function, 288238742Simp void *HandlerContext, 289204433Sraj void **RegionContext); 290204433Sraj 291204433SrajACPI_STATUS 292204433SrajAcpiEvIoSpaceRegionSetup ( 293266130Sian ACPI_HANDLE Handle, 294266130Sian UINT32 Function, 295238742Simp void *HandlerContext, 296266130Sian void **RegionContext); 297204433Sraj 298266130SianACPI_STATUS 299238742SimpAcpiEvPciConfigRegionSetup ( 300266130Sian ACPI_HANDLE Handle, 301266130Sian UINT32 Function, 302266130Sian void *HandlerContext, 303266130Sian void **RegionContext); 304266130Sian 305238742SimpACPI_STATUS 306238742SimpAcpiEvCmosRegionSetup ( 307266130Sian ACPI_HANDLE Handle, 308266130Sian UINT32 Function, 309204433Sraj void *HandlerContext, 310204433Sraj void **RegionContext); 311238742Simp 312204433SrajACPI_STATUS 313266130SianAcpiEvPciBarRegionSetup ( 314204433Sraj ACPI_HANDLE Handle, 315204433Sraj UINT32 Function, 316204433Sraj void *HandlerContext, 317266130Sian void **RegionContext); 318204433Sraj 319266130SianACPI_STATUS 320266130SianAcpiEvDefaultRegionSetup ( 321204433Sraj ACPI_HANDLE Handle, 322 UINT32 Function, 323 void *HandlerContext, 324 void **RegionContext); 325 326ACPI_STATUS 327AcpiEvInitializeRegion ( 328 ACPI_OPERAND_OBJECT *RegionObj, 329 BOOLEAN AcpiNsLocked); 330 331 332/* 333 * evsci - SCI (System Control Interrupt) handling/dispatch 334 */ 335UINT32 ACPI_SYSTEM_XFACE 336AcpiEvGpeXruptHandler ( 337 void *Context); 338 339UINT32 340AcpiEvSciDispatch ( 341 void); 342 343UINT32 344AcpiEvInstallSciHandler ( 345 void); 346 347ACPI_STATUS 348AcpiEvRemoveAllSciHandlers ( 349 void); 350 351ACPI_HW_DEPENDENT_RETURN_VOID ( 352void 353AcpiEvTerminate ( 354 void)) 355 356#endif /* __ACEVENTS_H__ */ 357