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