acevents.h revision 281075
1204431Sraj/******************************************************************************
2204431Sraj *
3204431Sraj * Name: acevents.h - Event subcomponent prototypes and defines
4204431Sraj *
5204431Sraj *****************************************************************************/
6204431Sraj
7204431Sraj/*
8204431Sraj * Copyright (C) 2000 - 2015, Intel Corp.
9204431Sraj * All rights reserved.
10204431Sraj *
11204431Sraj * Redistribution and use in source and binary forms, with or without
12204431Sraj * modification, are permitted provided that the following conditions
13204431Sraj * are met:
14204431Sraj * 1. Redistributions of source code must retain the above copyright
15204431Sraj *    notice, this list of conditions, and the following disclaimer,
16204431Sraj *    without modification.
17204431Sraj * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18204431Sraj *    substantially similar to the "NO WARRANTY" disclaimer below
19204431Sraj *    ("Disclaimer") and any redistribution must be conditioned upon
20204433Sraj *    including a substantially similar Disclaimer requirement for further
21204433Sraj *    binary redistribution.
22204433Sraj * 3. Neither the names of the above-listed copyright holders nor the names
23204433Sraj *    of any contributors may be used to endorse or promote products derived
24204431Sraj *    from this software without specific prior written permission.
25204431Sraj *
26204431Sraj * Alternatively, this software may be distributed under the terms of the
27238742Simp * GNU General Public License ("GPL") version 2 as published by the Free
28238742Simp * Software Foundation.
29238742Simp *
30238742Simp * NO WARRANTY
31238742Simp * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32204433Sraj * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33238742Simp * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34238742Simp * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35204431Sraj * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36204433Sraj * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37238742Simp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38238742Simp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39238742Simp * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40204433Sraj * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41238742Simp * POSSIBILITY OF SUCH DAMAGES.
42238742Simp */
43238742Simp
44204433Sraj#ifndef __ACEVENTS_H__
45238742Simp#define __ACEVENTS_H__
46238742Simp
47238742Simp
48238742Simp/*
49238742Simp * evevent
50238742Simp */
51204433SrajACPI_STATUS
52238742SimpAcpiEvInitializeEvents (
53238742Simp    void);
54238742Simp
55238742SimpACPI_STATUS
56238742SimpAcpiEvInstallXruptHandlers (
57238742Simp    void);
58238742Simp
59238742SimpUINT32
60238742SimpAcpiEvFixedEventDetect (
61238742Simp    void);
62238742Simp
63238742Simp
64238742Simp/*
65238742Simp * evmisc
66238742Simp */
67238742SimpBOOLEAN
68238742SimpAcpiEvIsNotifyObject (
69238742Simp    ACPI_NAMESPACE_NODE     *Node);
70238742Simp
71238742SimpUINT32
72204431SrajAcpiEvGetGpeNumberIndex (
73204431Sraj    UINT32                  GpeNumber);
74204431Sraj
75238742SimpACPI_STATUS
76204433SrajAcpiEvQueueNotifyRequest (
77238742Simp    ACPI_NAMESPACE_NODE     *Node,
78238742Simp    UINT32                  NotifyValue);
79204431Sraj
80238742Simp
81238742Simp/*
82204431Sraj * evglock - Global Lock support
83238742Simp */
84204431SrajACPI_STATUS
85204431SrajAcpiEvInitGlobalLockHandler (
86238742Simp    void);
87204431Sraj
88204431SrajACPI_HW_DEPENDENT_RETURN_OK (
89238742SimpACPI_STATUS
90238742SimpAcpiEvAcquireGlobalLock(
91238742Simp    UINT16                  Timeout))
92238742Simp
93238742SimpACPI_HW_DEPENDENT_RETURN_OK (
94238742SimpACPI_STATUS
95238742SimpAcpiEvReleaseGlobalLock(
96238742Simp    void))
97238742Simp
98238742SimpACPI_STATUS
99204431SrajAcpiEvRemoveGlobalLockHandler (
100238742Simp    void);
101238742Simp
102238742Simp
103204431Sraj/*
104238742Simp * evgpe - Low-level GPE support
105238742Simp */
106238742SimpUINT32
107238742SimpAcpiEvGpeDetect (
108238742Simp    ACPI_GPE_XRUPT_INFO     *GpeXruptList);
109204431Sraj
110238742SimpACPI_STATUS
111238742SimpAcpiEvUpdateGpeEnableMask (
112238742Simp    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
113204431Sraj
114238742SimpACPI_STATUS
115238742SimpAcpiEvEnableGpe (
116204431Sraj    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
117238742Simp
118238742SimpACPI_STATUS
119238742SimpAcpiEvAddGpeReference (
120238742Simp    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
121204431Sraj
122204431SrajACPI_STATUS
123238742SimpAcpiEvRemoveGpeReference (
124238742Simp    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
125238742Simp
126238742SimpACPI_GPE_EVENT_INFO *
127238742SimpAcpiEvGetGpeEventInfo (
128238742Simp    ACPI_HANDLE             GpeDevice,
129238742Simp    UINT32                  GpeNumber);
130204431Sraj
131204431SrajACPI_GPE_EVENT_INFO *
132238742SimpAcpiEvLowGetGpeInfo (
133238742Simp    UINT32                  GpeNumber,
134204431Sraj    ACPI_GPE_BLOCK_INFO     *GpeBlock);
135238742Simp
136238742SimpACPI_STATUS
137238742SimpAcpiEvFinishGpe (
138238742Simp    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
139204431Sraj
140238742Simp
141238742Simp/*
142204431Sraj * evgpeblk - Upper-level GPE block support
143238742Simp */
144238742SimpACPI_STATUS
145238742SimpAcpiEvCreateGpeBlock (
146204431Sraj    ACPI_NAMESPACE_NODE     *GpeDevice,
147238742Simp    UINT64                  Address,
148238742Simp    UINT8                   SpaceId,
149204431Sraj    UINT32                  RegisterCount,
150238742Simp    UINT16                  GpeBlockBaseNumber,
151204431Sraj    UINT32                  InterruptNumber,
152238742Simp    ACPI_GPE_BLOCK_INFO     **ReturnGpeBlock);
153238742Simp
154238742SimpACPI_STATUS
155238742SimpAcpiEvInitializeGpeBlock (
156238742Simp    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
157238742Simp    ACPI_GPE_BLOCK_INFO     *GpeBlock,
158238742Simp    void                    *Context);
159238742Simp
160204431SrajACPI_HW_DEPENDENT_RETURN_OK (
161204431SrajACPI_STATUS
162266130SianAcpiEvDeleteGpeBlock (
163238742Simp    ACPI_GPE_BLOCK_INFO     *GpeBlock))
164238742Simp
165204433SrajUINT32
166238742SimpAcpiEvGpeDispatch (
167238742Simp    ACPI_NAMESPACE_NODE     *GpeDevice,
168238742Simp    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
169238742Simp    UINT32                  GpeNumber);
170238742Simp
171238742Simp
172238742Simp/*
173238742Simp * evgpeinit - GPE initialization and update
174238742Simp */
175238742SimpACPI_STATUS
176238742SimpAcpiEvGpeInitialize (
177238742Simp    void);
178238742Simp
179238742SimpACPI_HW_DEPENDENT_RETURN_VOID (
180266130Sianvoid
181238742SimpAcpiEvUpdateGpes (
182238742Simp    ACPI_OWNER_ID           TableOwnerId))
183238742Simp
184204431SrajACPI_STATUS
185238742SimpAcpiEvMatchGpeMethod (
186238742Simp    ACPI_HANDLE             ObjHandle,
187238742Simp    UINT32                  Level,
188238742Simp    void                    *Context,
189238742Simp    void                    **ReturnValue);
190238742Simp
191238742Simp
192238742Simp/*
193238742Simp * evgpeutil - GPE utilities
194238742Simp */
195238742SimpACPI_STATUS
196238742SimpAcpiEvWalkGpeList (
197238742Simp    ACPI_GPE_CALLBACK       GpeWalkCallback,
198204433Sraj    void                    *Context);
199204431Sraj
200238742SimpACPI_STATUS
201238742SimpAcpiEvGetGpeDevice (
202238742Simp    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
203204433Sraj    ACPI_GPE_BLOCK_INFO     *GpeBlock,
204238742Simp    void                    *Context);
205238742Simp
206238742SimpACPI_STATUS
207238742SimpAcpiEvGetGpeXruptBlock (
208238742Simp    UINT32                  InterruptNumber,
209238742Simp    ACPI_GPE_XRUPT_INFO     **GpeXruptBlock);
210238742Simp
211238742SimpACPI_STATUS
212238742SimpAcpiEvDeleteGpeXrupt (
213238742Simp    ACPI_GPE_XRUPT_INFO     *GpeXrupt);
214238742Simp
215204433SrajACPI_STATUS
216238742SimpAcpiEvDeleteGpeHandlers (
217204433Sraj    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
218238742Simp    ACPI_GPE_BLOCK_INFO     *GpeBlock,
219204433Sraj    void                    *Context);
220238742Simp
221238742Simp
222238742Simp/*
223238742Simp * evhandler - Address space handling
224238742Simp */
225238742SimpBOOLEAN
226238742SimpAcpiEvHasDefaultHandler (
227238742Simp    ACPI_NAMESPACE_NODE     *Node,
228238742Simp    ACPI_ADR_SPACE_TYPE     SpaceId);
229238742Simp
230238742SimpACPI_STATUS
231238742SimpAcpiEvInstallRegionHandlers (
232238742Simp    void);
233238742Simp
234238742SimpACPI_STATUS
235238742SimpAcpiEvInstallSpaceHandler (
236238742Simp    ACPI_NAMESPACE_NODE     *Node,
237238742Simp    ACPI_ADR_SPACE_TYPE     SpaceId,
238238742Simp    ACPI_ADR_SPACE_HANDLER  Handler,
239238742Simp    ACPI_ADR_SPACE_SETUP    Setup,
240238742Simp    void                    *Context);
241238742Simp
242238742Simp
243238742Simp/*
244238742Simp * evregion - Operation region support
245238742Simp */
246204433SrajACPI_STATUS
247204431SrajAcpiEvInitializeOpRegions (
248204433Sraj    void);
249204433Sraj
250204433SrajACPI_STATUS
251204433SrajAcpiEvAddressSpaceDispatch (
252238742Simp    ACPI_OPERAND_OBJECT     *RegionObj,
253204433Sraj    ACPI_OPERAND_OBJECT     *FieldObj,
254204433Sraj    UINT32                  Function,
255204433Sraj    UINT32                  RegionOffset,
256204433Sraj    UINT32                  BitWidth,
257204433Sraj    UINT64                  *Value);
258204433Sraj
259204433SrajACPI_STATUS
260204433SrajAcpiEvAttachRegion (
261204433Sraj    ACPI_OPERAND_OBJECT     *HandlerObj,
262204433Sraj    ACPI_OPERAND_OBJECT     *RegionObj,
263204433Sraj    BOOLEAN                 AcpiNsIsLocked);
264204433Sraj
265238742Simpvoid
266204433SrajAcpiEvDetachRegion (
267238742Simp    ACPI_OPERAND_OBJECT    *RegionObj,
268204433Sraj    BOOLEAN                 AcpiNsIsLocked);
269238742Simp
270204433SrajACPI_STATUS
271238742SimpAcpiEvExecuteRegMethods (
272204433Sraj    ACPI_NAMESPACE_NODE     *Node,
273204433Sraj    ACPI_ADR_SPACE_TYPE     SpaceId);
274204433Sraj
275238742SimpACPI_STATUS
276238742SimpAcpiEvExecuteRegMethod (
277238742Simp    ACPI_OPERAND_OBJECT    *RegionObj,
278238742Simp    UINT32                  Function);
279238742Simp
280238742Simp
281238742Simp/*
282238742Simp * evregini - Region initialization and setup
283238742Simp */
284238742SimpACPI_STATUS
285238742SimpAcpiEvSystemMemoryRegionSetup (
286204433Sraj    ACPI_HANDLE             Handle,
287238742Simp    UINT32                  Function,
288238742Simp    void                    *HandlerContext,
289204433Sraj    void                    **RegionContext);
290204433Sraj
291204433SrajACPI_STATUS
292204433SrajAcpiEvIoSpaceRegionSetup (
293266130Sian    ACPI_HANDLE             Handle,
294266130Sian    UINT32                  Function,
295238742Simp    void                    *HandlerContext,
296266130Sian    void                    **RegionContext);
297204433Sraj
298266130SianACPI_STATUS
299238742SimpAcpiEvPciConfigRegionSetup (
300266130Sian    ACPI_HANDLE             Handle,
301266130Sian    UINT32                  Function,
302266130Sian    void                    *HandlerContext,
303266130Sian    void                    **RegionContext);
304266130Sian
305238742SimpACPI_STATUS
306238742SimpAcpiEvCmosRegionSetup (
307266130Sian    ACPI_HANDLE             Handle,
308266130Sian    UINT32                  Function,
309204433Sraj    void                    *HandlerContext,
310204433Sraj    void                    **RegionContext);
311238742Simp
312204433SrajACPI_STATUS
313266130SianAcpiEvPciBarRegionSetup (
314204433Sraj    ACPI_HANDLE             Handle,
315204433Sraj    UINT32                  Function,
316204433Sraj    void                    *HandlerContext,
317266130Sian    void                    **RegionContext);
318204433Sraj
319266130SianACPI_STATUS
320266130SianAcpiEvDefaultRegionSetup (
321204433Sraj    ACPI_HANDLE             Handle,
322    UINT32                  Function,
323    void                    *HandlerContext,
324    void                    **RegionContext);
325
326ACPI_STATUS
327AcpiEvInitializeRegion (
328    ACPI_OPERAND_OBJECT     *RegionObj,
329    BOOLEAN                 AcpiNsLocked);
330
331
332/*
333 * evsci - SCI (System Control Interrupt) handling/dispatch
334 */
335UINT32 ACPI_SYSTEM_XFACE
336AcpiEvGpeXruptHandler (
337    void                    *Context);
338
339UINT32
340AcpiEvSciDispatch (
341    void);
342
343UINT32
344AcpiEvInstallSciHandler (
345    void);
346
347ACPI_STATUS
348AcpiEvRemoveAllSciHandlers (
349    void);
350
351ACPI_HW_DEPENDENT_RETURN_VOID (
352void
353AcpiEvTerminate (
354    void))
355
356#endif  /* __ACEVENTS_H__  */
357