xref: /freebsd/sys/contrib/dev/acpica/include/acevents.h (revision d052a1cc33ee1c0bed4124f4aa3bec22a6488631)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Name: acevents.h - Event subcomponent prototypes and defines
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7d244b227SJung-uk Kim /*
8d244b227SJung-uk Kim  * Copyright (C) 2000 - 2011, Intel Corp.
9a9f12690SJung-uk Kim  * All rights reserved.
10a9f12690SJung-uk Kim  *
11d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
13d244b227SJung-uk Kim  * are met:
14d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16d244b227SJung-uk Kim  *    without modification.
17d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21d244b227SJung-uk Kim  *    binary redistribution.
22d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24d244b227SJung-uk Kim  *    from this software without specific prior written permission.
25a9f12690SJung-uk Kim  *
26d244b227SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28d244b227SJung-uk Kim  * Software Foundation.
29a9f12690SJung-uk Kim  *
30d244b227SJung-uk Kim  * NO WARRANTY
31d244b227SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32d244b227SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33d244b227SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34d244b227SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35d244b227SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36d244b227SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37d244b227SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38d244b227SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39d244b227SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40d244b227SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41d244b227SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42d244b227SJung-uk Kim  */
43a9f12690SJung-uk Kim 
44a9f12690SJung-uk Kim #ifndef __ACEVENTS_H__
45a9f12690SJung-uk Kim #define __ACEVENTS_H__
46a9f12690SJung-uk Kim 
47a9f12690SJung-uk Kim 
48a9f12690SJung-uk Kim /*
49a9f12690SJung-uk Kim  * evevent
50a9f12690SJung-uk Kim  */
51a9f12690SJung-uk Kim ACPI_STATUS
52a9f12690SJung-uk Kim AcpiEvInitializeEvents (
53a9f12690SJung-uk Kim     void);
54a9f12690SJung-uk Kim 
55a9f12690SJung-uk Kim ACPI_STATUS
56a9f12690SJung-uk Kim AcpiEvInstallXruptHandlers (
57a9f12690SJung-uk Kim     void);
58a9f12690SJung-uk Kim 
59a9f12690SJung-uk Kim UINT32
60a9f12690SJung-uk Kim AcpiEvFixedEventDetect (
61a9f12690SJung-uk Kim     void);
62a9f12690SJung-uk Kim 
63a9f12690SJung-uk Kim 
64a9f12690SJung-uk Kim /*
65a9f12690SJung-uk Kim  * evmisc
66a9f12690SJung-uk Kim  */
67a9f12690SJung-uk Kim BOOLEAN
68a9f12690SJung-uk Kim AcpiEvIsNotifyObject (
69a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node);
70a9f12690SJung-uk Kim 
71*d052a1ccSJung-uk Kim UINT32
72*d052a1ccSJung-uk Kim AcpiEvGetGpeNumberIndex (
73*d052a1ccSJung-uk Kim     UINT32                  GpeNumber);
74*d052a1ccSJung-uk Kim 
75*d052a1ccSJung-uk Kim ACPI_STATUS
76*d052a1ccSJung-uk Kim AcpiEvQueueNotifyRequest (
77*d052a1ccSJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
78*d052a1ccSJung-uk Kim     UINT32                  NotifyValue);
79*d052a1ccSJung-uk Kim 
80*d052a1ccSJung-uk Kim 
81*d052a1ccSJung-uk Kim /*
82*d052a1ccSJung-uk Kim  * evglock - Global Lock support
83*d052a1ccSJung-uk Kim  */
84*d052a1ccSJung-uk Kim ACPI_STATUS
85*d052a1ccSJung-uk Kim AcpiEvInitGlobalLockHandler (
86*d052a1ccSJung-uk Kim     void);
87*d052a1ccSJung-uk Kim 
88a9f12690SJung-uk Kim ACPI_STATUS
89a9f12690SJung-uk Kim AcpiEvAcquireGlobalLock(
90a9f12690SJung-uk Kim     UINT16                  Timeout);
91a9f12690SJung-uk Kim 
92a9f12690SJung-uk Kim ACPI_STATUS
93a9f12690SJung-uk Kim AcpiEvReleaseGlobalLock(
94a9f12690SJung-uk Kim     void);
95a9f12690SJung-uk Kim 
96a9f12690SJung-uk Kim ACPI_STATUS
97*d052a1ccSJung-uk Kim AcpiEvRemoveGlobalLockHandler (
98a9f12690SJung-uk Kim     void);
99a9f12690SJung-uk Kim 
100a9f12690SJung-uk Kim 
101a9f12690SJung-uk Kim /*
1023f5e024cSJung-uk Kim  * evgpe - Low-level GPE support
103a9f12690SJung-uk Kim  */
1043f5e024cSJung-uk Kim UINT32
1053f5e024cSJung-uk Kim AcpiEvGpeDetect (
1063f5e024cSJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptList);
1073f5e024cSJung-uk Kim 
108a9f12690SJung-uk Kim ACPI_STATUS
109a88e22b7SJung-uk Kim AcpiEvUpdateGpeEnableMask (
1108c8be05fSJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
111a9f12690SJung-uk Kim 
112a9f12690SJung-uk Kim ACPI_STATUS
113a9f12690SJung-uk Kim AcpiEvEnableGpe (
1148c8be05fSJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
115a9f12690SJung-uk Kim 
1165a77b11bSJung-uk Kim ACPI_STATUS
1175a77b11bSJung-uk Kim AcpiEvAddGpeReference (
1185a77b11bSJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
1195a77b11bSJung-uk Kim 
1205a77b11bSJung-uk Kim ACPI_STATUS
1215a77b11bSJung-uk Kim AcpiEvRemoveGpeReference (
1225a77b11bSJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
1235a77b11bSJung-uk Kim 
124a9f12690SJung-uk Kim ACPI_GPE_EVENT_INFO *
125a9f12690SJung-uk Kim AcpiEvGetGpeEventInfo (
126a9f12690SJung-uk Kim     ACPI_HANDLE             GpeDevice,
127a9f12690SJung-uk Kim     UINT32                  GpeNumber);
128a9f12690SJung-uk Kim 
1298c8be05fSJung-uk Kim ACPI_GPE_EVENT_INFO *
1308c8be05fSJung-uk Kim AcpiEvLowGetGpeInfo (
1318c8be05fSJung-uk Kim     UINT32                  GpeNumber,
1328c8be05fSJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock);
1338c8be05fSJung-uk Kim 
1345a77b11bSJung-uk Kim ACPI_STATUS
1355a77b11bSJung-uk Kim AcpiEvFinishGpe (
1365a77b11bSJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
1375a77b11bSJung-uk Kim 
138a9f12690SJung-uk Kim 
139a9f12690SJung-uk Kim /*
1403f5e024cSJung-uk Kim  * evgpeblk - Upper-level GPE block support
141a9f12690SJung-uk Kim  */
142a9f12690SJung-uk Kim ACPI_STATUS
143a9f12690SJung-uk Kim AcpiEvCreateGpeBlock (
144a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *GpeDevice,
145a9f12690SJung-uk Kim     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
146a9f12690SJung-uk Kim     UINT32                  RegisterCount,
147a9f12690SJung-uk Kim     UINT8                   GpeBlockBaseNumber,
148a9f12690SJung-uk Kim     UINT32                  InterruptNumber,
149a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     **ReturnGpeBlock);
150a9f12690SJung-uk Kim 
151a9f12690SJung-uk Kim ACPI_STATUS
152a9f12690SJung-uk Kim AcpiEvInitializeGpeBlock (
1535a77b11bSJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
1545a77b11bSJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
1555a77b11bSJung-uk Kim     void                    *Context);
156a9f12690SJung-uk Kim 
157a9f12690SJung-uk Kim ACPI_STATUS
158a9f12690SJung-uk Kim AcpiEvDeleteGpeBlock (
159a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock);
160a9f12690SJung-uk Kim 
161a9f12690SJung-uk Kim UINT32
162a9f12690SJung-uk Kim AcpiEvGpeDispatch (
1635a77b11bSJung-uk Kim     ACPI_NAMESPACE_NODE     *GpeDevice,
164a9f12690SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
165a9f12690SJung-uk Kim     UINT32                  GpeNumber);
166a9f12690SJung-uk Kim 
1673f5e024cSJung-uk Kim /*
1683f5e024cSJung-uk Kim  * evgpeinit - GPE initialization and update
1693f5e024cSJung-uk Kim  */
170a9f12690SJung-uk Kim ACPI_STATUS
171a9f12690SJung-uk Kim AcpiEvGpeInitialize (
172a9f12690SJung-uk Kim     void);
173a9f12690SJung-uk Kim 
1743f5e024cSJung-uk Kim void
1753f5e024cSJung-uk Kim AcpiEvUpdateGpes (
1763f5e024cSJung-uk Kim     ACPI_OWNER_ID           TableOwnerId);
1773f5e024cSJung-uk Kim 
1783f5e024cSJung-uk Kim ACPI_STATUS
1793f5e024cSJung-uk Kim AcpiEvMatchGpeMethod (
1803f5e024cSJung-uk Kim     ACPI_HANDLE             ObjHandle,
1813f5e024cSJung-uk Kim     UINT32                  Level,
1823f5e024cSJung-uk Kim     void                    *Context,
1833f5e024cSJung-uk Kim     void                    **ReturnValue);
1843f5e024cSJung-uk Kim 
1853f5e024cSJung-uk Kim /*
1863f5e024cSJung-uk Kim  * evgpeutil - GPE utilities
1873f5e024cSJung-uk Kim  */
1883f5e024cSJung-uk Kim ACPI_STATUS
1893f5e024cSJung-uk Kim AcpiEvWalkGpeList (
1903f5e024cSJung-uk Kim     ACPI_GPE_CALLBACK       GpeWalkCallback,
1913f5e024cSJung-uk Kim     void                    *Context);
1923f5e024cSJung-uk Kim 
1933f5e024cSJung-uk Kim BOOLEAN
1943f5e024cSJung-uk Kim AcpiEvValidGpeEvent (
1953f5e024cSJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
1963f5e024cSJung-uk Kim 
1975a77b11bSJung-uk Kim ACPI_STATUS
1985a77b11bSJung-uk Kim AcpiEvGetGpeDevice (
1995a77b11bSJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
2005a77b11bSJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
2015a77b11bSJung-uk Kim     void                    *Context);
2025a77b11bSJung-uk Kim 
2033f5e024cSJung-uk Kim ACPI_GPE_XRUPT_INFO *
2043f5e024cSJung-uk Kim AcpiEvGetGpeXruptBlock (
2053f5e024cSJung-uk Kim     UINT32                  InterruptNumber);
2063f5e024cSJung-uk Kim 
2073f5e024cSJung-uk Kim ACPI_STATUS
2083f5e024cSJung-uk Kim AcpiEvDeleteGpeXrupt (
2093f5e024cSJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXrupt);
2103f5e024cSJung-uk Kim 
2113f5e024cSJung-uk Kim ACPI_STATUS
2123f5e024cSJung-uk Kim AcpiEvDeleteGpeHandlers (
2133f5e024cSJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
2143f5e024cSJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
2153f5e024cSJung-uk Kim     void                    *Context);
2163f5e024cSJung-uk Kim 
217a9f12690SJung-uk Kim 
218a9f12690SJung-uk Kim /*
219a9f12690SJung-uk Kim  * evregion - Address Space handling
220a9f12690SJung-uk Kim  */
221a9f12690SJung-uk Kim ACPI_STATUS
222a9f12690SJung-uk Kim AcpiEvInstallRegionHandlers (
223a9f12690SJung-uk Kim     void);
224a9f12690SJung-uk Kim 
225a9f12690SJung-uk Kim ACPI_STATUS
226a9f12690SJung-uk Kim AcpiEvInitializeOpRegions (
227a9f12690SJung-uk Kim     void);
228a9f12690SJung-uk Kim 
229a9f12690SJung-uk Kim ACPI_STATUS
230a9f12690SJung-uk Kim AcpiEvAddressSpaceDispatch (
231a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT    *RegionObj,
232a9f12690SJung-uk Kim     UINT32                  Function,
233a9f12690SJung-uk Kim     UINT32                  RegionOffset,
234a9f12690SJung-uk Kim     UINT32                  BitWidth,
2359a179dd8SJung-uk Kim     UINT64                  *Value);
236a9f12690SJung-uk Kim 
237a9f12690SJung-uk Kim ACPI_STATUS
238a9f12690SJung-uk Kim AcpiEvAttachRegion (
239a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *HandlerObj,
240a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *RegionObj,
241a9f12690SJung-uk Kim     BOOLEAN                 AcpiNsIsLocked);
242a9f12690SJung-uk Kim 
243a9f12690SJung-uk Kim void
244a9f12690SJung-uk Kim AcpiEvDetachRegion (
245a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT    *RegionObj,
246a9f12690SJung-uk Kim     BOOLEAN                 AcpiNsIsLocked);
247a9f12690SJung-uk Kim 
248a9f12690SJung-uk Kim ACPI_STATUS
249a9f12690SJung-uk Kim AcpiEvInstallSpaceHandler (
250a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
251a9f12690SJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
252a9f12690SJung-uk Kim     ACPI_ADR_SPACE_HANDLER  Handler,
253a9f12690SJung-uk Kim     ACPI_ADR_SPACE_SETUP    Setup,
254a9f12690SJung-uk Kim     void                    *Context);
255a9f12690SJung-uk Kim 
256a9f12690SJung-uk Kim ACPI_STATUS
257a9f12690SJung-uk Kim AcpiEvExecuteRegMethods (
258a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
259a9f12690SJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId);
260a9f12690SJung-uk Kim 
261a9f12690SJung-uk Kim ACPI_STATUS
262a9f12690SJung-uk Kim AcpiEvExecuteRegMethod (
263a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT    *RegionObj,
264a9f12690SJung-uk Kim     UINT32                  Function);
265a9f12690SJung-uk Kim 
266a9f12690SJung-uk Kim 
267a9f12690SJung-uk Kim /*
268a9f12690SJung-uk Kim  * evregini - Region initialization and setup
269a9f12690SJung-uk Kim  */
270a9f12690SJung-uk Kim ACPI_STATUS
271a9f12690SJung-uk Kim AcpiEvSystemMemoryRegionSetup (
272a9f12690SJung-uk Kim     ACPI_HANDLE             Handle,
273a9f12690SJung-uk Kim     UINT32                  Function,
274a9f12690SJung-uk Kim     void                    *HandlerContext,
275a9f12690SJung-uk Kim     void                    **RegionContext);
276a9f12690SJung-uk Kim 
277a9f12690SJung-uk Kim ACPI_STATUS
278a9f12690SJung-uk Kim AcpiEvIoSpaceRegionSetup (
279a9f12690SJung-uk Kim     ACPI_HANDLE             Handle,
280a9f12690SJung-uk Kim     UINT32                  Function,
281a9f12690SJung-uk Kim     void                    *HandlerContext,
282a9f12690SJung-uk Kim     void                    **RegionContext);
283a9f12690SJung-uk Kim 
284a9f12690SJung-uk Kim ACPI_STATUS
285a9f12690SJung-uk Kim AcpiEvPciConfigRegionSetup (
286a9f12690SJung-uk Kim     ACPI_HANDLE             Handle,
287a9f12690SJung-uk Kim     UINT32                  Function,
288a9f12690SJung-uk Kim     void                    *HandlerContext,
289a9f12690SJung-uk Kim     void                    **RegionContext);
290a9f12690SJung-uk Kim 
291a9f12690SJung-uk Kim ACPI_STATUS
292a9f12690SJung-uk Kim AcpiEvCmosRegionSetup (
293a9f12690SJung-uk Kim     ACPI_HANDLE             Handle,
294a9f12690SJung-uk Kim     UINT32                  Function,
295a9f12690SJung-uk Kim     void                    *HandlerContext,
296a9f12690SJung-uk Kim     void                    **RegionContext);
297a9f12690SJung-uk Kim 
298a9f12690SJung-uk Kim ACPI_STATUS
299a9f12690SJung-uk Kim AcpiEvPciBarRegionSetup (
300a9f12690SJung-uk Kim     ACPI_HANDLE             Handle,
301a9f12690SJung-uk Kim     UINT32                  Function,
302a9f12690SJung-uk Kim     void                    *HandlerContext,
303a9f12690SJung-uk Kim     void                    **RegionContext);
304a9f12690SJung-uk Kim 
305a9f12690SJung-uk Kim ACPI_STATUS
306a9f12690SJung-uk Kim AcpiEvDefaultRegionSetup (
307a9f12690SJung-uk Kim     ACPI_HANDLE             Handle,
308a9f12690SJung-uk Kim     UINT32                  Function,
309a9f12690SJung-uk Kim     void                    *HandlerContext,
310a9f12690SJung-uk Kim     void                    **RegionContext);
311a9f12690SJung-uk Kim 
312a9f12690SJung-uk Kim ACPI_STATUS
313a9f12690SJung-uk Kim AcpiEvInitializeRegion (
314a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *RegionObj,
315a9f12690SJung-uk Kim     BOOLEAN                 AcpiNsLocked);
316a9f12690SJung-uk Kim 
317a9f12690SJung-uk Kim 
318a9f12690SJung-uk Kim /*
319a9f12690SJung-uk Kim  * evsci - SCI (System Control Interrupt) handling/dispatch
320a9f12690SJung-uk Kim  */
321a9f12690SJung-uk Kim UINT32 ACPI_SYSTEM_XFACE
322a9f12690SJung-uk Kim AcpiEvGpeXruptHandler (
323a9f12690SJung-uk Kim     void                    *Context);
324a9f12690SJung-uk Kim 
325a9f12690SJung-uk Kim UINT32
326a9f12690SJung-uk Kim AcpiEvInstallSciHandler (
327a9f12690SJung-uk Kim     void);
328a9f12690SJung-uk Kim 
329a9f12690SJung-uk Kim ACPI_STATUS
330a9f12690SJung-uk Kim AcpiEvRemoveSciHandler (
331a9f12690SJung-uk Kim     void);
332a9f12690SJung-uk Kim 
333a9f12690SJung-uk Kim UINT32
334a9f12690SJung-uk Kim AcpiEvInitializeSCI (
335a9f12690SJung-uk Kim     UINT32                  ProgramSCI);
336a9f12690SJung-uk Kim 
337a9f12690SJung-uk Kim void
338a9f12690SJung-uk Kim AcpiEvTerminate (
339a9f12690SJung-uk Kim     void);
340a9f12690SJung-uk Kim 
341a9f12690SJung-uk Kim 
342a9f12690SJung-uk Kim #endif  /* __ACEVENTS_H__  */
343