~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to include/acpi/acpiosxf.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 * Copyright (C) 2000 - 2011, Intel Corp.
 
12
 * All rights reserved.
 
13
 *
 
14
 * Redistribution and use in source and binary forms, with or without
 
15
 * modification, are permitted provided that the following conditions
 
16
 * are met:
 
17
 * 1. Redistributions of source code must retain the above copyright
 
18
 *    notice, this list of conditions, and the following disclaimer,
 
19
 *    without modification.
 
20
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 
21
 *    substantially similar to the "NO WARRANTY" disclaimer below
 
22
 *    ("Disclaimer") and any redistribution must be conditioned upon
 
23
 *    including a substantially similar Disclaimer requirement for further
 
24
 *    binary redistribution.
 
25
 * 3. Neither the names of the above-listed copyright holders nor the names
 
26
 *    of any contributors may be used to endorse or promote products derived
 
27
 *    from this software without specific prior written permission.
 
28
 *
 
29
 * Alternatively, this software may be distributed under the terms of the
 
30
 * GNU General Public License ("GPL") version 2 as published by the Free
 
31
 * Software Foundation.
 
32
 *
 
33
 * NO WARRANTY
 
34
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
35
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
36
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 
37
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
38
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
39
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
40
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
41
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 
42
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 
43
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
44
 * POSSIBILITY OF SUCH DAMAGES.
 
45
 */
 
46
 
 
47
#ifndef __ACPIOSXF_H__
 
48
#define __ACPIOSXF_H__
 
49
 
 
50
#include "platform/acenv.h"
 
51
#include "actypes.h"
 
52
 
 
53
/* Types for acpi_os_execute */
 
54
 
 
55
typedef enum {
 
56
        OSL_GLOBAL_LOCK_HANDLER,
 
57
        OSL_NOTIFY_HANDLER,
 
58
        OSL_GPE_HANDLER,
 
59
        OSL_DEBUGGER_THREAD,
 
60
        OSL_EC_POLL_HANDLER,
 
61
        OSL_EC_BURST_HANDLER
 
62
} acpi_execute_type;
 
63
 
 
64
#define ACPI_NO_UNIT_LIMIT          ((u32) -1)
 
65
#define ACPI_MUTEX_SEM              1
 
66
 
 
67
/* Functions for acpi_os_signal */
 
68
 
 
69
#define ACPI_SIGNAL_FATAL           0
 
70
#define ACPI_SIGNAL_BREAKPOINT      1
 
71
 
 
72
struct acpi_signal_fatal_info {
 
73
        u32 type;
 
74
        u32 code;
 
75
        u32 argument;
 
76
};
 
77
 
 
78
/*
 
79
 * OSL Initialization and shutdown primitives
 
80
 */
 
81
acpi_status __initdata acpi_os_initialize(void);
 
82
 
 
83
acpi_status acpi_os_terminate(void);
 
84
 
 
85
/*
 
86
 * ACPI Table interfaces
 
87
 */
 
88
acpi_physical_address acpi_os_get_root_pointer(void);
 
89
 
 
90
acpi_status
 
91
acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
 
92
                            acpi_string * new_val);
 
93
 
 
94
acpi_status
 
95
acpi_os_table_override(struct acpi_table_header *existing_table,
 
96
                       struct acpi_table_header **new_table);
 
97
 
 
98
/*
 
99
 * Spinlock primitives
 
100
 */
 
101
 
 
102
#ifndef acpi_os_create_lock
 
103
acpi_status
 
104
acpi_os_create_lock(acpi_spinlock *out_handle);
 
105
#endif
 
106
 
 
107
void acpi_os_delete_lock(acpi_spinlock handle);
 
108
 
 
109
acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle);
 
110
 
 
111
void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags);
 
112
 
 
113
/*
 
114
 * Semaphore primitives
 
115
 */
 
116
acpi_status
 
117
acpi_os_create_semaphore(u32 max_units,
 
118
                         u32 initial_units, acpi_semaphore * out_handle);
 
119
 
 
120
acpi_status acpi_os_delete_semaphore(acpi_semaphore handle);
 
121
 
 
122
acpi_status
 
123
acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout);
 
124
 
 
125
acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units);
 
126
 
 
127
/*
 
128
 * Mutex primitives. May be configured to use semaphores instead via
 
129
 * ACPI_MUTEX_TYPE (see platform/acenv.h)
 
130
 */
 
131
#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
 
132
 
 
133
acpi_status acpi_os_create_mutex(acpi_mutex * out_handle);
 
134
 
 
135
void acpi_os_delete_mutex(acpi_mutex handle);
 
136
 
 
137
acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout);
 
138
 
 
139
void acpi_os_release_mutex(acpi_mutex handle);
 
140
#endif
 
141
 
 
142
/*
 
143
 * Memory allocation and mapping
 
144
 */
 
145
void *acpi_os_allocate(acpi_size size);
 
146
 
 
147
void __iomem *acpi_os_map_memory(acpi_physical_address where,
 
148
                                acpi_size length);
 
149
 
 
150
void acpi_os_unmap_memory(void __iomem * logical_address, acpi_size size);
 
151
void early_acpi_os_unmap_memory(void __iomem * virt, acpi_size size);
 
152
 
 
153
#ifdef ACPI_FUTURE_USAGE
 
154
acpi_status
 
155
acpi_os_get_physical_address(void *logical_address,
 
156
                             acpi_physical_address * physical_address);
 
157
#endif
 
158
 
 
159
/*
 
160
 * Memory/Object Cache
 
161
 */
 
162
acpi_status
 
163
acpi_os_create_cache(char *cache_name,
 
164
                     u16 object_size,
 
165
                     u16 max_depth, acpi_cache_t ** return_cache);
 
166
 
 
167
acpi_status acpi_os_delete_cache(acpi_cache_t * cache);
 
168
 
 
169
acpi_status acpi_os_purge_cache(acpi_cache_t * cache);
 
170
 
 
171
void *acpi_os_acquire_object(acpi_cache_t * cache);
 
172
 
 
173
acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object);
 
174
 
 
175
/*
 
176
 * Interrupt handlers
 
177
 */
 
178
acpi_status
 
179
acpi_os_install_interrupt_handler(u32 gsi,
 
180
                                  acpi_osd_handler service_routine,
 
181
                                  void *context);
 
182
 
 
183
acpi_status
 
184
acpi_os_remove_interrupt_handler(u32 gsi, acpi_osd_handler service_routine);
 
185
 
 
186
void acpi_os_gpe_count(u32 gpe_number);
 
187
void acpi_os_fixed_event_count(u32 fixed_event_number);
 
188
 
 
189
/*
 
190
 * Threads and Scheduling
 
191
 */
 
192
extern struct workqueue_struct *kacpi_hotplug_wq;
 
193
 
 
194
acpi_thread_id acpi_os_get_thread_id(void);
 
195
 
 
196
acpi_status
 
197
acpi_os_execute(acpi_execute_type type,
 
198
                acpi_osd_exec_callback function, void *context);
 
199
 
 
200
acpi_status
 
201
acpi_os_hotplug_execute(acpi_osd_exec_callback function, void *context);
 
202
 
 
203
void acpi_os_wait_events_complete(void *context);
 
204
 
 
205
void acpi_os_sleep(u64 milliseconds);
 
206
 
 
207
void acpi_os_stall(u32 microseconds);
 
208
 
 
209
/*
 
210
 * Platform and hardware-independent I/O interfaces
 
211
 */
 
212
acpi_status acpi_os_read_port(acpi_io_address address, u32 * value, u32 width);
 
213
 
 
214
acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width);
 
215
 
 
216
/*
 
217
 * Platform and hardware-independent physical memory interfaces
 
218
 */
 
219
acpi_status
 
220
acpi_os_read_memory(acpi_physical_address address, u32 * value, u32 width);
 
221
 
 
222
acpi_status
 
223
acpi_os_write_memory(acpi_physical_address address, u32 value, u32 width);
 
224
 
 
225
/*
 
226
 * Platform and hardware-independent PCI configuration space access
 
227
 * Note: Can't use "Register" as a parameter, changed to "Reg" --
 
228
 * certain compilers complain.
 
229
 */
 
230
acpi_status
 
231
acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id,
 
232
                               u32 reg, u64 *value, u32 width);
 
233
 
 
234
acpi_status
 
235
acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id,
 
236
                                u32 reg, u64 value, u32 width);
 
237
 
 
238
/*
 
239
 * Miscellaneous
 
240
 */
 
241
acpi_status
 
242
acpi_os_validate_address(u8 space_id, acpi_physical_address address,
 
243
                         acpi_size length, char *name);
 
244
acpi_status
 
245
acpi_os_invalidate_address(u8 space_id, acpi_physical_address address,
 
246
                         acpi_size length);
 
247
 
 
248
u64 acpi_os_get_timer(void);
 
249
 
 
250
acpi_status acpi_os_signal(u32 function, void *info);
 
251
 
 
252
/*
 
253
 * Debug print routines
 
254
 */
 
255
void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...);
 
256
 
 
257
void acpi_os_vprintf(const char *format, va_list args);
 
258
 
 
259
void acpi_os_redirect_output(void *destination);
 
260
 
 
261
#ifdef ACPI_FUTURE_USAGE
 
262
/*
 
263
 * Debug input
 
264
 */
 
265
u32 acpi_os_get_line(char *buffer);
 
266
#endif
 
267
 
 
268
/*
 
269
 * Directory manipulation
 
270
 */
 
271
void *acpi_os_open_directory(char *pathname,
 
272
                             char *wildcard_spec, char requested_file_type);
 
273
 
 
274
/* requeste_file_type values */
 
275
 
 
276
#define REQUEST_FILE_ONLY                   0
 
277
#define REQUEST_DIR_ONLY                    1
 
278
 
 
279
char *acpi_os_get_next_filename(void *dir_handle);
 
280
 
 
281
void acpi_os_close_directory(void *dir_handle);
 
282
 
 
283
#endif                          /* __ACPIOSXF_H__ */