Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
acpi
acpiosxf.h
Go to the documentation of this file.
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 - 2012, 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 <
acpi/platform/acenv.h
>
51
#include <
acpi/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
acpi_status
99
acpi_os_physical_table_override
(
struct
acpi_table_header
*existing_table,
100
acpi_physical_address * new_address,
101
u32
*new_table_length);
102
103
/*
104
* Spinlock primitives
105
*/
106
107
#ifndef acpi_os_create_lock
108
acpi_status
109
acpi_os_create_lock
(
acpi_spinlock
*out_handle);
110
#endif
111
112
void
acpi_os_delete_lock
(
acpi_spinlock
handle
);
113
114
acpi_cpu_flags
acpi_os_acquire_lock
(
acpi_spinlock
handle
);
115
116
void
acpi_os_release_lock
(
acpi_spinlock
handle
,
acpi_cpu_flags
flags
);
117
118
/*
119
* Semaphore primitives
120
*/
121
acpi_status
122
acpi_os_create_semaphore
(
u32
max_units,
123
u32
initial_units,
acpi_semaphore
* out_handle);
124
125
acpi_status
acpi_os_delete_semaphore
(
acpi_semaphore
handle
);
126
127
acpi_status
128
acpi_os_wait_semaphore
(
acpi_semaphore
handle
,
u32
units,
u16
timeout);
129
130
acpi_status
acpi_os_signal_semaphore
(
acpi_semaphore
handle
,
u32
units);
131
132
/*
133
* Mutex primitives. May be configured to use semaphores instead via
134
* ACPI_MUTEX_TYPE (see platform/acenv.h)
135
*/
136
#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
137
138
acpi_status
acpi_os_create_mutex
(
acpi_mutex
* out_handle);
139
140
void
acpi_os_delete_mutex
(
acpi_mutex
handle
);
141
142
acpi_status
acpi_os_acquire_mutex
(
acpi_mutex
handle
,
u16
timeout);
143
144
void
acpi_os_release_mutex
(
acpi_mutex
handle
);
145
#endif
146
147
/*
148
* Memory allocation and mapping
149
*/
150
void
*
acpi_os_allocate
(acpi_size
size
);
151
152
void
__iomem
*
acpi_os_map_memory
(acpi_physical_address where,
153
acpi_size
length
);
154
155
void
acpi_os_unmap_memory
(
void
__iomem
*
logical_address
, acpi_size
size
);
156
void
early_acpi_os_unmap_memory
(
void
__iomem
* virt, acpi_size
size
);
157
158
#ifdef ACPI_FUTURE_USAGE
159
acpi_status
160
acpi_os_get_physical_address(
void
*
logical_address
,
161
acpi_physical_address * physical_address);
162
#endif
163
164
/*
165
* Memory/Object Cache
166
*/
167
acpi_status
168
acpi_os_create_cache
(
char
*cache_name,
169
u16
object_size
,
170
u16
max_depth,
acpi_cache_t
** return_cache);
171
172
acpi_status
acpi_os_delete_cache
(
acpi_cache_t
*
cache
);
173
174
acpi_status
acpi_os_purge_cache
(
acpi_cache_t
*
cache
);
175
176
void
*
acpi_os_acquire_object
(
acpi_cache_t
*
cache
);
177
178
acpi_status
acpi_os_release_object
(
acpi_cache_t
*
cache
,
void
*
object
);
179
180
/*
181
* Interrupt handlers
182
*/
183
acpi_status
184
acpi_os_install_interrupt_handler
(
u32
gsi
,
185
acpi_osd_handler service_routine,
186
void
*
context
);
187
188
acpi_status
189
acpi_os_remove_interrupt_handler
(
u32
gsi
, acpi_osd_handler service_routine);
190
191
void
acpi_os_gpe_count
(
u32
gpe_number
);
192
void
acpi_os_fixed_event_count
(
u32
fixed_event_number);
193
194
/*
195
* Threads and Scheduling
196
*/
197
extern
struct
workqueue_struct
*
kacpi_hotplug_wq
;
198
199
acpi_thread_id
acpi_os_get_thread_id
(
void
);
200
201
acpi_status
202
acpi_os_execute
(
acpi_execute_type
type
,
203
acpi_osd_exec_callback
function
,
void
*
context
);
204
205
acpi_status
206
acpi_os_hotplug_execute
(acpi_osd_exec_callback
function
,
void
*
context
);
207
208
void
acpi_os_wait_events_complete
(
void
);
209
210
void
acpi_os_sleep
(
u64
milliseconds);
211
212
void
acpi_os_stall
(
u32
microseconds
);
213
214
/*
215
* Platform and hardware-independent I/O interfaces
216
*/
217
acpi_status
acpi_os_read_port
(acpi_io_address
address
,
u32
*
value
,
u32
width
);
218
219
acpi_status
acpi_os_write_port
(acpi_io_address
address
,
u32
value
,
u32
width
);
220
221
/*
222
* Platform and hardware-independent physical memory interfaces
223
*/
224
acpi_status
225
acpi_os_read_memory
(acpi_physical_address
address
,
u64
*
value
,
u32
width
);
226
227
acpi_status
228
acpi_os_write_memory
(acpi_physical_address
address
,
u64
value
,
u32
width
);
229
230
/*
231
* Platform and hardware-independent PCI configuration space access
232
* Note: Can't use "Register" as a parameter, changed to "Reg" --
233
* certain compilers complain.
234
*/
235
acpi_status
236
acpi_os_read_pci_configuration
(
struct
acpi_pci_id
*
pci_id
,
237
u32
reg
,
u64
*
value
,
u32
width
);
238
239
acpi_status
240
acpi_os_write_pci_configuration
(
struct
acpi_pci_id
*
pci_id
,
241
u32
reg
,
u64
value
,
u32
width
);
242
243
/*
244
* Miscellaneous
245
*/
246
u64
acpi_os_get_timer
(
void
);
247
248
acpi_status
acpi_os_signal
(
u32
function
,
void
*
info
);
249
250
/*
251
* Debug print routines
252
*/
253
void
ACPI_INTERNAL_VAR_XFACE
acpi_os_printf
(
const
char
*
format
, ...);
254
255
void
acpi_os_vprintf
(
const
char
*
format
,
va_list
args);
256
257
void
acpi_os_redirect_output
(
void
*destination);
258
259
#ifdef ACPI_FUTURE_USAGE
260
/*
261
* Debug input
262
*/
263
u32
acpi_os_get_line(
char
*
buffer
);
264
#endif
265
266
/*
267
* Directory manipulation
268
*/
269
void
*
acpi_os_open_directory
(
char
*
pathname
,
270
char
*wildcard_spec,
char
requested_file_type);
271
272
/* requeste_file_type values */
273
274
#define REQUEST_FILE_ONLY 0
275
#define REQUEST_DIR_ONLY 1
276
277
char
*
acpi_os_get_next_filename
(
void
*dir_handle);
278
279
void
acpi_os_close_directory
(
void
*dir_handle);
280
281
#endif
/* __ACPIOSXF_H__ */
Generated on Thu Jan 10 2013 14:50:45 for Linux Kernel by
1.8.2