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