]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - sys/contrib/dev/acpica/include/acpiosxf.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / sys / contrib / dev / acpica / include / acpiosxf.h
1 /******************************************************************************
2  *
3  * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These
4  *                    interfaces must be implemented by OSL to interface the
5  *                    ACPI components to the host operating system.
6  *
7  *****************************************************************************/
8
9 /*
10  * Copyright (C) 2000 - 2015, Intel Corp.
11  * All rights reserved.
12  *
13  * Redistribution and use in source and binary forms, with or without
14  * modification, are permitted provided that the following conditions
15  * are met:
16  * 1. Redistributions of source code must retain the above copyright
17  *    notice, this list of conditions, and the following disclaimer,
18  *    without modification.
19  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
20  *    substantially similar to the "NO WARRANTY" disclaimer below
21  *    ("Disclaimer") and any redistribution must be conditioned upon
22  *    including a substantially similar Disclaimer requirement for further
23  *    binary redistribution.
24  * 3. Neither the names of the above-listed copyright holders nor the names
25  *    of any contributors may be used to endorse or promote products derived
26  *    from this software without specific prior written permission.
27  *
28  * Alternatively, this software may be distributed under the terms of the
29  * GNU General Public License ("GPL") version 2 as published by the Free
30  * Software Foundation.
31  *
32  * NO WARRANTY
33  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
36  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
37  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
38  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
39  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
41  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
42  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43  * POSSIBILITY OF SUCH DAMAGES.
44  */
45
46 #ifndef __ACPIOSXF_H__
47 #define __ACPIOSXF_H__
48
49 #include <contrib/dev/acpica/include/platform/acenv.h>
50 #include <contrib/dev/acpica/include/actypes.h>
51
52
53 /* Types for AcpiOsExecute */
54
55 typedef enum
56 {
57     OSL_GLOBAL_LOCK_HANDLER,
58     OSL_NOTIFY_HANDLER,
59     OSL_GPE_HANDLER,
60     OSL_DEBUGGER_THREAD,
61     OSL_EC_POLL_HANDLER,
62     OSL_EC_BURST_HANDLER
63
64 } ACPI_EXECUTE_TYPE;
65
66 #define ACPI_NO_UNIT_LIMIT          ((UINT32) -1)
67 #define ACPI_MUTEX_SEM              1
68
69
70 /* Functions for AcpiOsSignal */
71
72 #define ACPI_SIGNAL_FATAL           0
73 #define ACPI_SIGNAL_BREAKPOINT      1
74
75 typedef struct acpi_signal_fatal_info
76 {
77     UINT32                  Type;
78     UINT32                  Code;
79     UINT32                  Argument;
80
81 } ACPI_SIGNAL_FATAL_INFO;
82
83
84 /*
85  * OSL Initialization and shutdown primitives
86  */
87 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInitialize
88 ACPI_STATUS
89 AcpiOsInitialize (
90     void);
91 #endif
92
93 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTerminate
94 ACPI_STATUS
95 AcpiOsTerminate (
96     void);
97 #endif
98
99
100 /*
101  * ACPI Table interfaces
102  */
103 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetRootPointer
104 ACPI_PHYSICAL_ADDRESS
105 AcpiOsGetRootPointer (
106     void);
107 #endif
108
109 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPredefinedOverride
110 ACPI_STATUS
111 AcpiOsPredefinedOverride (
112     const ACPI_PREDEFINED_NAMES *InitVal,
113     ACPI_STRING                 *NewVal);
114 #endif
115
116 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTableOverride
117 ACPI_STATUS
118 AcpiOsTableOverride (
119     ACPI_TABLE_HEADER       *ExistingTable,
120     ACPI_TABLE_HEADER       **NewTable);
121 #endif
122
123 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPhysicalTableOverride
124 ACPI_STATUS
125 AcpiOsPhysicalTableOverride (
126     ACPI_TABLE_HEADER       *ExistingTable,
127     ACPI_PHYSICAL_ADDRESS   *NewAddress,
128     UINT32                  *NewTableLength);
129 #endif
130
131
132 /*
133  * Spinlock primitives
134  */
135 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateLock
136 ACPI_STATUS
137 AcpiOsCreateLock (
138     ACPI_SPINLOCK           *OutHandle);
139 #endif
140
141 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteLock
142 void
143 AcpiOsDeleteLock (
144     ACPI_SPINLOCK           Handle);
145 #endif
146
147 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireLock
148 ACPI_CPU_FLAGS
149 AcpiOsAcquireLock (
150     ACPI_SPINLOCK           Handle);
151 #endif
152
153 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseLock
154 void
155 AcpiOsReleaseLock (
156     ACPI_SPINLOCK           Handle,
157     ACPI_CPU_FLAGS          Flags);
158 #endif
159
160
161 /*
162  * Semaphore primitives
163  */
164 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateSemaphore
165 ACPI_STATUS
166 AcpiOsCreateSemaphore (
167     UINT32                  MaxUnits,
168     UINT32                  InitialUnits,
169     ACPI_SEMAPHORE          *OutHandle);
170 #endif
171
172 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteSemaphore
173 ACPI_STATUS
174 AcpiOsDeleteSemaphore (
175     ACPI_SEMAPHORE          Handle);
176 #endif
177
178 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWaitSemaphore
179 ACPI_STATUS
180 AcpiOsWaitSemaphore (
181     ACPI_SEMAPHORE          Handle,
182     UINT32                  Units,
183     UINT16                  Timeout);
184 #endif
185
186 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSignalSemaphore
187 ACPI_STATUS
188 AcpiOsSignalSemaphore (
189     ACPI_SEMAPHORE          Handle,
190     UINT32                  Units);
191 #endif
192
193
194 /*
195  * Mutex primitives. May be configured to use semaphores instead via
196  * ACPI_MUTEX_TYPE (see platform/acenv.h)
197  */
198 #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
199
200 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateMutex
201 ACPI_STATUS
202 AcpiOsCreateMutex (
203     ACPI_MUTEX              *OutHandle);
204 #endif
205
206 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteMutex
207 void
208 AcpiOsDeleteMutex (
209     ACPI_MUTEX              Handle);
210 #endif
211
212 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireMutex
213 ACPI_STATUS
214 AcpiOsAcquireMutex (
215     ACPI_MUTEX              Handle,
216     UINT16                  Timeout);
217 #endif
218
219 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseMutex
220 void
221 AcpiOsReleaseMutex (
222     ACPI_MUTEX              Handle);
223 #endif
224
225 #endif
226
227
228 /*
229  * Memory allocation and mapping
230  */
231 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocate
232 void *
233 AcpiOsAllocate (
234     ACPI_SIZE               Size);
235 #endif
236
237 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocateZeroed
238 void *
239 AcpiOsAllocateZeroed (
240     ACPI_SIZE               Size);
241 #endif
242
243 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsFree
244 void
245 AcpiOsFree (
246     void *                  Memory);
247 #endif
248
249 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsMapMemory
250 void *
251 AcpiOsMapMemory (
252     ACPI_PHYSICAL_ADDRESS   Where,
253     ACPI_SIZE               Length);
254 #endif
255
256 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsUnmapMemory
257 void
258 AcpiOsUnmapMemory (
259     void                    *LogicalAddress,
260     ACPI_SIZE               Size);
261 #endif
262
263 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetPhysicalAddress
264 ACPI_STATUS
265 AcpiOsGetPhysicalAddress (
266     void                    *LogicalAddress,
267     ACPI_PHYSICAL_ADDRESS   *PhysicalAddress);
268 #endif
269
270
271 /*
272  * Memory/Object Cache
273  */
274 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateCache
275 ACPI_STATUS
276 AcpiOsCreateCache (
277     char                    *CacheName,
278     UINT16                  ObjectSize,
279     UINT16                  MaxDepth,
280     ACPI_CACHE_T            **ReturnCache);
281 #endif
282
283 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteCache
284 ACPI_STATUS
285 AcpiOsDeleteCache (
286     ACPI_CACHE_T            *Cache);
287 #endif
288
289 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPurgeCache
290 ACPI_STATUS
291 AcpiOsPurgeCache (
292     ACPI_CACHE_T            *Cache);
293 #endif
294
295 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireObject
296 void *
297 AcpiOsAcquireObject (
298     ACPI_CACHE_T            *Cache);
299 #endif
300
301 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseObject
302 ACPI_STATUS
303 AcpiOsReleaseObject (
304     ACPI_CACHE_T            *Cache,
305     void                    *Object);
306 #endif
307
308
309 /*
310  * Interrupt handlers
311  */
312 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInstallInterruptHandler
313 ACPI_STATUS
314 AcpiOsInstallInterruptHandler (
315     UINT32                  InterruptNumber,
316     ACPI_OSD_HANDLER        ServiceRoutine,
317     void                    *Context);
318 #endif
319
320 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRemoveInterruptHandler
321 ACPI_STATUS
322 AcpiOsRemoveInterruptHandler (
323     UINT32                  InterruptNumber,
324     ACPI_OSD_HANDLER        ServiceRoutine);
325 #endif
326
327
328 /*
329  * Threads and Scheduling
330  */
331 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetThreadId
332 ACPI_THREAD_ID
333 AcpiOsGetThreadId (
334     void);
335 #endif
336
337 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsExecute
338 ACPI_STATUS
339 AcpiOsExecute (
340     ACPI_EXECUTE_TYPE       Type,
341     ACPI_OSD_EXEC_CALLBACK  Function,
342     void                    *Context);
343 #endif
344
345 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWaitEventsComplete
346 void
347 AcpiOsWaitEventsComplete (
348     void);
349 #endif
350
351 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSleep
352 void
353 AcpiOsSleep (
354     UINT64                  Milliseconds);
355 #endif
356
357 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsStall
358 void
359 AcpiOsStall (
360     UINT32                  Microseconds);
361 #endif
362
363
364 /*
365  * Platform and hardware-independent I/O interfaces
366  */
367 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadPort
368 ACPI_STATUS
369 AcpiOsReadPort (
370     ACPI_IO_ADDRESS         Address,
371     UINT32                  *Value,
372     UINT32                  Width);
373 #endif
374
375 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritePort
376 ACPI_STATUS
377 AcpiOsWritePort (
378     ACPI_IO_ADDRESS         Address,
379     UINT32                  Value,
380     UINT32                  Width);
381 #endif
382
383
384 /*
385  * Platform and hardware-independent physical memory interfaces
386  */
387 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadMemory
388 ACPI_STATUS
389 AcpiOsReadMemory (
390     ACPI_PHYSICAL_ADDRESS   Address,
391     UINT64                  *Value,
392     UINT32                  Width);
393 #endif
394
395 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWriteMemory
396 ACPI_STATUS
397 AcpiOsWriteMemory (
398     ACPI_PHYSICAL_ADDRESS   Address,
399     UINT64                  Value,
400     UINT32                  Width);
401 #endif
402
403
404 /*
405  * Platform and hardware-independent PCI configuration space access
406  * Note: Can't use "Register" as a parameter, changed to "Reg" --
407  * certain compilers complain.
408  */
409 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadPciConfiguration
410 ACPI_STATUS
411 AcpiOsReadPciConfiguration (
412     ACPI_PCI_ID             *PciId,
413     UINT32                  Reg,
414     UINT64                  *Value,
415     UINT32                  Width);
416 #endif
417
418 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritePciConfiguration
419 ACPI_STATUS
420 AcpiOsWritePciConfiguration (
421     ACPI_PCI_ID             *PciId,
422     UINT32                  Reg,
423     UINT64                  Value,
424     UINT32                  Width);
425 #endif
426
427
428 /*
429  * Miscellaneous
430  */
431 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadable
432 BOOLEAN
433 AcpiOsReadable (
434     void                    *Pointer,
435     ACPI_SIZE               Length);
436 #endif
437
438 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritable
439 BOOLEAN
440 AcpiOsWritable (
441     void                    *Pointer,
442     ACPI_SIZE               Length);
443 #endif
444
445 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTimer
446 UINT64
447 AcpiOsGetTimer (
448     void);
449 #endif
450
451 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSignal
452 ACPI_STATUS
453 AcpiOsSignal (
454     UINT32                  Function,
455     void                    *Info);
456 #endif
457
458
459 /*
460  * Debug print routines
461  */
462 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
463 void ACPI_INTERNAL_VAR_XFACE
464 AcpiOsPrintf (
465     const char              *Format,
466     ...);
467 #endif
468
469 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsVprintf
470 void
471 AcpiOsVprintf (
472     const char              *Format,
473     va_list                 Args);
474 #endif
475
476 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRedirectOutput
477 void
478 AcpiOsRedirectOutput (
479     void                    *Destination);
480 #endif
481
482
483 /*
484  * Debug input
485  */
486 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetLine
487 ACPI_STATUS
488 AcpiOsGetLine (
489     char                    *Buffer,
490     UINT32                  BufferLength,
491     UINT32                  *BytesRead);
492 #endif
493
494
495 /*
496  * Obtain ACPI table(s)
497  */
498 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByName
499 ACPI_STATUS
500 AcpiOsGetTableByName (
501     char                    *Signature,
502     UINT32                  Instance,
503     ACPI_TABLE_HEADER       **Table,
504     ACPI_PHYSICAL_ADDRESS   *Address);
505 #endif
506
507 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByIndex
508 ACPI_STATUS
509 AcpiOsGetTableByIndex (
510     UINT32                  Index,
511     ACPI_TABLE_HEADER       **Table,
512     UINT32                  *Instance,
513     ACPI_PHYSICAL_ADDRESS   *Address);
514 #endif
515
516 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByAddress
517 ACPI_STATUS
518 AcpiOsGetTableByAddress (
519     ACPI_PHYSICAL_ADDRESS   Address,
520     ACPI_TABLE_HEADER       **Table);
521 #endif
522
523
524 /*
525  * Directory manipulation
526  */
527 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenDirectory
528 void *
529 AcpiOsOpenDirectory (
530     char                    *Pathname,
531     char                    *WildcardSpec,
532     char                    RequestedFileType);
533 #endif
534
535 /* RequesteFileType values */
536
537 #define REQUEST_FILE_ONLY                   0
538 #define REQUEST_DIR_ONLY                    1
539
540
541 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetNextFilename
542 char *
543 AcpiOsGetNextFilename (
544     void                    *DirHandle);
545 #endif
546
547 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseDirectory
548 void
549 AcpiOsCloseDirectory (
550     void                    *DirHandle);
551 #endif
552
553
554 /*
555  * File I/O and related support
556  */
557 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenFile
558 ACPI_FILE
559 AcpiOsOpenFile (
560     const char              *Path,
561     UINT8                   Modes);
562 #endif
563
564 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseFile
565 void
566 AcpiOsCloseFile (
567     ACPI_FILE               File);
568 #endif
569
570 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadFile
571 int
572 AcpiOsReadFile (
573     ACPI_FILE               File,
574     void                    *Buffer,
575     ACPI_SIZE               Size,
576     ACPI_SIZE               Count);
577 #endif
578
579 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWriteFile
580 int
581 AcpiOsWriteFile (
582     ACPI_FILE               File,
583     void                    *Buffer,
584     ACPI_SIZE               Size,
585     ACPI_SIZE               Count);
586 #endif
587
588 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetFileOffset
589 long
590 AcpiOsGetFileOffset (
591     ACPI_FILE               File);
592 #endif
593
594 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSetFileOffset
595 ACPI_STATUS
596 AcpiOsSetFileOffset (
597     ACPI_FILE               File,
598     long                    Offset,
599     UINT8                   From);
600 #endif
601
602
603 #endif /* __ACPIOSXF_H__ */