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