1 /****************************************************************************** 2 * 3 * Name: acevents.h - Event subcomponent prototypes and defines 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2011, 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 __ACEVENTS_H__ 45 #define __ACEVENTS_H__ 46 47 48 /* 49 * evevent 50 */ 51 ACPI_STATUS 52 AcpiEvInitializeEvents ( 53 void); 54 55 ACPI_STATUS 56 AcpiEvInstallXruptHandlers ( 57 void); 58 59 UINT32 60 AcpiEvFixedEventDetect ( 61 void); 62 63 64 /* 65 * evmisc 66 */ 67 BOOLEAN 68 AcpiEvIsNotifyObject ( 69 ACPI_NAMESPACE_NODE *Node); 70 71 UINT32 72 AcpiEvGetGpeNumberIndex ( 73 UINT32 GpeNumber); 74 75 ACPI_STATUS 76 AcpiEvQueueNotifyRequest ( 77 ACPI_NAMESPACE_NODE *Node, 78 UINT32 NotifyValue); 79 80 81 /* 82 * evglock - Global Lock support 83 */ 84 ACPI_STATUS 85 AcpiEvInitGlobalLockHandler ( 86 void); 87 88 ACPI_STATUS 89 AcpiEvAcquireGlobalLock( 90 UINT16 Timeout); 91 92 ACPI_STATUS 93 AcpiEvReleaseGlobalLock( 94 void); 95 96 ACPI_STATUS 97 AcpiEvRemoveGlobalLockHandler ( 98 void); 99 100 101 /* 102 * evgpe - Low-level GPE support 103 */ 104 UINT32 105 AcpiEvGpeDetect ( 106 ACPI_GPE_XRUPT_INFO *GpeXruptList); 107 108 ACPI_STATUS 109 AcpiEvUpdateGpeEnableMask ( 110 ACPI_GPE_EVENT_INFO *GpeEventInfo); 111 112 ACPI_STATUS 113 AcpiEvEnableGpe ( 114 ACPI_GPE_EVENT_INFO *GpeEventInfo); 115 116 ACPI_STATUS 117 AcpiEvAddGpeReference ( 118 ACPI_GPE_EVENT_INFO *GpeEventInfo); 119 120 ACPI_STATUS 121 AcpiEvRemoveGpeReference ( 122 ACPI_GPE_EVENT_INFO *GpeEventInfo); 123 124 ACPI_GPE_EVENT_INFO * 125 AcpiEvGetGpeEventInfo ( 126 ACPI_HANDLE GpeDevice, 127 UINT32 GpeNumber); 128 129 ACPI_GPE_EVENT_INFO * 130 AcpiEvLowGetGpeInfo ( 131 UINT32 GpeNumber, 132 ACPI_GPE_BLOCK_INFO *GpeBlock); 133 134 ACPI_STATUS 135 AcpiEvFinishGpe ( 136 ACPI_GPE_EVENT_INFO *GpeEventInfo); 137 138 139 /* 140 * evgpeblk - Upper-level GPE block support 141 */ 142 ACPI_STATUS 143 AcpiEvCreateGpeBlock ( 144 ACPI_NAMESPACE_NODE *GpeDevice, 145 ACPI_GENERIC_ADDRESS *GpeBlockAddress, 146 UINT32 RegisterCount, 147 UINT8 GpeBlockBaseNumber, 148 UINT32 InterruptNumber, 149 ACPI_GPE_BLOCK_INFO **ReturnGpeBlock); 150 151 ACPI_STATUS 152 AcpiEvInitializeGpeBlock ( 153 ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 154 ACPI_GPE_BLOCK_INFO *GpeBlock, 155 void *Context); 156 157 ACPI_STATUS 158 AcpiEvDeleteGpeBlock ( 159 ACPI_GPE_BLOCK_INFO *GpeBlock); 160 161 UINT32 162 AcpiEvGpeDispatch ( 163 ACPI_NAMESPACE_NODE *GpeDevice, 164 ACPI_GPE_EVENT_INFO *GpeEventInfo, 165 UINT32 GpeNumber); 166 167 /* 168 * evgpeinit - GPE initialization and update 169 */ 170 ACPI_STATUS 171 AcpiEvGpeInitialize ( 172 void); 173 174 void 175 AcpiEvUpdateGpes ( 176 ACPI_OWNER_ID TableOwnerId); 177 178 ACPI_STATUS 179 AcpiEvMatchGpeMethod ( 180 ACPI_HANDLE ObjHandle, 181 UINT32 Level, 182 void *Context, 183 void **ReturnValue); 184 185 /* 186 * evgpeutil - GPE utilities 187 */ 188 ACPI_STATUS 189 AcpiEvWalkGpeList ( 190 ACPI_GPE_CALLBACK GpeWalkCallback, 191 void *Context); 192 193 BOOLEAN 194 AcpiEvValidGpeEvent ( 195 ACPI_GPE_EVENT_INFO *GpeEventInfo); 196 197 ACPI_STATUS 198 AcpiEvGetGpeDevice ( 199 ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 200 ACPI_GPE_BLOCK_INFO *GpeBlock, 201 void *Context); 202 203 ACPI_GPE_XRUPT_INFO * 204 AcpiEvGetGpeXruptBlock ( 205 UINT32 InterruptNumber); 206 207 ACPI_STATUS 208 AcpiEvDeleteGpeXrupt ( 209 ACPI_GPE_XRUPT_INFO *GpeXrupt); 210 211 ACPI_STATUS 212 AcpiEvDeleteGpeHandlers ( 213 ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 214 ACPI_GPE_BLOCK_INFO *GpeBlock, 215 void *Context); 216 217 218 /* 219 * evregion - Address Space handling 220 */ 221 ACPI_STATUS 222 AcpiEvInstallRegionHandlers ( 223 void); 224 225 ACPI_STATUS 226 AcpiEvInitializeOpRegions ( 227 void); 228 229 ACPI_STATUS 230 AcpiEvAddressSpaceDispatch ( 231 ACPI_OPERAND_OBJECT *RegionObj, 232 ACPI_OPERAND_OBJECT *FieldObj, 233 UINT32 Function, 234 UINT32 RegionOffset, 235 UINT32 BitWidth, 236 UINT64 *Value); 237 238 ACPI_STATUS 239 AcpiEvAttachRegion ( 240 ACPI_OPERAND_OBJECT *HandlerObj, 241 ACPI_OPERAND_OBJECT *RegionObj, 242 BOOLEAN AcpiNsIsLocked); 243 244 void 245 AcpiEvDetachRegion ( 246 ACPI_OPERAND_OBJECT *RegionObj, 247 BOOLEAN AcpiNsIsLocked); 248 249 ACPI_STATUS 250 AcpiEvInstallSpaceHandler ( 251 ACPI_NAMESPACE_NODE *Node, 252 ACPI_ADR_SPACE_TYPE SpaceId, 253 ACPI_ADR_SPACE_HANDLER Handler, 254 ACPI_ADR_SPACE_SETUP Setup, 255 void *Context); 256 257 ACPI_STATUS 258 AcpiEvExecuteRegMethods ( 259 ACPI_NAMESPACE_NODE *Node, 260 ACPI_ADR_SPACE_TYPE SpaceId); 261 262 ACPI_STATUS 263 AcpiEvExecuteRegMethod ( 264 ACPI_OPERAND_OBJECT *RegionObj, 265 UINT32 Function); 266 267 268 /* 269 * evregini - Region initialization and setup 270 */ 271 ACPI_STATUS 272 AcpiEvSystemMemoryRegionSetup ( 273 ACPI_HANDLE Handle, 274 UINT32 Function, 275 void *HandlerContext, 276 void **RegionContext); 277 278 ACPI_STATUS 279 AcpiEvIoSpaceRegionSetup ( 280 ACPI_HANDLE Handle, 281 UINT32 Function, 282 void *HandlerContext, 283 void **RegionContext); 284 285 ACPI_STATUS 286 AcpiEvPciConfigRegionSetup ( 287 ACPI_HANDLE Handle, 288 UINT32 Function, 289 void *HandlerContext, 290 void **RegionContext); 291 292 ACPI_STATUS 293 AcpiEvCmosRegionSetup ( 294 ACPI_HANDLE Handle, 295 UINT32 Function, 296 void *HandlerContext, 297 void **RegionContext); 298 299 ACPI_STATUS 300 AcpiEvPciBarRegionSetup ( 301 ACPI_HANDLE Handle, 302 UINT32 Function, 303 void *HandlerContext, 304 void **RegionContext); 305 306 ACPI_STATUS 307 AcpiEvDefaultRegionSetup ( 308 ACPI_HANDLE Handle, 309 UINT32 Function, 310 void *HandlerContext, 311 void **RegionContext); 312 313 ACPI_STATUS 314 AcpiEvInitializeRegion ( 315 ACPI_OPERAND_OBJECT *RegionObj, 316 BOOLEAN AcpiNsLocked); 317 318 319 /* 320 * evsci - SCI (System Control Interrupt) handling/dispatch 321 */ 322 UINT32 ACPI_SYSTEM_XFACE 323 AcpiEvGpeXruptHandler ( 324 void *Context); 325 326 UINT32 327 AcpiEvInstallSciHandler ( 328 void); 329 330 ACPI_STATUS 331 AcpiEvRemoveSciHandler ( 332 void); 333 334 UINT32 335 AcpiEvInitializeSCI ( 336 UINT32 ProgramSCI); 337 338 void 339 AcpiEvTerminate ( 340 void); 341 342 343 #endif /* __ACEVENTS_H__ */ 344