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