acpiosxf.h revision 1.3.2.2 1 1.3.2.2 bouyer
2 1.3.2.2 bouyer /******************************************************************************
3 1.3.2.2 bouyer *
4 1.3.2.2 bouyer * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These
5 1.3.2.2 bouyer * interfaces must be implemented by OSL to interface the
6 1.3.2.2 bouyer * ACPI components to the host operating system.
7 1.3.2.2 bouyer *
8 1.3.2.2 bouyer *****************************************************************************/
9 1.3.2.2 bouyer
10 1.3.2.2 bouyer
11 1.3.2.2 bouyer /*
12 1.3.2.2 bouyer * Copyright (C) 2000 - 2011, Intel Corp.
13 1.3.2.2 bouyer * All rights reserved.
14 1.3.2.2 bouyer *
15 1.3.2.2 bouyer * Redistribution and use in source and binary forms, with or without
16 1.3.2.2 bouyer * modification, are permitted provided that the following conditions
17 1.3.2.2 bouyer * are met:
18 1.3.2.2 bouyer * 1. Redistributions of source code must retain the above copyright
19 1.3.2.2 bouyer * notice, this list of conditions, and the following disclaimer,
20 1.3.2.2 bouyer * without modification.
21 1.3.2.2 bouyer * 2. Redistributions in binary form must reproduce at minimum a disclaimer
22 1.3.2.2 bouyer * substantially similar to the "NO WARRANTY" disclaimer below
23 1.3.2.2 bouyer * ("Disclaimer") and any redistribution must be conditioned upon
24 1.3.2.2 bouyer * including a substantially similar Disclaimer requirement for further
25 1.3.2.2 bouyer * binary redistribution.
26 1.3.2.2 bouyer * 3. Neither the names of the above-listed copyright holders nor the names
27 1.3.2.2 bouyer * of any contributors may be used to endorse or promote products derived
28 1.3.2.2 bouyer * from this software without specific prior written permission.
29 1.3.2.2 bouyer *
30 1.3.2.2 bouyer * Alternatively, this software may be distributed under the terms of the
31 1.3.2.2 bouyer * GNU General Public License ("GPL") version 2 as published by the Free
32 1.3.2.2 bouyer * Software Foundation.
33 1.3.2.2 bouyer *
34 1.3.2.2 bouyer * NO WARRANTY
35 1.3.2.2 bouyer * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
36 1.3.2.2 bouyer * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
37 1.3.2.2 bouyer * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
38 1.3.2.2 bouyer * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
39 1.3.2.2 bouyer * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
40 1.3.2.2 bouyer * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
41 1.3.2.2 bouyer * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
42 1.3.2.2 bouyer * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
43 1.3.2.2 bouyer * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
44 1.3.2.2 bouyer * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
45 1.3.2.2 bouyer * POSSIBILITY OF SUCH DAMAGES.
46 1.3.2.2 bouyer */
47 1.3.2.2 bouyer
48 1.3.2.2 bouyer #ifndef __ACPIOSXF_H__
49 1.3.2.2 bouyer #define __ACPIOSXF_H__
50 1.3.2.2 bouyer
51 1.3.2.2 bouyer #include "platform/acenv.h"
52 1.3.2.2 bouyer #include "actypes.h"
53 1.3.2.2 bouyer
54 1.3.2.2 bouyer
55 1.3.2.2 bouyer /* Types for AcpiOsExecute */
56 1.3.2.2 bouyer
57 1.3.2.2 bouyer typedef enum
58 1.3.2.2 bouyer {
59 1.3.2.2 bouyer OSL_GLOBAL_LOCK_HANDLER,
60 1.3.2.2 bouyer OSL_NOTIFY_HANDLER,
61 1.3.2.2 bouyer OSL_GPE_HANDLER,
62 1.3.2.2 bouyer OSL_DEBUGGER_THREAD,
63 1.3.2.2 bouyer OSL_EC_POLL_HANDLER,
64 1.3.2.2 bouyer OSL_EC_BURST_HANDLER
65 1.3.2.2 bouyer
66 1.3.2.2 bouyer } ACPI_EXECUTE_TYPE;
67 1.3.2.2 bouyer
68 1.3.2.2 bouyer #define ACPI_NO_UNIT_LIMIT ((UINT32) -1)
69 1.3.2.2 bouyer #define ACPI_MUTEX_SEM 1
70 1.3.2.2 bouyer
71 1.3.2.2 bouyer
72 1.3.2.2 bouyer /* Functions for AcpiOsSignal */
73 1.3.2.2 bouyer
74 1.3.2.2 bouyer #define ACPI_SIGNAL_FATAL 0
75 1.3.2.2 bouyer #define ACPI_SIGNAL_BREAKPOINT 1
76 1.3.2.2 bouyer
77 1.3.2.2 bouyer typedef struct acpi_signal_fatal_info
78 1.3.2.2 bouyer {
79 1.3.2.2 bouyer UINT32 Type;
80 1.3.2.2 bouyer UINT32 Code;
81 1.3.2.2 bouyer UINT32 Argument;
82 1.3.2.2 bouyer
83 1.3.2.2 bouyer } ACPI_SIGNAL_FATAL_INFO;
84 1.3.2.2 bouyer
85 1.3.2.2 bouyer
86 1.3.2.2 bouyer /*
87 1.3.2.2 bouyer * OSL Initialization and shutdown primitives
88 1.3.2.2 bouyer */
89 1.3.2.2 bouyer ACPI_STATUS
90 1.3.2.2 bouyer AcpiOsInitialize (
91 1.3.2.2 bouyer void);
92 1.3.2.2 bouyer
93 1.3.2.2 bouyer ACPI_STATUS
94 1.3.2.2 bouyer AcpiOsTerminate (
95 1.3.2.2 bouyer void);
96 1.3.2.2 bouyer
97 1.3.2.2 bouyer
98 1.3.2.2 bouyer /*
99 1.3.2.2 bouyer * ACPI Table interfaces
100 1.3.2.2 bouyer */
101 1.3.2.2 bouyer ACPI_PHYSICAL_ADDRESS
102 1.3.2.2 bouyer AcpiOsGetRootPointer (
103 1.3.2.2 bouyer void);
104 1.3.2.2 bouyer
105 1.3.2.2 bouyer ACPI_STATUS
106 1.3.2.2 bouyer AcpiOsPredefinedOverride (
107 1.3.2.2 bouyer const ACPI_PREDEFINED_NAMES *InitVal,
108 1.3.2.2 bouyer ACPI_STRING *NewVal);
109 1.3.2.2 bouyer
110 1.3.2.2 bouyer ACPI_STATUS
111 1.3.2.2 bouyer AcpiOsTableOverride (
112 1.3.2.2 bouyer ACPI_TABLE_HEADER *ExistingTable,
113 1.3.2.2 bouyer ACPI_TABLE_HEADER **NewTable);
114 1.3.2.2 bouyer
115 1.3.2.2 bouyer
116 1.3.2.2 bouyer /*
117 1.3.2.2 bouyer * Spinlock primitives
118 1.3.2.2 bouyer */
119 1.3.2.2 bouyer ACPI_STATUS
120 1.3.2.2 bouyer AcpiOsCreateLock (
121 1.3.2.2 bouyer ACPI_SPINLOCK *OutHandle);
122 1.3.2.2 bouyer
123 1.3.2.2 bouyer void
124 1.3.2.2 bouyer AcpiOsDeleteLock (
125 1.3.2.2 bouyer ACPI_SPINLOCK Handle);
126 1.3.2.2 bouyer
127 1.3.2.2 bouyer ACPI_CPU_FLAGS
128 1.3.2.2 bouyer AcpiOsAcquireLock (
129 1.3.2.2 bouyer ACPI_SPINLOCK Handle);
130 1.3.2.2 bouyer
131 1.3.2.2 bouyer void
132 1.3.2.2 bouyer AcpiOsReleaseLock (
133 1.3.2.2 bouyer ACPI_SPINLOCK Handle,
134 1.3.2.2 bouyer ACPI_CPU_FLAGS Flags);
135 1.3.2.2 bouyer
136 1.3.2.2 bouyer
137 1.3.2.2 bouyer /*
138 1.3.2.2 bouyer * Semaphore primitives
139 1.3.2.2 bouyer */
140 1.3.2.2 bouyer ACPI_STATUS
141 1.3.2.2 bouyer AcpiOsCreateSemaphore (
142 1.3.2.2 bouyer UINT32 MaxUnits,
143 1.3.2.2 bouyer UINT32 InitialUnits,
144 1.3.2.2 bouyer ACPI_SEMAPHORE *OutHandle);
145 1.3.2.2 bouyer
146 1.3.2.2 bouyer ACPI_STATUS
147 1.3.2.2 bouyer AcpiOsDeleteSemaphore (
148 1.3.2.2 bouyer ACPI_SEMAPHORE Handle);
149 1.3.2.2 bouyer
150 1.3.2.2 bouyer ACPI_STATUS
151 1.3.2.2 bouyer AcpiOsWaitSemaphore (
152 1.3.2.2 bouyer ACPI_SEMAPHORE Handle,
153 1.3.2.2 bouyer UINT32 Units,
154 1.3.2.2 bouyer UINT16 Timeout);
155 1.3.2.2 bouyer
156 1.3.2.2 bouyer ACPI_STATUS
157 1.3.2.2 bouyer AcpiOsSignalSemaphore (
158 1.3.2.2 bouyer ACPI_SEMAPHORE Handle,
159 1.3.2.2 bouyer UINT32 Units);
160 1.3.2.2 bouyer
161 1.3.2.2 bouyer
162 1.3.2.2 bouyer /*
163 1.3.2.2 bouyer * Mutex primitives. May be configured to use semaphores instead via
164 1.3.2.2 bouyer * ACPI_MUTEX_TYPE (see platform/acenv.h)
165 1.3.2.2 bouyer */
166 1.3.2.2 bouyer #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
167 1.3.2.2 bouyer
168 1.3.2.2 bouyer ACPI_STATUS
169 1.3.2.2 bouyer AcpiOsCreateMutex (
170 1.3.2.2 bouyer ACPI_MUTEX *OutHandle);
171 1.3.2.2 bouyer
172 1.3.2.2 bouyer void
173 1.3.2.2 bouyer AcpiOsDeleteMutex (
174 1.3.2.2 bouyer ACPI_MUTEX Handle);
175 1.3.2.2 bouyer
176 1.3.2.2 bouyer ACPI_STATUS
177 1.3.2.2 bouyer AcpiOsAcquireMutex (
178 1.3.2.2 bouyer ACPI_MUTEX Handle,
179 1.3.2.2 bouyer UINT16 Timeout);
180 1.3.2.2 bouyer
181 1.3.2.2 bouyer void
182 1.3.2.2 bouyer AcpiOsReleaseMutex (
183 1.3.2.2 bouyer ACPI_MUTEX Handle);
184 1.3.2.2 bouyer #endif
185 1.3.2.2 bouyer
186 1.3.2.2 bouyer
187 1.3.2.2 bouyer /*
188 1.3.2.2 bouyer * Memory allocation and mapping
189 1.3.2.2 bouyer */
190 1.3.2.2 bouyer void *
191 1.3.2.2 bouyer AcpiOsAllocate (
192 1.3.2.2 bouyer ACPI_SIZE Size);
193 1.3.2.2 bouyer
194 1.3.2.2 bouyer void
195 1.3.2.2 bouyer AcpiOsFree (
196 1.3.2.2 bouyer void * Memory);
197 1.3.2.2 bouyer
198 1.3.2.2 bouyer void *
199 1.3.2.2 bouyer AcpiOsMapMemory (
200 1.3.2.2 bouyer ACPI_PHYSICAL_ADDRESS Where,
201 1.3.2.2 bouyer ACPI_SIZE Length);
202 1.3.2.2 bouyer
203 1.3.2.2 bouyer void
204 1.3.2.2 bouyer AcpiOsUnmapMemory (
205 1.3.2.2 bouyer void *LogicalAddress,
206 1.3.2.2 bouyer ACPI_SIZE Size);
207 1.3.2.2 bouyer
208 1.3.2.2 bouyer ACPI_STATUS
209 1.3.2.2 bouyer AcpiOsGetPhysicalAddress (
210 1.3.2.2 bouyer void *LogicalAddress,
211 1.3.2.2 bouyer ACPI_PHYSICAL_ADDRESS *PhysicalAddress);
212 1.3.2.2 bouyer
213 1.3.2.2 bouyer
214 1.3.2.2 bouyer /*
215 1.3.2.2 bouyer * Memory/Object Cache
216 1.3.2.2 bouyer */
217 1.3.2.2 bouyer ACPI_STATUS
218 1.3.2.2 bouyer AcpiOsCreateCache (
219 1.3.2.2 bouyer const char *CacheName,
220 1.3.2.2 bouyer UINT16 ObjectSize,
221 1.3.2.2 bouyer UINT16 MaxDepth,
222 1.3.2.2 bouyer ACPI_CACHE_T **ReturnCache);
223 1.3.2.2 bouyer
224 1.3.2.2 bouyer ACPI_STATUS
225 1.3.2.2 bouyer AcpiOsDeleteCache (
226 1.3.2.2 bouyer ACPI_CACHE_T *Cache);
227 1.3.2.2 bouyer
228 1.3.2.2 bouyer ACPI_STATUS
229 1.3.2.2 bouyer AcpiOsPurgeCache (
230 1.3.2.2 bouyer ACPI_CACHE_T *Cache);
231 1.3.2.2 bouyer
232 1.3.2.2 bouyer void *
233 1.3.2.2 bouyer AcpiOsAcquireObject (
234 1.3.2.2 bouyer ACPI_CACHE_T *Cache);
235 1.3.2.2 bouyer
236 1.3.2.2 bouyer ACPI_STATUS
237 1.3.2.2 bouyer AcpiOsReleaseObject (
238 1.3.2.2 bouyer ACPI_CACHE_T *Cache,
239 1.3.2.2 bouyer void *Object);
240 1.3.2.2 bouyer
241 1.3.2.2 bouyer
242 1.3.2.2 bouyer /*
243 1.3.2.2 bouyer * Interrupt handlers
244 1.3.2.2 bouyer */
245 1.3.2.2 bouyer ACPI_STATUS
246 1.3.2.2 bouyer AcpiOsInstallInterruptHandler (
247 1.3.2.2 bouyer UINT32 InterruptNumber,
248 1.3.2.2 bouyer ACPI_OSD_HANDLER ServiceRoutine,
249 1.3.2.2 bouyer void *Context);
250 1.3.2.2 bouyer
251 1.3.2.2 bouyer ACPI_STATUS
252 1.3.2.2 bouyer AcpiOsRemoveInterruptHandler (
253 1.3.2.2 bouyer UINT32 InterruptNumber,
254 1.3.2.2 bouyer ACPI_OSD_HANDLER ServiceRoutine);
255 1.3.2.2 bouyer
256 1.3.2.2 bouyer
257 1.3.2.2 bouyer /*
258 1.3.2.2 bouyer * Threads and Scheduling
259 1.3.2.2 bouyer */
260 1.3.2.2 bouyer ACPI_THREAD_ID
261 1.3.2.2 bouyer AcpiOsGetThreadId (
262 1.3.2.2 bouyer void);
263 1.3.2.2 bouyer
264 1.3.2.2 bouyer ACPI_STATUS
265 1.3.2.2 bouyer AcpiOsExecute (
266 1.3.2.2 bouyer ACPI_EXECUTE_TYPE Type,
267 1.3.2.2 bouyer ACPI_OSD_EXEC_CALLBACK Function,
268 1.3.2.2 bouyer void *Context);
269 1.3.2.2 bouyer
270 1.3.2.2 bouyer void
271 1.3.2.2 bouyer AcpiOsWaitEventsComplete (
272 1.3.2.2 bouyer void *Context);
273 1.3.2.2 bouyer
274 1.3.2.2 bouyer void
275 1.3.2.2 bouyer AcpiOsSleep (
276 1.3.2.2 bouyer UINT64 Milliseconds);
277 1.3.2.2 bouyer
278 1.3.2.2 bouyer void
279 1.3.2.2 bouyer AcpiOsStall (
280 1.3.2.2 bouyer UINT32 Microseconds);
281 1.3.2.2 bouyer
282 1.3.2.2 bouyer
283 1.3.2.2 bouyer /*
284 1.3.2.2 bouyer * Platform and hardware-independent I/O interfaces
285 1.3.2.2 bouyer */
286 1.3.2.2 bouyer ACPI_STATUS
287 1.3.2.2 bouyer AcpiOsReadPort (
288 1.3.2.2 bouyer ACPI_IO_ADDRESS Address,
289 1.3.2.2 bouyer UINT32 *Value,
290 1.3.2.2 bouyer UINT32 Width);
291 1.3.2.2 bouyer
292 1.3.2.2 bouyer ACPI_STATUS
293 1.3.2.2 bouyer AcpiOsWritePort (
294 1.3.2.2 bouyer ACPI_IO_ADDRESS Address,
295 1.3.2.2 bouyer UINT32 Value,
296 1.3.2.2 bouyer UINT32 Width);
297 1.3.2.2 bouyer
298 1.3.2.2 bouyer
299 1.3.2.2 bouyer /*
300 1.3.2.2 bouyer * Platform and hardware-independent physical memory interfaces
301 1.3.2.2 bouyer */
302 1.3.2.2 bouyer ACPI_STATUS
303 1.3.2.2 bouyer AcpiOsReadMemory (
304 1.3.2.2 bouyer ACPI_PHYSICAL_ADDRESS Address,
305 1.3.2.2 bouyer UINT32 *Value,
306 1.3.2.2 bouyer UINT32 Width);
307 1.3.2.2 bouyer
308 1.3.2.2 bouyer ACPI_STATUS
309 1.3.2.2 bouyer AcpiOsWriteMemory (
310 1.3.2.2 bouyer ACPI_PHYSICAL_ADDRESS Address,
311 1.3.2.2 bouyer UINT32 Value,
312 1.3.2.2 bouyer UINT32 Width);
313 1.3.2.2 bouyer
314 1.3.2.2 bouyer
315 1.3.2.2 bouyer /*
316 1.3.2.2 bouyer * Platform and hardware-independent PCI configuration space access
317 1.3.2.2 bouyer * Note: Can't use "Register" as a parameter, changed to "Reg" --
318 1.3.2.2 bouyer * certain compilers complain.
319 1.3.2.2 bouyer */
320 1.3.2.2 bouyer ACPI_STATUS
321 1.3.2.2 bouyer AcpiOsReadPciConfiguration (
322 1.3.2.2 bouyer ACPI_PCI_ID *PciId,
323 1.3.2.2 bouyer UINT32 Reg,
324 1.3.2.2 bouyer UINT64 *Value,
325 1.3.2.2 bouyer UINT32 Width);
326 1.3.2.2 bouyer
327 1.3.2.2 bouyer ACPI_STATUS
328 1.3.2.2 bouyer AcpiOsWritePciConfiguration (
329 1.3.2.2 bouyer ACPI_PCI_ID *PciId,
330 1.3.2.2 bouyer UINT32 Reg,
331 1.3.2.2 bouyer UINT64 Value,
332 1.3.2.2 bouyer UINT32 Width);
333 1.3.2.2 bouyer
334 1.3.2.2 bouyer
335 1.3.2.2 bouyer /*
336 1.3.2.2 bouyer * Miscellaneous
337 1.3.2.2 bouyer */
338 1.3.2.2 bouyer BOOLEAN
339 1.3.2.2 bouyer AcpiOsReadable (
340 1.3.2.2 bouyer void *Pointer,
341 1.3.2.2 bouyer ACPI_SIZE Length);
342 1.3.2.2 bouyer
343 1.3.2.2 bouyer BOOLEAN
344 1.3.2.2 bouyer AcpiOsWritable (
345 1.3.2.2 bouyer void *Pointer,
346 1.3.2.2 bouyer ACPI_SIZE Length);
347 1.3.2.2 bouyer
348 1.3.2.2 bouyer UINT64
349 1.3.2.2 bouyer AcpiOsGetTimer (
350 1.3.2.2 bouyer void);
351 1.3.2.2 bouyer
352 1.3.2.2 bouyer ACPI_STATUS
353 1.3.2.2 bouyer AcpiOsSignal (
354 1.3.2.2 bouyer UINT32 Function,
355 1.3.2.2 bouyer void *Info);
356 1.3.2.2 bouyer
357 1.3.2.2 bouyer
358 1.3.2.2 bouyer /*
359 1.3.2.2 bouyer * Debug print routines
360 1.3.2.2 bouyer */
361 1.3.2.2 bouyer void ACPI_INTERNAL_VAR_XFACE
362 1.3.2.2 bouyer AcpiOsPrintf (
363 1.3.2.2 bouyer const char *Format,
364 1.3.2.2 bouyer ...);
365 1.3.2.2 bouyer
366 1.3.2.2 bouyer void
367 1.3.2.2 bouyer AcpiOsVprintf (
368 1.3.2.2 bouyer const char *Format,
369 1.3.2.2 bouyer va_list Args);
370 1.3.2.2 bouyer
371 1.3.2.2 bouyer void
372 1.3.2.2 bouyer AcpiOsRedirectOutput (
373 1.3.2.2 bouyer void *Destination);
374 1.3.2.2 bouyer
375 1.3.2.2 bouyer
376 1.3.2.2 bouyer /*
377 1.3.2.2 bouyer * Debug input
378 1.3.2.2 bouyer */
379 1.3.2.2 bouyer UINT32
380 1.3.2.2 bouyer AcpiOsGetLine (
381 1.3.2.2 bouyer char *Buffer);
382 1.3.2.2 bouyer
383 1.3.2.2 bouyer
384 1.3.2.2 bouyer /*
385 1.3.2.2 bouyer * Directory manipulation
386 1.3.2.2 bouyer */
387 1.3.2.2 bouyer void *
388 1.3.2.2 bouyer AcpiOsOpenDirectory (
389 1.3.2.2 bouyer char *Pathname,
390 1.3.2.2 bouyer char *WildcardSpec,
391 1.3.2.2 bouyer char RequestedFileType);
392 1.3.2.2 bouyer
393 1.3.2.2 bouyer /* RequesteFileType values */
394 1.3.2.2 bouyer
395 1.3.2.2 bouyer #define REQUEST_FILE_ONLY 0
396 1.3.2.2 bouyer #define REQUEST_DIR_ONLY 1
397 1.3.2.2 bouyer
398 1.3.2.2 bouyer
399 1.3.2.2 bouyer char *
400 1.3.2.2 bouyer AcpiOsGetNextFilename (
401 1.3.2.2 bouyer void *DirHandle);
402 1.3.2.2 bouyer
403 1.3.2.2 bouyer void
404 1.3.2.2 bouyer AcpiOsCloseDirectory (
405 1.3.2.2 bouyer void *DirHandle);
406 1.3.2.2 bouyer
407 1.3.2.2 bouyer
408 1.3.2.2 bouyer #endif /* __ACPIOSXF_H__ */
409