acevents.h revision 1.1.1.2 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