achware.h revision 229989
1178825Sdfr/******************************************************************************
2233294Sstas *
3233294Sstas * Name: achware.h -- hardware specific interfaces
4233294Sstas *
5178825Sdfr *****************************************************************************/
6233294Sstas
7233294Sstas/*
8233294Sstas * Copyright (C) 2000 - 2012, Intel Corp.
9178825Sdfr * All rights reserved.
10233294Sstas *
11233294Sstas * Redistribution and use in source and binary forms, with or without
12178825Sdfr * modification, are permitted provided that the following conditions
13233294Sstas * are met:
14233294Sstas * 1. Redistributions of source code must retain the above copyright
15233294Sstas *    notice, this list of conditions, and the following disclaimer,
16178825Sdfr *    without modification.
17233294Sstas * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18233294Sstas *    substantially similar to the "NO WARRANTY" disclaimer below
19233294Sstas *    ("Disclaimer") and any redistribution must be conditioned upon
20178825Sdfr *    including a substantially similar Disclaimer requirement for further
21233294Sstas *    binary redistribution.
22233294Sstas * 3. Neither the names of the above-listed copyright holders nor the names
23233294Sstas *    of any contributors may be used to endorse or promote products derived
24233294Sstas *    from this software without specific prior written permission.
25233294Sstas *
26233294Sstas * Alternatively, this software may be distributed under the terms of the
27233294Sstas * GNU General Public License ("GPL") version 2 as published by the Free
28233294Sstas * Software Foundation.
29233294Sstas *
30233294Sstas * NO WARRANTY
31233294Sstas * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32178825Sdfr * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33178825Sdfr * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34178825Sdfr * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35178825Sdfr * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36178825Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37178825Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38178825Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39178825Sdfr * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40178825Sdfr * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41178825Sdfr * POSSIBILITY OF SUCH DAMAGES.
42178825Sdfr */
43233294Sstas
44233294Sstas#ifndef __ACHWARE_H__
45178825Sdfr#define __ACHWARE_H__
46178825Sdfr
47178825Sdfr
48178825Sdfr/* Values for the _SST predefined method */
49178825Sdfr
50178825Sdfr#define ACPI_SST_INDICATOR_OFF  0
51178825Sdfr#define ACPI_SST_WORKING        1
52178825Sdfr#define ACPI_SST_WAKING         2
53178825Sdfr#define ACPI_SST_SLEEPING       3
54178825Sdfr#define ACPI_SST_SLEEP_CONTEXT  4
55178825Sdfr
56178825Sdfr
57178825Sdfr/*
58178825Sdfr * hwacpi - high level functions
59178825Sdfr */
60178825SdfrACPI_STATUS
61178825SdfrAcpiHwSetMode (
62178825Sdfr    UINT32                  Mode);
63178825Sdfr
64178825SdfrUINT32
65178825SdfrAcpiHwGetMode (
66178825Sdfr    void);
67178825Sdfr
68178825Sdfr
69233294Sstas/*
70178825Sdfr * hwregs - ACPI Register I/O
71178825Sdfr */
72178825SdfrACPI_STATUS
73178825SdfrAcpiHwValidateRegister (
74178825Sdfr    ACPI_GENERIC_ADDRESS    *Reg,
75178825Sdfr    UINT8                   MaxBitWidth,
76178825Sdfr    UINT64                  *Address);
77233294Sstas
78178825SdfrACPI_STATUS
79178825SdfrAcpiHwRead (
80178825Sdfr    UINT32                  *Value,
81178825Sdfr    ACPI_GENERIC_ADDRESS    *Reg);
82178825Sdfr
83178825SdfrACPI_STATUS
84178825SdfrAcpiHwWrite (
85178825Sdfr    UINT32                  Value,
86233294Sstas    ACPI_GENERIC_ADDRESS    *Reg);
87178825Sdfr
88233294SstasACPI_BIT_REGISTER_INFO *
89178825SdfrAcpiHwGetBitRegisterInfo (
90178825Sdfr    UINT32                  RegisterId);
91178825Sdfr
92178825SdfrACPI_STATUS
93178825SdfrAcpiHwWritePm1Control (
94233294Sstas    UINT32                  Pm1aControl,
95178825Sdfr    UINT32                  Pm1bControl);
96233294Sstas
97178825SdfrACPI_STATUS
98178825SdfrAcpiHwRegisterRead (
99178825Sdfr    UINT32                  RegisterId,
100233294Sstas    UINT32                  *ReturnValue);
101178825Sdfr
102178825SdfrACPI_STATUS
103178825SdfrAcpiHwRegisterWrite (
104178825Sdfr    UINT32                  RegisterId,
105178825Sdfr    UINT32                  Value);
106178825Sdfr
107178825SdfrACPI_STATUS
108178825SdfrAcpiHwClearAcpiStatus (
109178825Sdfr    void);
110178825Sdfr
111178825Sdfr
112178825Sdfr/*
113178825Sdfr * hwvalid - Port I/O with validation
114233294Sstas */
115178825SdfrACPI_STATUS
116178825SdfrAcpiHwReadPort (
117178825Sdfr    ACPI_IO_ADDRESS         Address,
118    UINT32                  *Value,
119    UINT32                  Width);
120
121ACPI_STATUS
122AcpiHwWritePort (
123    ACPI_IO_ADDRESS         Address,
124    UINT32                  Value,
125    UINT32                  Width);
126
127
128/*
129 * hwgpe - GPE support
130 */
131UINT32
132AcpiHwGetGpeRegisterBit (
133    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
134    ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo);
135
136ACPI_STATUS
137AcpiHwLowSetGpe (
138    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
139    UINT32                  Action);
140
141ACPI_STATUS
142AcpiHwDisableGpeBlock (
143    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
144    ACPI_GPE_BLOCK_INFO     *GpeBlock,
145    void                    *Context);
146
147ACPI_STATUS
148AcpiHwClearGpe (
149    ACPI_GPE_EVENT_INFO     *GpeEventInfo);
150
151ACPI_STATUS
152AcpiHwClearGpeBlock (
153    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
154    ACPI_GPE_BLOCK_INFO     *GpeBlock,
155    void                    *Context);
156
157ACPI_STATUS
158AcpiHwGetGpeStatus (
159    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
160    ACPI_EVENT_STATUS       *EventStatus);
161
162ACPI_STATUS
163AcpiHwDisableAllGpes (
164    void);
165
166ACPI_STATUS
167AcpiHwEnableAllRuntimeGpes (
168    void);
169
170ACPI_STATUS
171AcpiHwEnableAllWakeupGpes (
172    void);
173
174ACPI_STATUS
175AcpiHwEnableRuntimeGpeBlock (
176    ACPI_GPE_XRUPT_INFO     *GpeXruptInfo,
177    ACPI_GPE_BLOCK_INFO     *GpeBlock,
178    void                    *Context);
179
180
181/*
182 * hwpci - PCI configuration support
183 */
184ACPI_STATUS
185AcpiHwDerivePciId (
186    ACPI_PCI_ID             *PciId,
187    ACPI_HANDLE             RootPciDevice,
188    ACPI_HANDLE             PciRegion);
189
190
191/*
192 * hwtimer - ACPI Timer prototypes
193 */
194ACPI_STATUS
195AcpiGetTimerResolution (
196    UINT32                  *Resolution);
197
198ACPI_STATUS
199AcpiGetTimer (
200    UINT32                  *Ticks);
201
202ACPI_STATUS
203AcpiGetTimerDuration (
204    UINT32                  StartTicks,
205    UINT32                  EndTicks,
206    UINT32                  *TimeElapsed);
207
208
209#endif /* __ACHWARE_H__ */
210