1*4882a593Smuzhiyun /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 2*4882a593Smuzhiyun /****************************************************************************** 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These 5*4882a593Smuzhiyun * interfaces must be implemented by OSL to interface the 6*4882a593Smuzhiyun * ACPI components to the host operating system. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Copyright (C) 2000 - 2020, Intel Corp. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun *****************************************************************************/ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #ifndef __ACPIOSXF_H__ 13*4882a593Smuzhiyun #define __ACPIOSXF_H__ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #include <acpi/platform/acenv.h> 16*4882a593Smuzhiyun #include <acpi/actypes.h> 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* Types for acpi_os_execute */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun typedef enum { 21*4882a593Smuzhiyun OSL_GLOBAL_LOCK_HANDLER, 22*4882a593Smuzhiyun OSL_NOTIFY_HANDLER, 23*4882a593Smuzhiyun OSL_GPE_HANDLER, 24*4882a593Smuzhiyun OSL_DEBUGGER_MAIN_THREAD, 25*4882a593Smuzhiyun OSL_DEBUGGER_EXEC_THREAD, 26*4882a593Smuzhiyun OSL_EC_POLL_HANDLER, 27*4882a593Smuzhiyun OSL_EC_BURST_HANDLER 28*4882a593Smuzhiyun } acpi_execute_type; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define ACPI_NO_UNIT_LIMIT ((u32) -1) 31*4882a593Smuzhiyun #define ACPI_MUTEX_SEM 1 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* Functions for acpi_os_signal */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define ACPI_SIGNAL_FATAL 0 36*4882a593Smuzhiyun #define ACPI_SIGNAL_BREAKPOINT 1 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun struct acpi_signal_fatal_info { 39*4882a593Smuzhiyun u32 type; 40*4882a593Smuzhiyun u32 code; 41*4882a593Smuzhiyun u32 argument; 42*4882a593Smuzhiyun }; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* 45*4882a593Smuzhiyun * OSL Initialization and shutdown primitives 46*4882a593Smuzhiyun */ 47*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize 48*4882a593Smuzhiyun acpi_status acpi_os_initialize(void); 49*4882a593Smuzhiyun #endif 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate 52*4882a593Smuzhiyun acpi_status acpi_os_terminate(void); 53*4882a593Smuzhiyun #endif 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /* 56*4882a593Smuzhiyun * ACPI Table interfaces 57*4882a593Smuzhiyun */ 58*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_root_pointer 59*4882a593Smuzhiyun acpi_physical_address acpi_os_get_root_pointer(void); 60*4882a593Smuzhiyun #endif 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_predefined_override 63*4882a593Smuzhiyun acpi_status 64*4882a593Smuzhiyun acpi_os_predefined_override(const struct acpi_predefined_names *init_val, 65*4882a593Smuzhiyun acpi_string *new_val); 66*4882a593Smuzhiyun #endif 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_table_override 69*4882a593Smuzhiyun acpi_status 70*4882a593Smuzhiyun acpi_os_table_override(struct acpi_table_header *existing_table, 71*4882a593Smuzhiyun struct acpi_table_header **new_table); 72*4882a593Smuzhiyun #endif 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_physical_table_override 75*4882a593Smuzhiyun acpi_status 76*4882a593Smuzhiyun acpi_os_physical_table_override(struct acpi_table_header *existing_table, 77*4882a593Smuzhiyun acpi_physical_address *new_address, 78*4882a593Smuzhiyun u32 *new_table_length); 79*4882a593Smuzhiyun #endif 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* 82*4882a593Smuzhiyun * Spinlock primitives 83*4882a593Smuzhiyun */ 84*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock 85*4882a593Smuzhiyun acpi_status acpi_os_create_lock(acpi_spinlock * out_handle); 86*4882a593Smuzhiyun #endif 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_lock 89*4882a593Smuzhiyun void acpi_os_delete_lock(acpi_spinlock handle); 90*4882a593Smuzhiyun #endif 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_lock 93*4882a593Smuzhiyun acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle); 94*4882a593Smuzhiyun #endif 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_lock 97*4882a593Smuzhiyun void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags); 98*4882a593Smuzhiyun #endif 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* 101*4882a593Smuzhiyun * RAW spinlock primitives. If the OS does not provide them, fallback to 102*4882a593Smuzhiyun * spinlock primitives 103*4882a593Smuzhiyun */ 104*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_raw_lock 105*4882a593Smuzhiyun # define acpi_os_create_raw_lock(out_handle) acpi_os_create_lock(out_handle) 106*4882a593Smuzhiyun #endif 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_raw_lock 109*4882a593Smuzhiyun # define acpi_os_delete_raw_lock(handle) acpi_os_delete_lock(handle) 110*4882a593Smuzhiyun #endif 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_raw_lock 113*4882a593Smuzhiyun # define acpi_os_acquire_raw_lock(handle) acpi_os_acquire_lock(handle) 114*4882a593Smuzhiyun #endif 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_raw_lock 117*4882a593Smuzhiyun # define acpi_os_release_raw_lock(handle, flags) \ 118*4882a593Smuzhiyun acpi_os_release_lock(handle, flags) 119*4882a593Smuzhiyun #endif 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun /* 122*4882a593Smuzhiyun * Semaphore primitives 123*4882a593Smuzhiyun */ 124*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_semaphore 125*4882a593Smuzhiyun acpi_status 126*4882a593Smuzhiyun acpi_os_create_semaphore(u32 max_units, 127*4882a593Smuzhiyun u32 initial_units, acpi_semaphore * out_handle); 128*4882a593Smuzhiyun #endif 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_semaphore 131*4882a593Smuzhiyun acpi_status acpi_os_delete_semaphore(acpi_semaphore handle); 132*4882a593Smuzhiyun #endif 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_semaphore 135*4882a593Smuzhiyun acpi_status 136*4882a593Smuzhiyun acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout); 137*4882a593Smuzhiyun #endif 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal_semaphore 140*4882a593Smuzhiyun acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units); 141*4882a593Smuzhiyun #endif 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun /* 144*4882a593Smuzhiyun * Mutex primitives. May be configured to use semaphores instead via 145*4882a593Smuzhiyun * ACPI_MUTEX_TYPE (see platform/acenv.h) 146*4882a593Smuzhiyun */ 147*4882a593Smuzhiyun #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_mutex 150*4882a593Smuzhiyun acpi_status acpi_os_create_mutex(acpi_mutex * out_handle); 151*4882a593Smuzhiyun #endif 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_mutex 154*4882a593Smuzhiyun void acpi_os_delete_mutex(acpi_mutex handle); 155*4882a593Smuzhiyun #endif 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_mutex 158*4882a593Smuzhiyun acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout); 159*4882a593Smuzhiyun #endif 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_mutex 162*4882a593Smuzhiyun void acpi_os_release_mutex(acpi_mutex handle); 163*4882a593Smuzhiyun #endif 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun #endif 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /* 168*4882a593Smuzhiyun * Memory allocation and mapping 169*4882a593Smuzhiyun */ 170*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate 171*4882a593Smuzhiyun void *acpi_os_allocate(acpi_size size); 172*4882a593Smuzhiyun #endif 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed 175*4882a593Smuzhiyun void *acpi_os_allocate_zeroed(acpi_size size); 176*4882a593Smuzhiyun #endif 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free 179*4882a593Smuzhiyun void acpi_os_free(void *memory); 180*4882a593Smuzhiyun #endif 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_map_memory 183*4882a593Smuzhiyun void *acpi_os_map_memory(acpi_physical_address where, acpi_size length); 184*4882a593Smuzhiyun #endif 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_unmap_memory 187*4882a593Smuzhiyun void acpi_os_unmap_memory(void *logical_address, acpi_size size); 188*4882a593Smuzhiyun #endif 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_physical_address 191*4882a593Smuzhiyun acpi_status 192*4882a593Smuzhiyun acpi_os_get_physical_address(void *logical_address, 193*4882a593Smuzhiyun acpi_physical_address *physical_address); 194*4882a593Smuzhiyun #endif 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun /* 197*4882a593Smuzhiyun * Memory/Object Cache 198*4882a593Smuzhiyun */ 199*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_cache 200*4882a593Smuzhiyun acpi_status 201*4882a593Smuzhiyun acpi_os_create_cache(char *cache_name, 202*4882a593Smuzhiyun u16 object_size, 203*4882a593Smuzhiyun u16 max_depth, acpi_cache_t ** return_cache); 204*4882a593Smuzhiyun #endif 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_cache 207*4882a593Smuzhiyun acpi_status acpi_os_delete_cache(acpi_cache_t * cache); 208*4882a593Smuzhiyun #endif 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_purge_cache 211*4882a593Smuzhiyun acpi_status acpi_os_purge_cache(acpi_cache_t * cache); 212*4882a593Smuzhiyun #endif 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object 215*4882a593Smuzhiyun void *acpi_os_acquire_object(acpi_cache_t * cache); 216*4882a593Smuzhiyun #endif 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_object 219*4882a593Smuzhiyun acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object); 220*4882a593Smuzhiyun #endif 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun /* 223*4882a593Smuzhiyun * Interrupt handlers 224*4882a593Smuzhiyun */ 225*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_install_interrupt_handler 226*4882a593Smuzhiyun acpi_status 227*4882a593Smuzhiyun acpi_os_install_interrupt_handler(u32 interrupt_number, 228*4882a593Smuzhiyun acpi_osd_handler service_routine, 229*4882a593Smuzhiyun void *context); 230*4882a593Smuzhiyun #endif 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_remove_interrupt_handler 233*4882a593Smuzhiyun acpi_status 234*4882a593Smuzhiyun acpi_os_remove_interrupt_handler(u32 interrupt_number, 235*4882a593Smuzhiyun acpi_osd_handler service_routine); 236*4882a593Smuzhiyun #endif 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun /* 239*4882a593Smuzhiyun * Threads and Scheduling 240*4882a593Smuzhiyun */ 241*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id 242*4882a593Smuzhiyun acpi_thread_id acpi_os_get_thread_id(void); 243*4882a593Smuzhiyun #endif 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_execute 246*4882a593Smuzhiyun acpi_status 247*4882a593Smuzhiyun acpi_os_execute(acpi_execute_type type, 248*4882a593Smuzhiyun acpi_osd_exec_callback function, void *context); 249*4882a593Smuzhiyun #endif 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_events_complete 252*4882a593Smuzhiyun void acpi_os_wait_events_complete(void); 253*4882a593Smuzhiyun #endif 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_sleep 256*4882a593Smuzhiyun void acpi_os_sleep(u64 milliseconds); 257*4882a593Smuzhiyun #endif 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_stall 260*4882a593Smuzhiyun void acpi_os_stall(u32 microseconds); 261*4882a593Smuzhiyun #endif 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun /* 264*4882a593Smuzhiyun * Platform and hardware-independent I/O interfaces 265*4882a593Smuzhiyun */ 266*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_port 267*4882a593Smuzhiyun acpi_status acpi_os_read_port(acpi_io_address address, u32 *value, u32 width); 268*4882a593Smuzhiyun #endif 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_port 271*4882a593Smuzhiyun acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width); 272*4882a593Smuzhiyun #endif 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun /* 275*4882a593Smuzhiyun * Platform and hardware-independent physical memory interfaces 276*4882a593Smuzhiyun */ 277*4882a593Smuzhiyun int acpi_os_read_iomem(void __iomem *virt_addr, u64 *value, u32 width); 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_memory 280*4882a593Smuzhiyun acpi_status 281*4882a593Smuzhiyun acpi_os_read_memory(acpi_physical_address address, u64 *value, u32 width); 282*4882a593Smuzhiyun #endif 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_memory 285*4882a593Smuzhiyun acpi_status 286*4882a593Smuzhiyun acpi_os_write_memory(acpi_physical_address address, u64 value, u32 width); 287*4882a593Smuzhiyun #endif 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* 290*4882a593Smuzhiyun * Platform and hardware-independent PCI configuration space access 291*4882a593Smuzhiyun * Note: Can't use "Register" as a parameter, changed to "Reg" -- 292*4882a593Smuzhiyun * certain compilers complain. 293*4882a593Smuzhiyun */ 294*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_pci_configuration 295*4882a593Smuzhiyun acpi_status 296*4882a593Smuzhiyun acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id, 297*4882a593Smuzhiyun u32 reg, u64 *value, u32 width); 298*4882a593Smuzhiyun #endif 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_pci_configuration 301*4882a593Smuzhiyun acpi_status 302*4882a593Smuzhiyun acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id, 303*4882a593Smuzhiyun u32 reg, u64 value, u32 width); 304*4882a593Smuzhiyun #endif 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun /* 307*4882a593Smuzhiyun * Miscellaneous 308*4882a593Smuzhiyun */ 309*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable 310*4882a593Smuzhiyun u8 acpi_os_readable(void *pointer, acpi_size length); 311*4882a593Smuzhiyun #endif 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable 314*4882a593Smuzhiyun u8 acpi_os_writable(void *pointer, acpi_size length); 315*4882a593Smuzhiyun #endif 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_timer 318*4882a593Smuzhiyun u64 acpi_os_get_timer(void); 319*4882a593Smuzhiyun #endif 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal 322*4882a593Smuzhiyun acpi_status acpi_os_signal(u32 function, void *info); 323*4882a593Smuzhiyun #endif 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_enter_sleep 326*4882a593Smuzhiyun acpi_status acpi_os_enter_sleep(u8 sleep_state, u32 rega_value, u32 regb_value); 327*4882a593Smuzhiyun #endif 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun /* 330*4882a593Smuzhiyun * Debug print routines 331*4882a593Smuzhiyun */ 332*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_printf 333*4882a593Smuzhiyun ACPI_PRINTF_LIKE(1) 334*4882a593Smuzhiyun void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...); 335*4882a593Smuzhiyun #endif 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_vprintf 338*4882a593Smuzhiyun void acpi_os_vprintf(const char *format, va_list args); 339*4882a593Smuzhiyun #endif 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output 342*4882a593Smuzhiyun void acpi_os_redirect_output(void *destination); 343*4882a593Smuzhiyun #endif 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun /* 346*4882a593Smuzhiyun * Debug IO 347*4882a593Smuzhiyun */ 348*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_line 349*4882a593Smuzhiyun acpi_status acpi_os_get_line(char *buffer, u32 buffer_length, u32 *bytes_read); 350*4882a593Smuzhiyun #endif 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_debugger 353*4882a593Smuzhiyun acpi_status acpi_os_initialize_debugger(void); 354*4882a593Smuzhiyun #endif 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_debugger 357*4882a593Smuzhiyun void acpi_os_terminate_debugger(void); 358*4882a593Smuzhiyun #endif 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_command_ready 361*4882a593Smuzhiyun acpi_status acpi_os_wait_command_ready(void); 362*4882a593Smuzhiyun #endif 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_notify_command_complete 365*4882a593Smuzhiyun acpi_status acpi_os_notify_command_complete(void); 366*4882a593Smuzhiyun #endif 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_trace_point 369*4882a593Smuzhiyun void 370*4882a593Smuzhiyun acpi_os_trace_point(acpi_trace_event_type type, 371*4882a593Smuzhiyun u8 begin, u8 *aml, char *pathname); 372*4882a593Smuzhiyun #endif 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun /* 375*4882a593Smuzhiyun * Obtain ACPI table(s) 376*4882a593Smuzhiyun */ 377*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name 378*4882a593Smuzhiyun acpi_status 379*4882a593Smuzhiyun acpi_os_get_table_by_name(char *signature, 380*4882a593Smuzhiyun u32 instance, 381*4882a593Smuzhiyun struct acpi_table_header **table, 382*4882a593Smuzhiyun acpi_physical_address *address); 383*4882a593Smuzhiyun #endif 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index 386*4882a593Smuzhiyun acpi_status 387*4882a593Smuzhiyun acpi_os_get_table_by_index(u32 index, 388*4882a593Smuzhiyun struct acpi_table_header **table, 389*4882a593Smuzhiyun u32 *instance, acpi_physical_address *address); 390*4882a593Smuzhiyun #endif 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address 393*4882a593Smuzhiyun acpi_status 394*4882a593Smuzhiyun acpi_os_get_table_by_address(acpi_physical_address address, 395*4882a593Smuzhiyun struct acpi_table_header **table); 396*4882a593Smuzhiyun #endif 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun /* 399*4882a593Smuzhiyun * Directory manipulation 400*4882a593Smuzhiyun */ 401*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory 402*4882a593Smuzhiyun void *acpi_os_open_directory(char *pathname, 403*4882a593Smuzhiyun char *wildcard_spec, char requested_file_type); 404*4882a593Smuzhiyun #endif 405*4882a593Smuzhiyun 406*4882a593Smuzhiyun /* requeste_file_type values */ 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun #define REQUEST_FILE_ONLY 0 409*4882a593Smuzhiyun #define REQUEST_DIR_ONLY 1 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename 412*4882a593Smuzhiyun char *acpi_os_get_next_filename(void *dir_handle); 413*4882a593Smuzhiyun #endif 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory 416*4882a593Smuzhiyun void acpi_os_close_directory(void *dir_handle); 417*4882a593Smuzhiyun #endif 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun #endif /* __ACPIOSXF_H__ */ 420