Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.6-rc2 456 lines 13 kB view raw
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 - 2016, 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 <acpi/platform/acenv.h> 50#include <acpi/actypes.h> 51 52/* Types for acpi_os_execute */ 53 54typedef enum { 55 OSL_GLOBAL_LOCK_HANDLER, 56 OSL_NOTIFY_HANDLER, 57 OSL_GPE_HANDLER, 58 OSL_DEBUGGER_MAIN_THREAD, 59 OSL_DEBUGGER_EXEC_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 72struct acpi_signal_fatal_info { 73 u32 type; 74 u32 code; 75 u32 argument; 76}; 77 78/* 79 * OSL Initialization and shutdown primitives 80 */ 81#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize 82acpi_status acpi_os_initialize(void); 83#endif 84 85#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate 86acpi_status acpi_os_terminate(void); 87#endif 88 89/* 90 * ACPI Table interfaces 91 */ 92#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_root_pointer 93acpi_physical_address acpi_os_get_root_pointer(void); 94#endif 95 96#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_predefined_override 97acpi_status 98acpi_os_predefined_override(const struct acpi_predefined_names *init_val, 99 char **new_val); 100#endif 101 102#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_table_override 103acpi_status 104acpi_os_table_override(struct acpi_table_header *existing_table, 105 struct acpi_table_header **new_table); 106#endif 107 108#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_physical_table_override 109acpi_status 110acpi_os_physical_table_override(struct acpi_table_header *existing_table, 111 acpi_physical_address * new_address, 112 u32 *new_table_length); 113#endif 114 115/* 116 * Spinlock primitives 117 */ 118#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock 119acpi_status acpi_os_create_lock(acpi_spinlock * out_handle); 120#endif 121 122#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_lock 123void acpi_os_delete_lock(acpi_spinlock handle); 124#endif 125 126#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_lock 127acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle); 128#endif 129 130#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_lock 131void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags); 132#endif 133 134/* 135 * Semaphore primitives 136 */ 137#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_semaphore 138acpi_status 139acpi_os_create_semaphore(u32 max_units, 140 u32 initial_units, acpi_semaphore * out_handle); 141#endif 142 143#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_semaphore 144acpi_status acpi_os_delete_semaphore(acpi_semaphore handle); 145#endif 146 147#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_semaphore 148acpi_status 149acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout); 150#endif 151 152#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal_semaphore 153acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units); 154#endif 155 156/* 157 * Mutex primitives. May be configured to use semaphores instead via 158 * ACPI_MUTEX_TYPE (see platform/acenv.h) 159 */ 160#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) 161 162#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_mutex 163acpi_status acpi_os_create_mutex(acpi_mutex * out_handle); 164#endif 165 166#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_mutex 167void acpi_os_delete_mutex(acpi_mutex handle); 168#endif 169 170#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_mutex 171acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout); 172#endif 173 174#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_mutex 175void acpi_os_release_mutex(acpi_mutex handle); 176#endif 177 178#endif 179 180/* 181 * Memory allocation and mapping 182 */ 183#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate 184void *acpi_os_allocate(acpi_size size); 185#endif 186 187#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed 188void *acpi_os_allocate_zeroed(acpi_size size); 189#endif 190 191#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free 192void acpi_os_free(void *memory); 193#endif 194 195#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_map_memory 196void *acpi_os_map_memory(acpi_physical_address where, acpi_size length); 197#endif 198 199#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_unmap_memory 200void acpi_os_unmap_memory(void *logical_address, acpi_size size); 201#endif 202 203#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_physical_address 204acpi_status 205acpi_os_get_physical_address(void *logical_address, 206 acpi_physical_address * physical_address); 207#endif 208 209/* 210 * Memory/Object Cache 211 */ 212#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_cache 213acpi_status 214acpi_os_create_cache(char *cache_name, 215 u16 object_size, 216 u16 max_depth, acpi_cache_t ** return_cache); 217#endif 218 219#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_cache 220acpi_status acpi_os_delete_cache(acpi_cache_t * cache); 221#endif 222 223#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_purge_cache 224acpi_status acpi_os_purge_cache(acpi_cache_t * cache); 225#endif 226 227#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object 228void *acpi_os_acquire_object(acpi_cache_t * cache); 229#endif 230 231#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_object 232acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object); 233#endif 234 235/* 236 * Interrupt handlers 237 */ 238#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_install_interrupt_handler 239acpi_status 240acpi_os_install_interrupt_handler(u32 interrupt_number, 241 acpi_osd_handler service_routine, 242 void *context); 243#endif 244 245#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_remove_interrupt_handler 246acpi_status 247acpi_os_remove_interrupt_handler(u32 interrupt_number, 248 acpi_osd_handler service_routine); 249#endif 250 251/* 252 * Threads and Scheduling 253 */ 254#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id 255acpi_thread_id acpi_os_get_thread_id(void); 256#endif 257 258#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_execute 259acpi_status 260acpi_os_execute(acpi_execute_type type, 261 acpi_osd_exec_callback function, void *context); 262#endif 263 264#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_events_complete 265void acpi_os_wait_events_complete(void); 266#endif 267 268#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_sleep 269void acpi_os_sleep(u64 milliseconds); 270#endif 271 272#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_stall 273void acpi_os_stall(u32 microseconds); 274#endif 275 276/* 277 * Platform and hardware-independent I/O interfaces 278 */ 279#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_port 280acpi_status acpi_os_read_port(acpi_io_address address, u32 *value, u32 width); 281#endif 282 283#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_port 284acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width); 285#endif 286 287/* 288 * Platform and hardware-independent physical memory interfaces 289 */ 290#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_memory 291acpi_status 292acpi_os_read_memory(acpi_physical_address address, u64 *value, u32 width); 293#endif 294 295#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_memory 296acpi_status 297acpi_os_write_memory(acpi_physical_address address, u64 value, u32 width); 298#endif 299 300/* 301 * Platform and hardware-independent PCI configuration space access 302 * Note: Can't use "Register" as a parameter, changed to "Reg" -- 303 * certain compilers complain. 304 */ 305#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_pci_configuration 306acpi_status 307acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id, 308 u32 reg, u64 *value, u32 width); 309#endif 310 311#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_pci_configuration 312acpi_status 313acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id, 314 u32 reg, u64 value, u32 width); 315#endif 316 317/* 318 * Miscellaneous 319 */ 320#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable 321u8 acpi_os_readable(void *pointer, acpi_size length); 322#endif 323 324#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable 325u8 acpi_os_writable(void *pointer, acpi_size length); 326#endif 327 328#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_timer 329u64 acpi_os_get_timer(void); 330#endif 331 332#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal 333acpi_status acpi_os_signal(u32 function, void *info); 334#endif 335 336/* 337 * Debug print routines 338 */ 339#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_printf 340void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...); 341#endif 342 343#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_vprintf 344void acpi_os_vprintf(const char *format, va_list args); 345#endif 346 347#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output 348void acpi_os_redirect_output(void *destination); 349#endif 350 351/* 352 * Debug IO 353 */ 354#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_line 355acpi_status acpi_os_get_line(char *buffer, u32 buffer_length, u32 *bytes_read); 356#endif 357 358#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_command_signals 359acpi_status acpi_os_initialize_command_signals(void); 360#endif 361 362#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_command_signals 363void acpi_os_terminate_command_signals(void); 364#endif 365 366#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_command_ready 367acpi_status acpi_os_wait_command_ready(void); 368#endif 369 370#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_notify_command_complete 371acpi_status acpi_os_notify_command_complete(void); 372#endif 373 374/* 375 * Obtain ACPI table(s) 376 */ 377#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name 378acpi_status 379acpi_os_get_table_by_name(char *signature, 380 u32 instance, 381 struct acpi_table_header **table, 382 acpi_physical_address * address); 383#endif 384 385#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index 386acpi_status 387acpi_os_get_table_by_index(u32 index, 388 struct acpi_table_header **table, 389 u32 *instance, acpi_physical_address * address); 390#endif 391 392#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address 393acpi_status 394acpi_os_get_table_by_address(acpi_physical_address address, 395 struct acpi_table_header **table); 396#endif 397 398/* 399 * Directory manipulation 400 */ 401#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory 402void *acpi_os_open_directory(char *pathname, 403 char *wildcard_spec, char requested_file_type); 404#endif 405 406/* requeste_file_type values */ 407 408#define REQUEST_FILE_ONLY 0 409#define REQUEST_DIR_ONLY 1 410 411#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename 412char *acpi_os_get_next_filename(void *dir_handle); 413#endif 414 415#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory 416void acpi_os_close_directory(void *dir_handle); 417#endif 418 419/* 420 * File I/O and related support 421 */ 422#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_file 423ACPI_FILE acpi_os_open_file(const char *path, u8 modes); 424#endif 425 426#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_file 427void acpi_os_close_file(ACPI_FILE file); 428#endif 429 430#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_file 431int 432acpi_os_read_file(ACPI_FILE file, 433 void *buffer, acpi_size size, acpi_size count); 434#endif 435 436#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_file 437int 438acpi_os_write_file(ACPI_FILE file, 439 void *buffer, acpi_size size, acpi_size count); 440#endif 441 442#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_file_offset 443long acpi_os_get_file_offset(ACPI_FILE file); 444#endif 445 446#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_set_file_offset 447acpi_status acpi_os_set_file_offset(ACPI_FILE file, long offset, u8 from); 448#endif 449 450#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_trace_point 451void 452acpi_os_trace_point(acpi_trace_event_type type, 453 u8 begin, u8 *aml, char *pathname); 454#endif 455 456#endif /* __ACPIOSXF_H__ */