xref: /freebsd/sys/contrib/dev/acpica/include/achware.h (revision d244b2279c2f63fc930fa1c11a6033b7119d426a)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Name: achware.h -- hardware specific interfaces
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7*d244b227SJung-uk Kim /*
8*d244b227SJung-uk Kim  * Copyright (C) 2000 - 2011, Intel Corp.
9a9f12690SJung-uk Kim  * All rights reserved.
10a9f12690SJung-uk Kim  *
11*d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12*d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
13*d244b227SJung-uk Kim  * are met:
14*d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15*d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16*d244b227SJung-uk Kim  *    without modification.
17*d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19*d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20*d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21*d244b227SJung-uk Kim  *    binary redistribution.
22*d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23*d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24*d244b227SJung-uk Kim  *    from this software without specific prior written permission.
25a9f12690SJung-uk Kim  *
26*d244b227SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27*d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28*d244b227SJung-uk Kim  * Software Foundation.
29a9f12690SJung-uk Kim  *
30*d244b227SJung-uk Kim  * NO WARRANTY
31*d244b227SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32*d244b227SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33*d244b227SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34*d244b227SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35*d244b227SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36*d244b227SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37*d244b227SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*d244b227SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*d244b227SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40*d244b227SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41*d244b227SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42*d244b227SJung-uk Kim  */
43a9f12690SJung-uk Kim 
44a9f12690SJung-uk Kim #ifndef __ACHWARE_H__
45a9f12690SJung-uk Kim #define __ACHWARE_H__
46a9f12690SJung-uk Kim 
47a9f12690SJung-uk Kim 
48a9f12690SJung-uk Kim /* Values for the _SST predefined method */
49a9f12690SJung-uk Kim 
50a9f12690SJung-uk Kim #define ACPI_SST_INDICATOR_OFF  0
51a9f12690SJung-uk Kim #define ACPI_SST_WORKING        1
52a9f12690SJung-uk Kim #define ACPI_SST_WAKING         2
53a9f12690SJung-uk Kim #define ACPI_SST_SLEEPING       3
54a9f12690SJung-uk Kim #define ACPI_SST_SLEEP_CONTEXT  4
55a9f12690SJung-uk Kim 
56a9f12690SJung-uk Kim 
57a9f12690SJung-uk Kim /*
58a9f12690SJung-uk Kim  * hwacpi - high level functions
59a9f12690SJung-uk Kim  */
60a9f12690SJung-uk Kim ACPI_STATUS
61a9f12690SJung-uk Kim AcpiHwSetMode (
62a9f12690SJung-uk Kim     UINT32                  Mode);
63a9f12690SJung-uk Kim 
64a9f12690SJung-uk Kim UINT32
65a9f12690SJung-uk Kim AcpiHwGetMode (
66a9f12690SJung-uk Kim     void);
67a9f12690SJung-uk Kim 
68a9f12690SJung-uk Kim 
69a9f12690SJung-uk Kim /*
70a9f12690SJung-uk Kim  * hwregs - ACPI Register I/O
71a9f12690SJung-uk Kim  */
72d6dd1baeSJung-uk Kim ACPI_STATUS
73d6dd1baeSJung-uk Kim AcpiHwValidateRegister (
74d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    *Reg,
75d6dd1baeSJung-uk Kim     UINT8                   MaxBitWidth,
76d6dd1baeSJung-uk Kim     UINT64                  *Address);
77d6dd1baeSJung-uk Kim 
78d6dd1baeSJung-uk Kim ACPI_STATUS
79d6dd1baeSJung-uk Kim AcpiHwRead (
80d6dd1baeSJung-uk Kim     UINT32                  *Value,
81d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    *Reg);
82d6dd1baeSJung-uk Kim 
83d6dd1baeSJung-uk Kim ACPI_STATUS
84d6dd1baeSJung-uk Kim AcpiHwWrite (
85d6dd1baeSJung-uk Kim     UINT32                  Value,
86d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    *Reg);
87d6dd1baeSJung-uk Kim 
88a9f12690SJung-uk Kim ACPI_BIT_REGISTER_INFO *
89a9f12690SJung-uk Kim AcpiHwGetBitRegisterInfo (
90a9f12690SJung-uk Kim     UINT32                  RegisterId);
91a9f12690SJung-uk Kim 
92a9f12690SJung-uk Kim ACPI_STATUS
93a9f12690SJung-uk Kim AcpiHwWritePm1Control (
94a9f12690SJung-uk Kim     UINT32                  Pm1aControl,
95a9f12690SJung-uk Kim     UINT32                  Pm1bControl);
96a9f12690SJung-uk Kim 
97a9f12690SJung-uk Kim ACPI_STATUS
98a9f12690SJung-uk Kim AcpiHwRegisterRead (
99a9f12690SJung-uk Kim     UINT32                  RegisterId,
100a9f12690SJung-uk Kim     UINT32                  *ReturnValue);
101a9f12690SJung-uk Kim 
102a9f12690SJung-uk Kim ACPI_STATUS
103a9f12690SJung-uk Kim AcpiHwRegisterWrite (
104a9f12690SJung-uk Kim     UINT32                  RegisterId,
105a9f12690SJung-uk Kim     UINT32                  Value);
106a9f12690SJung-uk Kim 
107a9f12690SJung-uk Kim ACPI_STATUS
108a9f12690SJung-uk Kim AcpiHwClearAcpiStatus (
109a9f12690SJung-uk Kim     void);
110a9f12690SJung-uk Kim 
111a9f12690SJung-uk Kim 
112a9f12690SJung-uk Kim /*
113a9f12690SJung-uk Kim  * hwvalid - Port I/O with validation
114a9f12690SJung-uk Kim  */
115a9f12690SJung-uk Kim ACPI_STATUS
116a9f12690SJung-uk Kim AcpiHwReadPort (
117a9f12690SJung-uk Kim     ACPI_IO_ADDRESS         Address,
118a9f12690SJung-uk Kim     UINT32                  *Value,
119a9f12690SJung-uk Kim     UINT32                  Width);
120a9f12690SJung-uk Kim 
121a9f12690SJung-uk Kim ACPI_STATUS
122a9f12690SJung-uk Kim AcpiHwWritePort (
123a9f12690SJung-uk Kim     ACPI_IO_ADDRESS         Address,
124a9f12690SJung-uk Kim     UINT32                  Value,
125a9f12690SJung-uk Kim     UINT32                  Width);
126a9f12690SJung-uk Kim 
127a9f12690SJung-uk Kim 
128a9f12690SJung-uk Kim /*
129a9f12690SJung-uk Kim  * hwgpe - GPE support
130a9f12690SJung-uk Kim  */
131a88e22b7SJung-uk Kim UINT32
132a88e22b7SJung-uk Kim AcpiHwGetGpeRegisterBit (
133a88e22b7SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
134a88e22b7SJung-uk Kim     ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo);
135a9f12690SJung-uk Kim 
136a9f12690SJung-uk Kim ACPI_STATUS
137a88e22b7SJung-uk Kim AcpiHwLowSetGpe (
138a88e22b7SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
139a88e22b7SJung-uk Kim     UINT32                  Action);
140a9f12690SJung-uk Kim 
141a9f12690SJung-uk Kim ACPI_STATUS
142a9f12690SJung-uk Kim AcpiHwDisableGpeBlock (
143a9f12690SJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
144a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
145a9f12690SJung-uk Kim     void                    *Context);
146a9f12690SJung-uk Kim 
147a9f12690SJung-uk Kim ACPI_STATUS
148a9f12690SJung-uk Kim AcpiHwClearGpe (
149a9f12690SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
150a9f12690SJung-uk Kim 
151a9f12690SJung-uk Kim ACPI_STATUS
152a9f12690SJung-uk Kim AcpiHwClearGpeBlock (
153a9f12690SJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
154a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
155a9f12690SJung-uk Kim     void                    *Context);
156a9f12690SJung-uk Kim 
157a9f12690SJung-uk Kim ACPI_STATUS
158a9f12690SJung-uk Kim AcpiHwGetGpeStatus (
159a9f12690SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
160a9f12690SJung-uk Kim     ACPI_EVENT_STATUS       *EventStatus);
161a9f12690SJung-uk Kim 
162a9f12690SJung-uk Kim ACPI_STATUS
163a9f12690SJung-uk Kim AcpiHwDisableAllGpes (
164a9f12690SJung-uk Kim     void);
165a9f12690SJung-uk Kim 
166a9f12690SJung-uk Kim ACPI_STATUS
167a9f12690SJung-uk Kim AcpiHwEnableAllRuntimeGpes (
168a9f12690SJung-uk Kim     void);
169a9f12690SJung-uk Kim 
170a9f12690SJung-uk Kim ACPI_STATUS
171a9f12690SJung-uk Kim AcpiHwEnableAllWakeupGpes (
172a9f12690SJung-uk Kim     void);
173a9f12690SJung-uk Kim 
174a9f12690SJung-uk Kim ACPI_STATUS
175a9f12690SJung-uk Kim AcpiHwEnableRuntimeGpeBlock (
176a9f12690SJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
177a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
178a9f12690SJung-uk Kim     void                    *Context);
179a9f12690SJung-uk Kim 
180a9f12690SJung-uk Kim 
181a9f12690SJung-uk Kim /*
18242fecd12SJung-uk Kim  * hwpci - PCI configuration support
18342fecd12SJung-uk Kim  */
18442fecd12SJung-uk Kim ACPI_STATUS
18542fecd12SJung-uk Kim AcpiHwDerivePciId (
18642fecd12SJung-uk Kim     ACPI_PCI_ID             *PciId,
18742fecd12SJung-uk Kim     ACPI_HANDLE             RootPciDevice,
18842fecd12SJung-uk Kim     ACPI_HANDLE             PciRegion);
18942fecd12SJung-uk Kim 
19042fecd12SJung-uk Kim 
19142fecd12SJung-uk Kim /*
192a9f12690SJung-uk Kim  * hwtimer - ACPI Timer prototypes
193a9f12690SJung-uk Kim  */
194a9f12690SJung-uk Kim ACPI_STATUS
195a9f12690SJung-uk Kim AcpiGetTimerResolution (
196a9f12690SJung-uk Kim     UINT32                  *Resolution);
197a9f12690SJung-uk Kim 
198a9f12690SJung-uk Kim ACPI_STATUS
199a9f12690SJung-uk Kim AcpiGetTimer (
200a9f12690SJung-uk Kim     UINT32                  *Ticks);
201a9f12690SJung-uk Kim 
202a9f12690SJung-uk Kim ACPI_STATUS
203a9f12690SJung-uk Kim AcpiGetTimerDuration (
204a9f12690SJung-uk Kim     UINT32                  StartTicks,
205a9f12690SJung-uk Kim     UINT32                  EndTicks,
206a9f12690SJung-uk Kim     UINT32                  *TimeElapsed);
207a9f12690SJung-uk Kim 
208a9f12690SJung-uk Kim 
209a9f12690SJung-uk Kim #endif /* __ACHWARE_H__ */
210