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