acevents.h revision 254745
1/******************************************************************************
2 *
3 * Name: acevents.h - Event subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2013, 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    ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
148    UINT32                  RegisterCount,
149    UINT8                   GpeBlockBaseNumber,
150    UINT32                  InterruptNumber,
151    ACPI_GPE_BLOCK_INFO     **ReturnGpeBlock);
152
153ACPI_STATUS
154AcpiEvInitializeGpeBlock (
155    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
156    ACPI_GPE_BLOCK_INFO     *GpeBlock,
157    void                    *Context);
158
159ACPI_HW_DEPENDENT_RETURN_OK (
160ACPI_STATUS
161AcpiEvDeleteGpeBlock (
162    ACPI_GPE_BLOCK_INFO     *GpeBlock))
163
164UINT32
165AcpiEvGpeDispatch (
166    ACPI_NAMESPACE_NODE     *GpeDevice,
167    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
168    UINT32                  GpeNumber);
169
170
171/*
172 * evgpeinit - GPE initialization and update
173 */
174ACPI_STATUS
175AcpiEvGpeInitialize (
176    void);
177
178ACPI_HW_DEPENDENT_RETURN_VOID (
179void
180AcpiEvUpdateGpes (
181    ACPI_OWNER_ID           TableOwnerId))
182
183ACPI_STATUS
184AcpiEvMatchGpeMethod (
185    ACPI_HANDLE             ObjHandle,
186    UINT32                  Level,
187    void                    *Context,
188    void                    **ReturnValue);
189
190
191/*
192 * evgpeutil - GPE utilities
193 */
194ACPI_STATUS
195AcpiEvWalkGpeList (
196    ACPI_GPE_CALLBACK       GpeWalkCallback,
197    void                    *Context);
198
199BOOLEAN
200AcpiEvValidGpeEvent (
201    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
202
203ACPI_STATUS
204AcpiEvGetGpeDevice (
205    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
206    ACPI_GPE_BLOCK_INFO     *GpeBlock,
207    void                    *Context);
208
209ACPI_GPE_XRUPT_INFO *
210AcpiEvGetGpeXruptBlock (
211    UINT32                  InterruptNumber);
212
213ACPI_STATUS
214AcpiEvDeleteGpeXrupt (
215    ACPI_GPE_XRUPT_INFO     *GpeXrupt);
216
217ACPI_STATUS
218AcpiEvDeleteGpeHandlers (
219    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
220    ACPI_GPE_BLOCK_INFO     *GpeBlock,
221    void                    *Context);
222
223
224/*
225 * evhandler - Address space handling
226 */
227BOOLEAN
228AcpiEvHasDefaultHandler (
229    ACPI_NAMESPACE_NODE     *Node,
230    ACPI_ADR_SPACE_TYPE     SpaceId);
231
232ACPI_STATUS
233AcpiEvInstallRegionHandlers (
234    void);
235
236ACPI_STATUS
237AcpiEvInstallSpaceHandler (
238    ACPI_NAMESPACE_NODE     *Node,
239    ACPI_ADR_SPACE_TYPE     SpaceId,
240    ACPI_ADR_SPACE_HANDLER  Handler,
241    ACPI_ADR_SPACE_SETUP    Setup,
242    void                    *Context);
243
244
245/*
246 * evregion - Operation region support
247 */
248ACPI_STATUS
249AcpiEvInitializeOpRegions (
250    void);
251
252ACPI_STATUS
253AcpiEvAddressSpaceDispatch (
254    ACPI_OPERAND_OBJECT     *RegionObj,
255    ACPI_OPERAND_OBJECT     *FieldObj,
256    UINT32                  Function,
257    UINT32                  RegionOffset,
258    UINT32                  BitWidth,
259    UINT64                  *Value);
260
261ACPI_STATUS
262AcpiEvAttachRegion (
263    ACPI_OPERAND_OBJECT     *HandlerObj,
264    ACPI_OPERAND_OBJECT     *RegionObj,
265    BOOLEAN                 AcpiNsIsLocked);
266
267void
268AcpiEvDetachRegion (
269    ACPI_OPERAND_OBJECT    *RegionObj,
270    BOOLEAN                 AcpiNsIsLocked);
271
272ACPI_STATUS
273AcpiEvExecuteRegMethods (
274    ACPI_NAMESPACE_NODE     *Node,
275    ACPI_ADR_SPACE_TYPE     SpaceId);
276
277ACPI_STATUS
278AcpiEvExecuteRegMethod (
279    ACPI_OPERAND_OBJECT    *RegionObj,
280    UINT32                  Function);
281
282
283/*
284 * evregini - Region initialization and setup
285 */
286ACPI_STATUS
287AcpiEvSystemMemoryRegionSetup (
288    ACPI_HANDLE             Handle,
289    UINT32                  Function,
290    void                    *HandlerContext,
291    void                    **RegionContext);
292
293ACPI_STATUS
294AcpiEvIoSpaceRegionSetup (
295    ACPI_HANDLE             Handle,
296    UINT32                  Function,
297    void                    *HandlerContext,
298    void                    **RegionContext);
299
300ACPI_STATUS
301AcpiEvPciConfigRegionSetup (
302    ACPI_HANDLE             Handle,
303    UINT32                  Function,
304    void                    *HandlerContext,
305    void                    **RegionContext);
306
307ACPI_STATUS
308AcpiEvCmosRegionSetup (
309    ACPI_HANDLE             Handle,
310    UINT32                  Function,
311    void                    *HandlerContext,
312    void                    **RegionContext);
313
314ACPI_STATUS
315AcpiEvPciBarRegionSetup (
316    ACPI_HANDLE             Handle,
317    UINT32                  Function,
318    void                    *HandlerContext,
319    void                    **RegionContext);
320
321ACPI_STATUS
322AcpiEvDefaultRegionSetup (
323    ACPI_HANDLE             Handle,
324    UINT32                  Function,
325    void                    *HandlerContext,
326    void                    **RegionContext);
327
328ACPI_STATUS
329AcpiEvInitializeRegion (
330    ACPI_OPERAND_OBJECT     *RegionObj,
331    BOOLEAN                 AcpiNsLocked);
332
333
334/*
335 * evsci - SCI (System Control Interrupt) handling/dispatch
336 */
337UINT32 ACPI_SYSTEM_XFACE
338AcpiEvGpeXruptHandler (
339    void                    *Context);
340
341UINT32
342AcpiEvSciDispatch (
343    void);
344
345UINT32
346AcpiEvInstallSciHandler (
347    void);
348
349ACPI_STATUS
350AcpiEvRemoveAllSciHandlers (
351    void);
352
353ACPI_HW_DEPENDENT_RETURN_VOID (
354void
355AcpiEvTerminate (
356    void))
357
358#endif  /* __ACEVENTS_H__  */
359