Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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 - 2005, R. Byron Moore
 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 "platform/acenv.h"
 52 #include "actypes.h"
 53 
 54 
 55 /* Priorities for acpi_os_queue_for_execution */
 56 
 57 #define OSD_PRIORITY_GPE            1
 58 #define OSD_PRIORITY_HIGH           2
 59 #define OSD_PRIORITY_MED            3
 60 #define OSD_PRIORITY_LO             4
 61 
 62 #define ACPI_NO_UNIT_LIMIT          ((u32) -1)
 63 #define ACPI_MUTEX_SEM              1
 64 
 65 
 66 /* Functions for acpi_os_signal */
 67 
 68 #define ACPI_SIGNAL_FATAL           0
 69 #define ACPI_SIGNAL_BREAKPOINT      1
 70 
 71 struct acpi_signal_fatal_info
 72 {
 73         u32                             type;
 74         u32                             code;
 75         u32                             argument;
 76 };
 77 
 78 
 79 /*
 80  * OSL Initialization and shutdown primitives
 81  */
 82 
 83 acpi_status
 84 acpi_os_initialize (
 85         void);
 86 
 87 acpi_status
 88 acpi_os_terminate (
 89         void);
 90 
 91 
 92 /*
 93  * ACPI Table interfaces
 94  */
 95 
 96 acpi_status
 97 acpi_os_get_root_pointer (
 98         u32                             flags,
 99         struct acpi_pointer             *address);
100 
101 acpi_status
102 acpi_os_predefined_override (
103         const struct acpi_predefined_names *init_val,
104         acpi_string                         *new_val);
105 
106 acpi_status
107 acpi_os_table_override (
108         struct acpi_table_header        *existing_table,
109         struct acpi_table_header        **new_table);
110 
111 
112 /*
113  * Synchronization primitives
114  */
115 
116 acpi_status
117 acpi_os_create_semaphore (
118         u32                             max_units,
119         u32                             initial_units,
120         acpi_handle                     *out_handle);
121 
122 acpi_status
123 acpi_os_delete_semaphore (
124         acpi_handle                     handle);
125 
126 acpi_status
127 acpi_os_wait_semaphore (
128         acpi_handle                     handle,
129         u32                             units,
130         u16                             timeout);
131 
132 acpi_status
133 acpi_os_signal_semaphore (
134         acpi_handle                     handle,
135         u32                             units);
136 
137 acpi_status
138 acpi_os_create_lock (
139         acpi_handle                     *out_handle);
140 
141 void
142 acpi_os_delete_lock (
143         acpi_handle                     handle);
144 
145 void
146 acpi_os_acquire_lock (
147         acpi_handle                     handle,
148         u32                             flags);
149 
150 void
151 acpi_os_release_lock (
152         acpi_handle                     handle,
153         u32                             flags);
154 
155 
156 /*
157  * Memory allocation and mapping
158  */
159 
160 void *
161 acpi_os_allocate (
162         acpi_size                       size);
163 
164 void
165 acpi_os_free (
166         void *                          memory);
167 
168 acpi_status
169 acpi_os_map_memory (
170         acpi_physical_address           physical_address,
171         acpi_size                       size,
172         void __iomem                  **logical_address);
173 
174 void
175 acpi_os_unmap_memory (
176         void __iomem                  *logical_address,
177         acpi_size                       size);
178 
179 #ifdef ACPI_FUTURE_USAGE
180 acpi_status
181 acpi_os_get_physical_address (
182         void                            *logical_address,
183         acpi_physical_address           *physical_address);
184 #endif
185 
186 
187 /*
188  * Interrupt handlers
189  */
190 
191 acpi_status
192 acpi_os_install_interrupt_handler (
193         u32                             gsi,
194         acpi_osd_handler                service_routine,
195         void                            *context);
196 
197 acpi_status
198 acpi_os_remove_interrupt_handler (
199         u32                             gsi,
200         acpi_osd_handler                service_routine);
201 
202 
203 /*
204  * Threads and Scheduling
205  */
206 
207 u32
208 acpi_os_get_thread_id (
209         void);
210 
211 acpi_status
212 acpi_os_queue_for_execution (
213         u32                             priority,
214         acpi_osd_exec_callback          function,
215         void                            *context);
216 
217 void
218 acpi_os_wait_events_complete(
219         void * context);
220 
221 void
222 acpi_os_wait_events_complete (
223         void                            *context);
224 
225 void
226 acpi_os_sleep (
227         acpi_integer                    milliseconds);
228 
229 void
230 acpi_os_stall (
231         u32                             microseconds);
232 
233 
234 /*
235  * Platform and hardware-independent I/O interfaces
236  */
237 
238 acpi_status
239 acpi_os_read_port (
240         acpi_io_address                 address,
241         u32                             *value,
242         u32                             width);
243 
244 acpi_status
245 acpi_os_write_port (
246         acpi_io_address                 address,
247         u32                             value,
248         u32                             width);
249 
250 
251 /*
252  * Platform and hardware-independent physical memory interfaces
253  */
254 
255 acpi_status
256 acpi_os_read_memory (
257         acpi_physical_address           address,
258         u32                             *value,
259         u32                             width);
260 
261 acpi_status
262 acpi_os_write_memory (
263         acpi_physical_address           address,
264         u32                             value,
265         u32                             width);
266 
267 
268 /*
269  * Platform and hardware-independent PCI configuration space access
270  * Note: Can't use "Register" as a parameter, changed to "Reg" --
271  * certain compilers complain.
272  */
273 
274 acpi_status
275 acpi_os_read_pci_configuration (
276         struct acpi_pci_id              *pci_id,
277         u32                             reg,
278         void                            *value,
279         u32                             width);
280 
281 acpi_status
282 acpi_os_write_pci_configuration (
283         struct acpi_pci_id              *pci_id,
284         u32                             reg,
285         acpi_integer                    value,
286         u32                             width);
287 
288 /*
289  * Interim function needed for PCI IRQ routing
290  */
291 
292 void
293 acpi_os_derive_pci_id(
294         acpi_handle                     rhandle,
295         acpi_handle                     chandle,
296         struct acpi_pci_id              **pci_id);
297 
298 /*
299  * Miscellaneous
300  */
301 
302 u8
303 acpi_os_readable (
304         void                            *pointer,
305         acpi_size                       length);
306 
307 #ifdef ACPI_FUTURE_USAGE
308 u8
309 acpi_os_writable (
310         void                            *pointer,
311         acpi_size                       length);
312 #endif
313 
314 u64
315 acpi_os_get_timer (
316         void);
317 
318 acpi_status
319 acpi_os_signal (
320         u32                             function,
321         void                            *info);
322 
323 /*
324  * Debug print routines
325  */
326 
327 void ACPI_INTERNAL_VAR_XFACE
328 acpi_os_printf (
329         const char                      *format,
330         ...);
331 
332 void
333 acpi_os_vprintf (
334         const char                      *format,
335         va_list                 args);
336 
337 void
338 acpi_os_redirect_output (
339         void                            *destination);
340 
341 
342 /*
343  * Debug input
344  */
345 
346 #ifdef ACPI_FUTURE_USAGE
347 u32
348 acpi_os_get_line (
349         char                            *buffer);
350 #endif
351 
352 
353 /*
354  * Directory manipulation
355  */
356 
357 void *
358 acpi_os_open_directory (
359         char                            *pathname,
360         char                            *wildcard_spec,
361         char                            requested_file_type);
362 
363 /* requeste_file_type values */
364 
365 #define REQUEST_FILE_ONLY                   0
366 #define REQUEST_DIR_ONLY                    1
367 
368 
369 char *
370 acpi_os_get_next_filename (
371         void                            *dir_handle);
372 
373 void
374 acpi_os_close_directory (
375         void                            *dir_handle);
376 
377 /*
378  * Debug
379  */
380 
381 void
382 acpi_os_dbg_assert(
383         void                            *failed_assertion,
384         void                            *file_name,
385         u32                             line_number,
386         char                            *message);
387 
388 
389 #endif /* __ACPIOSXF_H__ */
390 
  This page was automatically generated by the LXR engine.