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