167754Smsmith/******************************************************************************
267754Smsmith *
367754Smsmith * Name: acevents.h - Event subcomponent prototypes and defines
467754Smsmith *
567754Smsmith *****************************************************************************/
667754Smsmith
7217365Sjkim/*
8306536Sjkim * Copyright (C) 2000 - 2016, Intel Corp.
970243Smsmith * All rights reserved.
1067754Smsmith *
11217365Sjkim * Redistribution and use in source and binary forms, with or without
12217365Sjkim * modification, are permitted provided that the following conditions
13217365Sjkim * are met:
14217365Sjkim * 1. Redistributions of source code must retain the above copyright
15217365Sjkim *    notice, this list of conditions, and the following disclaimer,
16217365Sjkim *    without modification.
17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20217365Sjkim *    including a substantially similar Disclaimer requirement for further
21217365Sjkim *    binary redistribution.
22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23217365Sjkim *    of any contributors may be used to endorse or promote products derived
24217365Sjkim *    from this software without specific prior written permission.
2567754Smsmith *
26217365Sjkim * Alternatively, this software may be distributed under the terms of the
27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28217365Sjkim * Software Foundation.
2967754Smsmith *
30217365Sjkim * NO WARRANTY
31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
42217365Sjkim */
4367754Smsmith
4467754Smsmith#ifndef __ACEVENTS_H__
4567754Smsmith#define __ACEVENTS_H__
4667754Smsmith
4767754Smsmith
48151937Sjkim/*
49151937Sjkim * evevent
50151937Sjkim */
5167754SmsmithACPI_STATUS
52129684SnjlAcpiEvInitializeEvents (
5367754Smsmith    void);
5467754Smsmith
5591116SmsmithACPI_STATUS
56129684SnjlAcpiEvInstallXruptHandlers (
5791116Smsmith    void);
5867754Smsmith
5967754SmsmithUINT32
6067754SmsmithAcpiEvFixedEventDetect (
6167754Smsmith    void);
6267754Smsmith
6367754Smsmith
6467754Smsmith/*
65151937Sjkim * evmisc
6667754Smsmith */
6799146SiwasakiBOOLEAN
6899146SiwasakiAcpiEvIsNotifyObject (
6999146Siwasaki    ACPI_NAMESPACE_NODE     *Node);
7099146Siwasaki
71220663SjkimUINT32
72220663SjkimAcpiEvGetGpeNumberIndex (
73220663Sjkim    UINT32                  GpeNumber);
74220663Sjkim
7567754SmsmithACPI_STATUS
76220663SjkimAcpiEvQueueNotifyRequest (
77220663Sjkim    ACPI_NAMESPACE_NODE     *Node,
78220663Sjkim    UINT32                  NotifyValue);
79220663Sjkim
80220663Sjkim
81220663Sjkim/*
82220663Sjkim * evglock - Global Lock support
83220663Sjkim */
84220663SjkimACPI_STATUS
85220663SjkimAcpiEvInitGlobalLockHandler (
86220663Sjkim    void);
87220663Sjkim
88231844SjkimACPI_HW_DEPENDENT_RETURN_OK (
89220663SjkimACPI_STATUS
9067754SmsmithAcpiEvAcquireGlobalLock(
91231844Sjkim    UINT16                  Timeout))
9267754Smsmith
93231844SjkimACPI_HW_DEPENDENT_RETURN_OK (
9499679SiwasakiACPI_STATUS
9567754SmsmithAcpiEvReleaseGlobalLock(
96231844Sjkim    void))
9767754Smsmith
9867754SmsmithACPI_STATUS
99220663SjkimAcpiEvRemoveGlobalLockHandler (
10067754Smsmith    void);
10167754Smsmith
10291116Smsmith
10367754Smsmith/*
104207344Sjkim * evgpe - Low-level GPE support
10567754Smsmith */
106207344SjkimUINT32
107207344SjkimAcpiEvGpeDetect (
108207344Sjkim    ACPI_GPE_XRUPT_INFO     *GpeXruptList);
109207344Sjkim
110117521SnjlACPI_STATUS
111209746SjkimAcpiEvUpdateGpeEnableMask (
112206117Sjkim    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
113129684Snjl
114129684SnjlACPI_STATUS
115129684SnjlAcpiEvEnableGpe (
116206117Sjkim    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
117129684Snjl
118216471SjkimACPI_STATUS
119216471SjkimAcpiEvAddGpeReference (
120216471Sjkim    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
121216471Sjkim
122216471SjkimACPI_STATUS
123216471SjkimAcpiEvRemoveGpeReference (
124216471Sjkim    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
125216471Sjkim
126114237SnjlACPI_GPE_EVENT_INFO *
127114237SnjlAcpiEvGetGpeEventInfo (
128117521Snjl    ACPI_HANDLE             GpeDevice,
129114237Snjl    UINT32                  GpeNumber);
130114237Snjl
131206117SjkimACPI_GPE_EVENT_INFO *
132206117SjkimAcpiEvLowGetGpeInfo (
133206117Sjkim    UINT32                  GpeNumber,
134206117Sjkim    ACPI_GPE_BLOCK_INFO     *GpeBlock);
135151937Sjkim
136216471SjkimACPI_STATUS
137216471SjkimAcpiEvFinishGpe (
138216471Sjkim    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
139206117Sjkim
140216471Sjkim
141151937Sjkim/*
142207344Sjkim * evgpeblk - Upper-level GPE block support
143151937Sjkim */
14467754SmsmithACPI_STATUS
145117521SnjlAcpiEvCreateGpeBlock (
146117521Snjl    ACPI_NAMESPACE_NODE     *GpeDevice,
147281075Sdim    UINT64                  Address,
148281075Sdim    UINT8                   SpaceId,
149117521Snjl    UINT32                  RegisterCount,
150281075Sdim    UINT16                  GpeBlockBaseNumber,
151151937Sjkim    UINT32                  InterruptNumber,
152117521Snjl    ACPI_GPE_BLOCK_INFO     **ReturnGpeBlock);
153117521Snjl
154117521SnjlACPI_STATUS
155167802SjkimAcpiEvInitializeGpeBlock (
156216471Sjkim    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
157216471Sjkim    ACPI_GPE_BLOCK_INFO     *GpeBlock,
158216471Sjkim    void                    *Context);
159167802Sjkim
160231844SjkimACPI_HW_DEPENDENT_RETURN_OK (
161167802SjkimACPI_STATUS
162117521SnjlAcpiEvDeleteGpeBlock (
163231844Sjkim    ACPI_GPE_BLOCK_INFO     *GpeBlock))
164117521Snjl
16567754SmsmithUINT32
16667754SmsmithAcpiEvGpeDispatch (
167216471Sjkim    ACPI_NAMESPACE_NODE     *GpeDevice,
168117521Snjl    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
169117521Snjl    UINT32                  GpeNumber);
17067754Smsmith
171245582Sjkim
172207344Sjkim/*
173207344Sjkim * evgpeinit - GPE initialization and update
174207344Sjkim */
175129684SnjlACPI_STATUS
176151937SjkimAcpiEvGpeInitialize (
177151937Sjkim    void);
178151937Sjkim
179231844SjkimACPI_HW_DEPENDENT_RETURN_VOID (
180207344Sjkimvoid
181207344SjkimAcpiEvUpdateGpes (
182231844Sjkim    ACPI_OWNER_ID           TableOwnerId))
183151937Sjkim
184207344SjkimACPI_STATUS
185207344SjkimAcpiEvMatchGpeMethod (
186207344Sjkim    ACPI_HANDLE             ObjHandle,
187207344Sjkim    UINT32                  Level,
188207344Sjkim    void                    *Context,
189207344Sjkim    void                    **ReturnValue);
190207344Sjkim
191245582Sjkim
19267754Smsmith/*
193207344Sjkim * evgpeutil - GPE utilities
194207344Sjkim */
195207344SjkimACPI_STATUS
196207344SjkimAcpiEvWalkGpeList (
197207344Sjkim    ACPI_GPE_CALLBACK       GpeWalkCallback,
198207344Sjkim    void                    *Context);
199207344Sjkim
200216471SjkimACPI_STATUS
201216471SjkimAcpiEvGetGpeDevice (
202216471Sjkim    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
203216471Sjkim    ACPI_GPE_BLOCK_INFO     *GpeBlock,
204216471Sjkim    void                    *Context);
205216471Sjkim
206281075SdimACPI_STATUS
207207344SjkimAcpiEvGetGpeXruptBlock (
208281075Sdim    UINT32                  InterruptNumber,
209281075Sdim    ACPI_GPE_XRUPT_INFO     **GpeXruptBlock);
210207344Sjkim
211207344SjkimACPI_STATUS
212207344SjkimAcpiEvDeleteGpeXrupt (
213207344Sjkim    ACPI_GPE_XRUPT_INFO     *GpeXrupt);
214207344Sjkim
215207344SjkimACPI_STATUS
216207344SjkimAcpiEvDeleteGpeHandlers (
217207344Sjkim    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
218207344Sjkim    ACPI_GPE_BLOCK_INFO     *GpeBlock,
219207344Sjkim    void                    *Context);
220207344Sjkim
221207344Sjkim
222207344Sjkim/*
223245582Sjkim * evhandler - Address space handling
22467754Smsmith */
225306536SjkimACPI_OPERAND_OBJECT *
226306536SjkimAcpiEvFindRegionHandler (
227306536Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId,
228306536Sjkim    ACPI_OPERAND_OBJECT     *HandlerObj);
229306536Sjkim
230245582SjkimBOOLEAN
231245582SjkimAcpiEvHasDefaultHandler (
232245582Sjkim    ACPI_NAMESPACE_NODE     *Node,
233245582Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId);
234245582Sjkim
23577424SmsmithACPI_STATUS
236129684SnjlAcpiEvInstallRegionHandlers (
23767754Smsmith    void);
23867754Smsmith
23967754SmsmithACPI_STATUS
240245582SjkimAcpiEvInstallSpaceHandler (
241245582Sjkim    ACPI_NAMESPACE_NODE     *Node,
242245582Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId,
243245582Sjkim    ACPI_ADR_SPACE_HANDLER  Handler,
244245582Sjkim    ACPI_ADR_SPACE_SETUP    Setup,
245245582Sjkim    void                    *Context);
246245582Sjkim
247245582Sjkim
248245582Sjkim/*
249245582Sjkim * evregion - Operation region support
250245582Sjkim */
251245582SjkimACPI_STATUS
252129684SnjlAcpiEvInitializeOpRegions (
253129684Snjl    void);
254129684Snjl
255129684SnjlACPI_STATUS
25667754SmsmithAcpiEvAddressSpaceDispatch (
257228110Sjkim    ACPI_OPERAND_OBJECT     *RegionObj,
258228110Sjkim    ACPI_OPERAND_OBJECT     *FieldObj,
25967754Smsmith    UINT32                  Function,
260193267Sjkim    UINT32                  RegionOffset,
26167754Smsmith    UINT32                  BitWidth,
262202771Sjkim    UINT64                  *Value);
26367754Smsmith
26467754SmsmithACPI_STATUS
26599679SiwasakiAcpiEvAttachRegion (
26667754Smsmith    ACPI_OPERAND_OBJECT     *HandlerObj,
26767754Smsmith    ACPI_OPERAND_OBJECT     *RegionObj,
26867754Smsmith    BOOLEAN                 AcpiNsIsLocked);
26967754Smsmith
27099679Siwasakivoid
27199679SiwasakiAcpiEvDetachRegion (
272306536Sjkim    ACPI_OPERAND_OBJECT     *RegionObj,
27399679Siwasaki    BOOLEAN                 AcpiNsIsLocked);
27467754Smsmith
275306536Sjkimvoid
276129684SnjlAcpiEvExecuteRegMethods (
277129684Snjl    ACPI_NAMESPACE_NODE     *Node,
278306536Sjkim    ACPI_ADR_SPACE_TYPE     SpaceId,
279306536Sjkim    UINT32                  Function);
280129684Snjl
281129684SnjlACPI_STATUS
282123315SnjlAcpiEvExecuteRegMethod (
283306536Sjkim    ACPI_OPERAND_OBJECT     *RegionObj,
284123315Snjl    UINT32                  Function);
28599679Siwasaki
286123315Snjl
28767754Smsmith/*
288151937Sjkim * evregini - Region initialization and setup
28967754Smsmith */
29067754SmsmithACPI_STATUS
29167754SmsmithAcpiEvSystemMemoryRegionSetup (
29267754Smsmith    ACPI_HANDLE             Handle,
29367754Smsmith    UINT32                  Function,
29467754Smsmith    void                    *HandlerContext,
29567754Smsmith    void                    **RegionContext);
29667754Smsmith
29767754SmsmithACPI_STATUS
29867754SmsmithAcpiEvIoSpaceRegionSetup (
29967754Smsmith    ACPI_HANDLE             Handle,
30067754Smsmith    UINT32                  Function,
30167754Smsmith    void                    *HandlerContext,
30267754Smsmith    void                    **RegionContext);
30367754Smsmith
30467754SmsmithACPI_STATUS
30567754SmsmithAcpiEvPciConfigRegionSetup (
30667754Smsmith    ACPI_HANDLE             Handle,
30767754Smsmith    UINT32                  Function,
30867754Smsmith    void                    *HandlerContext,
30967754Smsmith    void                    **RegionContext);
31067754Smsmith
31167754SmsmithACPI_STATUS
31284491SmsmithAcpiEvCmosRegionSetup (
31384491Smsmith    ACPI_HANDLE             Handle,
31484491Smsmith    UINT32                  Function,
31584491Smsmith    void                    *HandlerContext,
31684491Smsmith    void                    **RegionContext);
31784491Smsmith
31884491SmsmithACPI_STATUS
31984491SmsmithAcpiEvPciBarRegionSetup (
32084491Smsmith    ACPI_HANDLE             Handle,
32184491Smsmith    UINT32                  Function,
32284491Smsmith    void                    *HandlerContext,
32384491Smsmith    void                    **RegionContext);
32484491Smsmith
32584491SmsmithACPI_STATUS
32667754SmsmithAcpiEvDefaultRegionSetup (
32767754Smsmith    ACPI_HANDLE             Handle,
32867754Smsmith    UINT32                  Function,
32967754Smsmith    void                    *HandlerContext,
33067754Smsmith    void                    **RegionContext);
33167754Smsmith
33267754SmsmithACPI_STATUS
33367754SmsmithAcpiEvInitializeRegion (
33467754Smsmith    ACPI_OPERAND_OBJECT     *RegionObj,
33567754Smsmith    BOOLEAN                 AcpiNsLocked);
33667754Smsmith
33767754Smsmith
33867754Smsmith/*
339151937Sjkim * evsci - SCI (System Control Interrupt) handling/dispatch
34067754Smsmith */
341117521SnjlUINT32 ACPI_SYSTEM_XFACE
342117521SnjlAcpiEvGpeXruptHandler (
343117521Snjl    void                    *Context);
344117521Snjl
34567754SmsmithUINT32
346254745SjkimAcpiEvSciDispatch (
347254745Sjkim    void);
348254745Sjkim
349254745SjkimUINT32
35067754SmsmithAcpiEvInstallSciHandler (
35167754Smsmith    void);
35267754Smsmith
35367754SmsmithACPI_STATUS
354254745SjkimAcpiEvRemoveAllSciHandlers (
35567754Smsmith    void);
35667754Smsmith
357231844SjkimACPI_HW_DEPENDENT_RETURN_VOID (
35867754Smsmithvoid
35967754SmsmithAcpiEvTerminate (
360231844Sjkim    void))
36167754Smsmith
36267754Smsmith#endif  /* __ACEVENTS_H__  */
363