xref: /freebsd/sys/contrib/dev/acpica/include/achware.h (revision a159c266a93c3c4f229864954c5f963acd8f60f2)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Name: achware.h -- hardware specific interfaces
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7d244b227SJung-uk Kim /*
8ec3fc72fSJung-uk Kim  * Copyright (C) 2000 - 2012, 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 __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 /*
113*a159c266SJung-uk Kim  * hwsleep - sleep/wake support (Legacy sleep registers)
114*a159c266SJung-uk Kim  */
115*a159c266SJung-uk Kim ACPI_STATUS
116*a159c266SJung-uk Kim AcpiHwLegacySleep (
117*a159c266SJung-uk Kim     UINT8                   SleepState);
118*a159c266SJung-uk Kim 
119*a159c266SJung-uk Kim ACPI_STATUS
120*a159c266SJung-uk Kim AcpiHwLegacyWakePrep (
121*a159c266SJung-uk Kim     UINT8                   SleepState);
122*a159c266SJung-uk Kim 
123*a159c266SJung-uk Kim ACPI_STATUS
124*a159c266SJung-uk Kim AcpiHwLegacyWake (
125*a159c266SJung-uk Kim     UINT8                   SleepState);
126*a159c266SJung-uk Kim 
127*a159c266SJung-uk Kim 
128*a159c266SJung-uk Kim /*
129*a159c266SJung-uk Kim  * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers)
130*a159c266SJung-uk Kim  */
131*a159c266SJung-uk Kim void
132*a159c266SJung-uk Kim AcpiHwExecuteSleepMethod (
133*a159c266SJung-uk Kim     char                    *MethodName,
134*a159c266SJung-uk Kim     UINT32                  IntegerArgument);
135*a159c266SJung-uk Kim 
136*a159c266SJung-uk Kim ACPI_STATUS
137*a159c266SJung-uk Kim AcpiHwExtendedSleep (
138*a159c266SJung-uk Kim     UINT8                   SleepState);
139*a159c266SJung-uk Kim 
140*a159c266SJung-uk Kim ACPI_STATUS
141*a159c266SJung-uk Kim AcpiHwExtendedWakePrep (
142*a159c266SJung-uk Kim     UINT8                   SleepState);
143*a159c266SJung-uk Kim 
144*a159c266SJung-uk Kim ACPI_STATUS
145*a159c266SJung-uk Kim AcpiHwExtendedWake (
146*a159c266SJung-uk Kim     UINT8                   SleepState);
147*a159c266SJung-uk Kim 
148*a159c266SJung-uk Kim 
149*a159c266SJung-uk Kim /*
150a9f12690SJung-uk Kim  * hwvalid - Port I/O with validation
151a9f12690SJung-uk Kim  */
152a9f12690SJung-uk Kim ACPI_STATUS
153a9f12690SJung-uk Kim AcpiHwReadPort (
154a9f12690SJung-uk Kim     ACPI_IO_ADDRESS         Address,
155a9f12690SJung-uk Kim     UINT32                  *Value,
156a9f12690SJung-uk Kim     UINT32                  Width);
157a9f12690SJung-uk Kim 
158a9f12690SJung-uk Kim ACPI_STATUS
159a9f12690SJung-uk Kim AcpiHwWritePort (
160a9f12690SJung-uk Kim     ACPI_IO_ADDRESS         Address,
161a9f12690SJung-uk Kim     UINT32                  Value,
162a9f12690SJung-uk Kim     UINT32                  Width);
163a9f12690SJung-uk Kim 
164a9f12690SJung-uk Kim 
165a9f12690SJung-uk Kim /*
166a9f12690SJung-uk Kim  * hwgpe - GPE support
167a9f12690SJung-uk Kim  */
168a88e22b7SJung-uk Kim UINT32
169a88e22b7SJung-uk Kim AcpiHwGetGpeRegisterBit (
170a88e22b7SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
171a88e22b7SJung-uk Kim     ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo);
172a9f12690SJung-uk Kim 
173a9f12690SJung-uk Kim ACPI_STATUS
174a88e22b7SJung-uk Kim AcpiHwLowSetGpe (
175a88e22b7SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
176a88e22b7SJung-uk Kim     UINT32                  Action);
177a9f12690SJung-uk Kim 
178a9f12690SJung-uk Kim ACPI_STATUS
179a9f12690SJung-uk Kim AcpiHwDisableGpeBlock (
180a9f12690SJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
181a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
182a9f12690SJung-uk Kim     void                    *Context);
183a9f12690SJung-uk Kim 
184a9f12690SJung-uk Kim ACPI_STATUS
185a9f12690SJung-uk Kim AcpiHwClearGpe (
186a9f12690SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
187a9f12690SJung-uk Kim 
188a9f12690SJung-uk Kim ACPI_STATUS
189a9f12690SJung-uk Kim AcpiHwClearGpeBlock (
190a9f12690SJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
191a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
192a9f12690SJung-uk Kim     void                    *Context);
193a9f12690SJung-uk Kim 
194a9f12690SJung-uk Kim ACPI_STATUS
195a9f12690SJung-uk Kim AcpiHwGetGpeStatus (
196a9f12690SJung-uk Kim     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
197a9f12690SJung-uk Kim     ACPI_EVENT_STATUS       *EventStatus);
198a9f12690SJung-uk Kim 
199a9f12690SJung-uk Kim ACPI_STATUS
200a9f12690SJung-uk Kim AcpiHwDisableAllGpes (
201a9f12690SJung-uk Kim     void);
202a9f12690SJung-uk Kim 
203a9f12690SJung-uk Kim ACPI_STATUS
204a9f12690SJung-uk Kim AcpiHwEnableAllRuntimeGpes (
205a9f12690SJung-uk Kim     void);
206a9f12690SJung-uk Kim 
207a9f12690SJung-uk Kim ACPI_STATUS
208a9f12690SJung-uk Kim AcpiHwEnableAllWakeupGpes (
209a9f12690SJung-uk Kim     void);
210a9f12690SJung-uk Kim 
211a9f12690SJung-uk Kim ACPI_STATUS
212a9f12690SJung-uk Kim AcpiHwEnableRuntimeGpeBlock (
213a9f12690SJung-uk Kim     ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
214a9f12690SJung-uk Kim     ACPI_GPE_BLOCK_INFO     *GpeBlock,
215a9f12690SJung-uk Kim     void                    *Context);
216a9f12690SJung-uk Kim 
217a9f12690SJung-uk Kim 
218a9f12690SJung-uk Kim /*
21942fecd12SJung-uk Kim  * hwpci - PCI configuration support
22042fecd12SJung-uk Kim  */
22142fecd12SJung-uk Kim ACPI_STATUS
22242fecd12SJung-uk Kim AcpiHwDerivePciId (
22342fecd12SJung-uk Kim     ACPI_PCI_ID             *PciId,
22442fecd12SJung-uk Kim     ACPI_HANDLE             RootPciDevice,
22542fecd12SJung-uk Kim     ACPI_HANDLE             PciRegion);
22642fecd12SJung-uk Kim 
22742fecd12SJung-uk Kim 
228a9f12690SJung-uk Kim #endif /* __ACHWARE_H__ */
229