aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2013-10-28 21:30:35 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-10-31 09:35:50 -0400
commit7e94632fc530d990de3110e6c53425d6e28dd238 (patch)
tree7242d7226e91aa1900e8370f36e51332ab006b87 /include/acpi
parentc0144dc0e43ed97d60ce34c900a4326bb087bf11 (diff)
ACPICA: Add support to allow host OS to redefine individual OSL prototypes.
This change enables the host OS to redefine OSL prototypes found in the acpiosxf.h file. This allows the host OS to implement OSL interfaces with a macro or inlined function. Further, it allows the host OS to add any additional required modifiers such as __iomem, __init, __exit, etc., as necessary on a per-interface basis. Enables maximum flexibility for the OSL interfaces. Lv Zheng. Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/acpi')
-rw-r--r--include/acpi/acpiosxf.h139
-rw-r--r--include/acpi/platform/aclinux.h1
2 files changed, 137 insertions, 3 deletions
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h
index 7f95215e7754..55165fcd77d7 100644
--- a/include/acpi/acpiosxf.h
+++ b/include/acpi/acpiosxf.h
@@ -77,54 +77,80 @@ struct acpi_signal_fatal_info {
77/* 77/*
78 * OSL Initialization and shutdown primitives 78 * OSL Initialization and shutdown primitives
79 */ 79 */
80#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize
80acpi_status __init acpi_os_initialize(void); 81acpi_status __init acpi_os_initialize(void);
82#endif
81 83
84#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate
82acpi_status acpi_os_terminate(void); 85acpi_status acpi_os_terminate(void);
86#endif
83 87
84/* 88/*
85 * ACPI Table interfaces 89 * ACPI Table interfaces
86 */ 90 */
91#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_root_pointer
87acpi_physical_address acpi_os_get_root_pointer(void); 92acpi_physical_address acpi_os_get_root_pointer(void);
93#endif
88 94
95#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_predefined_override
89acpi_status 96acpi_status
90acpi_os_predefined_override(const struct acpi_predefined_names *init_val, 97acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
91 acpi_string * new_val); 98 acpi_string * new_val);
99#endif
92 100
101#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_table_override
93acpi_status 102acpi_status
94acpi_os_table_override(struct acpi_table_header *existing_table, 103acpi_os_table_override(struct acpi_table_header *existing_table,
95 struct acpi_table_header **new_table); 104 struct acpi_table_header **new_table);
105#endif
96 106
107#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_physical_table_override
97acpi_status 108acpi_status
98acpi_os_physical_table_override(struct acpi_table_header *existing_table, 109acpi_os_physical_table_override(struct acpi_table_header *existing_table,
99 acpi_physical_address * new_address, 110 acpi_physical_address * new_address,
100 u32 *new_table_length); 111 u32 *new_table_length);
112#endif
101 113
102/* 114/*
103 * Spinlock primitives 115 * Spinlock primitives
104 */ 116 */
105#ifndef acpi_os_create_lock 117#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
106acpi_status acpi_os_create_lock(acpi_spinlock * out_handle); 118acpi_status acpi_os_create_lock(acpi_spinlock * out_handle);
107#endif 119#endif
108 120
121#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_lock
109void acpi_os_delete_lock(acpi_spinlock handle); 122void acpi_os_delete_lock(acpi_spinlock handle);
123#endif
110 124
125#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_lock
111acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle); 126acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle);
127#endif
112 128
129#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_lock
113void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags); 130void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags);
131#endif
114 132
115/* 133/*
116 * Semaphore primitives 134 * Semaphore primitives
117 */ 135 */
136#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_semaphore
118acpi_status 137acpi_status
119acpi_os_create_semaphore(u32 max_units, 138acpi_os_create_semaphore(u32 max_units,
120 u32 initial_units, acpi_semaphore * out_handle); 139 u32 initial_units, acpi_semaphore * out_handle);
140#endif
121 141
142#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_semaphore
122acpi_status acpi_os_delete_semaphore(acpi_semaphore handle); 143acpi_status acpi_os_delete_semaphore(acpi_semaphore handle);
144#endif
123 145
146#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_semaphore
124acpi_status 147acpi_status
125acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout); 148acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout);
149#endif
126 150
151#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal_semaphore
127acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units); 152acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units);
153#endif
128 154
129/* 155/*
130 * Mutex primitives. May be configured to use semaphores instead via 156 * Mutex primitives. May be configured to use semaphores instead via
@@ -132,63 +158,98 @@ acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units);
132 */ 158 */
133#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) 159#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
134 160
161#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_mutex
135acpi_status acpi_os_create_mutex(acpi_mutex * out_handle); 162acpi_status acpi_os_create_mutex(acpi_mutex * out_handle);
163#endif
136 164
165#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_mutex
137void acpi_os_delete_mutex(acpi_mutex handle); 166void acpi_os_delete_mutex(acpi_mutex handle);
167#endif
138 168
169#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_mutex
139acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout); 170acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout);
171#endif
140 172
173#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_mutex
141void acpi_os_release_mutex(acpi_mutex handle); 174void acpi_os_release_mutex(acpi_mutex handle);
142#endif 175#endif
143 176
177#endif
178
144/* 179/*
145 * Memory allocation and mapping 180 * Memory allocation and mapping
146 */ 181 */
182#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate
147void *acpi_os_allocate(acpi_size size); 183void *acpi_os_allocate(acpi_size size);
184#endif
148 185
186#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed
149void *acpi_os_allocate_zeroed(acpi_size size); 187void *acpi_os_allocate_zeroed(acpi_size size);
188#endif
150 189
190#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free
151void acpi_os_free(void *memory); 191void acpi_os_free(void *memory);
192#endif
152 193
194#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_map_memory
153void __iomem *acpi_os_map_memory(acpi_physical_address where, 195void __iomem *acpi_os_map_memory(acpi_physical_address where,
154 acpi_size length); 196 acpi_size length);
197#endif
155 198
199#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_unmap_memory
156void acpi_os_unmap_memory(void __iomem * logical_address, acpi_size size); 200void acpi_os_unmap_memory(void __iomem * logical_address, acpi_size size);
201#endif
157void early_acpi_os_unmap_memory(void __iomem * virt, acpi_size size); 202void early_acpi_os_unmap_memory(void __iomem * virt, acpi_size size);
158 203
159#ifdef ACPI_FUTURE_USAGE 204#ifdef ACPI_FUTURE_USAGE
205#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_physical_address
160acpi_status 206acpi_status
161acpi_os_get_physical_address(void *logical_address, 207acpi_os_get_physical_address(void *logical_address,
162 acpi_physical_address * physical_address); 208 acpi_physical_address * physical_address);
163#endif 209#endif
210#endif
164 211
165/* 212/*
166 * Memory/Object Cache 213 * Memory/Object Cache
167 */ 214 */
215#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_cache
168acpi_status 216acpi_status
169acpi_os_create_cache(char *cache_name, 217acpi_os_create_cache(char *cache_name,
170 u16 object_size, 218 u16 object_size,
171 u16 max_depth, acpi_cache_t ** return_cache); 219 u16 max_depth, acpi_cache_t ** return_cache);
220#endif
172 221
222#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_cache
173acpi_status acpi_os_delete_cache(acpi_cache_t * cache); 223acpi_status acpi_os_delete_cache(acpi_cache_t * cache);
224#endif
174 225
226#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_purge_cache
175acpi_status acpi_os_purge_cache(acpi_cache_t * cache); 227acpi_status acpi_os_purge_cache(acpi_cache_t * cache);
228#endif
176 229
230#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object
177void *acpi_os_acquire_object(acpi_cache_t * cache); 231void *acpi_os_acquire_object(acpi_cache_t * cache);
232#endif
178 233
234#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_object
179acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object); 235acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object);
236#endif
180 237
181/* 238/*
182 * Interrupt handlers 239 * Interrupt handlers
183 */ 240 */
241#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_install_interrupt_handler
184acpi_status 242acpi_status
185acpi_os_install_interrupt_handler(u32 interrupt_number, 243acpi_os_install_interrupt_handler(u32 interrupt_number,
186 acpi_osd_handler service_routine, 244 acpi_osd_handler service_routine,
187 void *context); 245 void *context);
246#endif
188 247
248#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_remove_interrupt_handler
189acpi_status 249acpi_status
190acpi_os_remove_interrupt_handler(u32 interrupt_number, 250acpi_os_remove_interrupt_handler(u32 interrupt_number,
191 acpi_osd_handler service_routine); 251 acpi_osd_handler service_routine);
252#endif
192 253
193void acpi_os_gpe_count(u32 gpe_number); 254void acpi_os_gpe_count(u32 gpe_number);
194void acpi_os_fixed_event_count(u32 fixed_event_number); 255void acpi_os_fixed_event_count(u32 fixed_event_number);
@@ -196,86 +257,158 @@ void acpi_os_fixed_event_count(u32 fixed_event_number);
196/* 257/*
197 * Threads and Scheduling 258 * Threads and Scheduling
198 */ 259 */
260#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
199acpi_thread_id acpi_os_get_thread_id(void); 261acpi_thread_id acpi_os_get_thread_id(void);
262#endif
200 263
264#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_execute
201acpi_status 265acpi_status
202acpi_os_execute(acpi_execute_type type, 266acpi_os_execute(acpi_execute_type type,
203 acpi_osd_exec_callback function, void *context); 267 acpi_osd_exec_callback function, void *context);
268#endif
204 269
205acpi_status 270acpi_status
206acpi_os_hotplug_execute(acpi_osd_exec_callback function, void *context); 271acpi_os_hotplug_execute(acpi_osd_exec_callback function, void *context);
207 272
273#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_events_complete
208void acpi_os_wait_events_complete(void); 274void acpi_os_wait_events_complete(void);
275#endif
209 276
277#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_sleep
210void acpi_os_sleep(u64 milliseconds); 278void acpi_os_sleep(u64 milliseconds);
279#endif
211 280
281#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_stall
212void acpi_os_stall(u32 microseconds); 282void acpi_os_stall(u32 microseconds);
283#endif
213 284
214/* 285/*
215 * Platform and hardware-independent I/O interfaces 286 * Platform and hardware-independent I/O interfaces
216 */ 287 */
217acpi_status acpi_os_read_port(acpi_io_address address, u32 * value, u32 width); 288#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_port
289acpi_status acpi_os_read_port(acpi_io_address address, u32 *value, u32 width);
290#endif
218 291
292#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_port
219acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width); 293acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width);
294#endif
220 295
221/* 296/*
222 * Platform and hardware-independent physical memory interfaces 297 * Platform and hardware-independent physical memory interfaces
223 */ 298 */
299#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_memory
224acpi_status 300acpi_status
225acpi_os_read_memory(acpi_physical_address address, u64 *value, u32 width); 301acpi_os_read_memory(acpi_physical_address address, u64 *value, u32 width);
302#endif
226 303
304#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_memory
227acpi_status 305acpi_status
228acpi_os_write_memory(acpi_physical_address address, u64 value, u32 width); 306acpi_os_write_memory(acpi_physical_address address, u64 value, u32 width);
307#endif
229 308
230/* 309/*
231 * Platform and hardware-independent PCI configuration space access 310 * Platform and hardware-independent PCI configuration space access
232 * Note: Can't use "Register" as a parameter, changed to "Reg" -- 311 * Note: Can't use "Register" as a parameter, changed to "Reg" --
233 * certain compilers complain. 312 * certain compilers complain.
234 */ 313 */
314#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_pci_configuration
235acpi_status 315acpi_status
236acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id, 316acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id,
237 u32 reg, u64 *value, u32 width); 317 u32 reg, u64 *value, u32 width);
318#endif
238 319
320#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_pci_configuration
239acpi_status 321acpi_status
240acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id, 322acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id,
241 u32 reg, u64 value, u32 width); 323 u32 reg, u64 value, u32 width);
324#endif
242 325
243/* 326/*
244 * Miscellaneous 327 * Miscellaneous
245 */ 328 */
329#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable
330u8 acpi_os_readable(void *pointer, acpi_size length);
331#endif
332
333#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable
334u8 acpi_os_writable(void *pointer, acpi_size length);
335#endif
336
337#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_timer
246u64 acpi_os_get_timer(void); 338u64 acpi_os_get_timer(void);
339#endif
247 340
341#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal
248acpi_status acpi_os_signal(u32 function, void *info); 342acpi_status acpi_os_signal(u32 function, void *info);
343#endif
249 344
250/* 345/*
251 * Debug print routines 346 * Debug print routines
252 */ 347 */
348#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_printf
253void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...); 349void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...);
350#endif
254 351
352#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_vprintf
255void acpi_os_vprintf(const char *format, va_list args); 353void acpi_os_vprintf(const char *format, va_list args);
354#endif
256 355
356#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output
257void acpi_os_redirect_output(void *destination); 357void acpi_os_redirect_output(void *destination);
358#endif
258 359
259#ifdef ACPI_FUTURE_USAGE 360#ifdef ACPI_FUTURE_USAGE
260/* 361/*
261 * Debug input 362 * Debug input
262 */ 363 */
263u32 acpi_os_get_line(char *buffer); 364#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_line
365acpi_status acpi_os_get_line(char *buffer, u32 buffer_length, u32 *bytes_read);
366#endif
367#endif
368
369/*
370 * Obtain ACPI table(s)
371 */
372#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name
373acpi_status
374acpi_os_get_table_by_name(char *signature,
375 u32 instance,
376 struct acpi_table_header **table,
377 acpi_physical_address * address);
378#endif
379
380#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index
381acpi_status
382acpi_os_get_table_by_index(u32 index,
383 struct acpi_table_header **table,
384 u32 *instance, acpi_physical_address * address);
385#endif
386
387#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address
388acpi_status
389acpi_os_get_table_by_address(acpi_physical_address address,
390 struct acpi_table_header **table);
264#endif 391#endif
265 392
266/* 393/*
267 * Directory manipulation 394 * Directory manipulation
268 */ 395 */
396#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory
269void *acpi_os_open_directory(char *pathname, 397void *acpi_os_open_directory(char *pathname,
270 char *wildcard_spec, char requested_file_type); 398 char *wildcard_spec, char requested_file_type);
399#endif
271 400
272/* requeste_file_type values */ 401/* requeste_file_type values */
273 402
274#define REQUEST_FILE_ONLY 0 403#define REQUEST_FILE_ONLY 0
275#define REQUEST_DIR_ONLY 1 404#define REQUEST_DIR_ONLY 1
276 405
406#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename
277char *acpi_os_get_next_filename(void *dir_handle); 407char *acpi_os_get_next_filename(void *dir_handle);
408#endif
278 409
410#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory
279void acpi_os_close_directory(void *dir_handle); 411void acpi_os_close_directory(void *dir_handle);
412#endif
280 413
281#endif /* __ACPIOSXF_H__ */ 414#endif /* __ACPIOSXF_H__ */
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index 0e6e73c04dcb..04e87a3b8086 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -182,6 +182,7 @@ static inline void acpi_os_free(void *a)
182 } \ 182 } \
183 lock ? AE_OK : AE_NO_MEMORY; \ 183 lock ? AE_OK : AE_NO_MEMORY; \
184}) 184})
185#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
185 186
186#ifdef EXPORT_ACPI_INTERFACES 187#ifdef EXPORT_ACPI_INTERFACES
187#include <linux/export.h> 188#include <linux/export.h>