11da177e4SLinus Torvalds 21da177e4SLinus Torvalds /****************************************************************************** 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Name: acpixf.h - External interfaces to the ACPI subsystem 51da177e4SLinus Torvalds * 61da177e4SLinus Torvalds *****************************************************************************/ 71da177e4SLinus Torvalds 81da177e4SLinus Torvalds /* 9b4e104eaSBob Moore * Copyright (C) 2000 - 2011, Intel Corp. 101da177e4SLinus Torvalds * All rights reserved. 111da177e4SLinus Torvalds * 121da177e4SLinus Torvalds * Redistribution and use in source and binary forms, with or without 131da177e4SLinus Torvalds * modification, are permitted provided that the following conditions 141da177e4SLinus Torvalds * are met: 151da177e4SLinus Torvalds * 1. Redistributions of source code must retain the above copyright 161da177e4SLinus Torvalds * notice, this list of conditions, and the following disclaimer, 171da177e4SLinus Torvalds * without modification. 181da177e4SLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 191da177e4SLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 201da177e4SLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 211da177e4SLinus Torvalds * including a substantially similar Disclaimer requirement for further 221da177e4SLinus Torvalds * binary redistribution. 231da177e4SLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 241da177e4SLinus Torvalds * of any contributors may be used to endorse or promote products derived 251da177e4SLinus Torvalds * from this software without specific prior written permission. 261da177e4SLinus Torvalds * 271da177e4SLinus Torvalds * Alternatively, this software may be distributed under the terms of the 281da177e4SLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 291da177e4SLinus Torvalds * Software Foundation. 301da177e4SLinus Torvalds * 311da177e4SLinus Torvalds * NO WARRANTY 321da177e4SLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 331da177e4SLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 341da177e4SLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 351da177e4SLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 361da177e4SLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 371da177e4SLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 381da177e4SLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 391da177e4SLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 401da177e4SLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 411da177e4SLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 421da177e4SLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 431da177e4SLinus Torvalds */ 441da177e4SLinus Torvalds 451da177e4SLinus Torvalds #ifndef __ACXFACE_H__ 461da177e4SLinus Torvalds #define __ACXFACE_H__ 471da177e4SLinus Torvalds 4850df4d8bSBob Moore /* Current ACPICA subsystem version in YYYYMMDD format */ 4950df4d8bSBob Moore 505179f59eSBob Moore #define ACPI_CA_VERSION 0x20120620 5150df4d8bSBob Moore 5233620c54SBob Moore #include "acconfig.h" 531da177e4SLinus Torvalds #include "actypes.h" 541da177e4SLinus Torvalds #include "actbl.h" 551da177e4SLinus Torvalds 56889c78beSLin Ming extern u8 acpi_gbl_permanent_mmap; 57889c78beSLin Ming 581da177e4SLinus Torvalds /* 5958f87ed0SLucas De Marchi * Globals that are publicly available, allowing for 6050df4d8bSBob Moore * run time configuration 6150df4d8bSBob Moore */ 6250df4d8bSBob Moore extern u32 acpi_dbg_level; 6350df4d8bSBob Moore extern u32 acpi_dbg_layer; 6450df4d8bSBob Moore extern u8 acpi_gbl_enable_interpreter_slack; 6550df4d8bSBob Moore extern u8 acpi_gbl_all_methods_serialized; 6650df4d8bSBob Moore extern u8 acpi_gbl_create_osi_method; 67f8d80cdfSBob Moore extern u8 acpi_gbl_use_default_register_widths; 6850df4d8bSBob Moore extern acpi_name acpi_gbl_trace_method_name; 6950df4d8bSBob Moore extern u32 acpi_gbl_trace_flags; 7090ab5ee9SRusty Russell extern bool acpi_gbl_enable_aml_debug_object; 7169ec87efSLin Ming extern u8 acpi_gbl_copy_dsdt_locally; 72b681f7d9SMatthew Garrett extern u8 acpi_gbl_truncate_io_addresses; 73d57b23adSBob Moore extern u8 acpi_gbl_disable_auto_repair; 7450df4d8bSBob Moore 7533620c54SBob Moore /* 7633620c54SBob Moore * Hardware-reduced prototypes. All interfaces that use these macros will 7733620c54SBob Moore * be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag 7833620c54SBob Moore * is set to TRUE. 7933620c54SBob Moore */ 8033620c54SBob Moore #if (!ACPI_REDUCED_HARDWARE) 8133620c54SBob Moore #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 8233620c54SBob Moore prototype; 8333620c54SBob Moore 8433620c54SBob Moore #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 8533620c54SBob Moore prototype; 8633620c54SBob Moore 8733620c54SBob Moore #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 8833620c54SBob Moore prototype; 8933620c54SBob Moore 9033620c54SBob Moore #else 9133620c54SBob Moore #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 9233620c54SBob Moore static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);} 9333620c54SBob Moore 9433620c54SBob Moore #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 9533620c54SBob Moore static ACPI_INLINE prototype {return(AE_OK);} 9633620c54SBob Moore 9733620c54SBob Moore #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 9833620c54SBob Moore static ACPI_INLINE prototype {} 9933620c54SBob Moore 10033620c54SBob Moore #endif /* !ACPI_REDUCED_HARDWARE */ 10133620c54SBob Moore 10250df4d8bSBob Moore extern u32 acpi_current_gpe_count; 10350df4d8bSBob Moore extern struct acpi_table_fadt acpi_gbl_FADT; 10431b3d4c3SBob Moore extern u8 acpi_gbl_system_awake_and_running; 10522e5b40aSBob Moore extern u8 acpi_gbl_reduced_hardware; /* ACPI 5.0 */ 10650df4d8bSBob Moore 107237889bfSZhao Yakui extern u32 acpi_rsdt_forced; 10850df4d8bSBob Moore /* 1091da177e4SLinus Torvalds * Global interfaces 1101da177e4SLinus Torvalds */ 111f3d2e786SBob Moore acpi_status 112f3d2e786SBob Moore acpi_initialize_tables(struct acpi_table_desc *initial_storage, 113f3d2e786SBob Moore u32 initial_table_count, u8 allow_resize); 114f3d2e786SBob Moore 115dd272b57SLen Brown acpi_status __init acpi_initialize_subsystem(void); 1161da177e4SLinus Torvalds 1174be44fcdSLen Brown acpi_status acpi_enable_subsystem(u32 flags); 1181da177e4SLinus Torvalds 1194be44fcdSLen Brown acpi_status acpi_initialize_objects(u32 flags); 1201da177e4SLinus Torvalds 1214be44fcdSLen Brown acpi_status acpi_terminate(void); 1221da177e4SLinus Torvalds 1231da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 1244be44fcdSLen Brown acpi_status acpi_subsystem_status(void); 1251da177e4SLinus Torvalds #endif 1261da177e4SLinus Torvalds 12733620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable(void)) 12833620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable(void)) 1291da177e4SLinus Torvalds 1301da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 1314be44fcdSLen Brown acpi_status acpi_get_system_info(struct acpi_buffer *ret_buffer); 1321da177e4SLinus Torvalds #endif 1331da177e4SLinus Torvalds 1344be44fcdSLen Brown const char *acpi_format_exception(acpi_status exception); 1351da177e4SLinus Torvalds 1364be44fcdSLen Brown acpi_status acpi_purge_cached_objects(void); 1371da177e4SLinus Torvalds 138b0ed7a91SLin Ming acpi_status acpi_install_interface(acpi_string interface_name); 139b0ed7a91SLin Ming 140b0ed7a91SLin Ming acpi_status acpi_remove_interface(acpi_string interface_name); 141b0ed7a91SLin Ming 142f654c0feSLin Ming u32 143f654c0feSLin Ming acpi_check_address_range(acpi_adr_space_type space_id, 144f654c0feSLin Ming acpi_physical_address address, 145f654c0feSLin Ming acpi_size length, u8 warn); 146f654c0feSLin Ming 1471da177e4SLinus Torvalds /* 148aee07ba6SJoe Perches * ACPI Memory management 1491da177e4SLinus Torvalds */ 1504be44fcdSLen Brown void *acpi_allocate(u32 size); 1511da177e4SLinus Torvalds 1524be44fcdSLen Brown void *acpi_callocate(u32 size); 1531da177e4SLinus Torvalds 1544be44fcdSLen Brown void acpi_free(void *address); 1551da177e4SLinus Torvalds 1561da177e4SLinus Torvalds /* 1571da177e4SLinus Torvalds * ACPI table manipulation interfaces 1581da177e4SLinus Torvalds */ 159f3d2e786SBob Moore acpi_status acpi_reallocate_root_table(void); 160f3d2e786SBob Moore 16167a119f9SBob Moore acpi_status acpi_find_root_pointer(acpi_size *rsdp_address); 1621da177e4SLinus Torvalds 1634be44fcdSLen Brown acpi_status acpi_load_tables(void); 1641da177e4SLinus Torvalds 1654be44fcdSLen Brown acpi_status acpi_load_table(struct acpi_table_header *table_ptr); 1664be44fcdSLen Brown 167f3d2e786SBob Moore acpi_status acpi_unload_table_id(acpi_owner_id id); 1681da177e4SLinus Torvalds 1691da177e4SLinus Torvalds acpi_status 170f3d2e786SBob Moore acpi_get_table_header(acpi_string signature, 17167a119f9SBob Moore u32 instance, 172428f2112SAlexey Starikovskiy struct acpi_table_header *out_table_header); 1731da177e4SLinus Torvalds 1741da177e4SLinus Torvalds acpi_status 1757d97277bSYinghai Lu acpi_get_table_with_size(acpi_string signature, 1767d97277bSYinghai Lu u32 instance, struct acpi_table_header **out_table, 1777d97277bSYinghai Lu acpi_size *tbl_size); 1787d97277bSYinghai Lu acpi_status 179f3d2e786SBob Moore acpi_get_table(acpi_string signature, 18067a119f9SBob Moore u32 instance, struct acpi_table_header **out_table); 181f3d2e786SBob Moore 182f3d2e786SBob Moore acpi_status 18367a119f9SBob Moore acpi_get_table_by_index(u32 table_index, 184f3d2e786SBob Moore struct acpi_table_header **out_table); 1851da177e4SLinus Torvalds 1863e08e2d2SLin Ming acpi_status 1873e08e2d2SLin Ming acpi_install_table_handler(acpi_tbl_handler handler, void *context); 1883e08e2d2SLin Ming 1893e08e2d2SLin Ming acpi_status acpi_remove_table_handler(acpi_tbl_handler handler); 1903e08e2d2SLin Ming 1911da177e4SLinus Torvalds /* 1921da177e4SLinus Torvalds * Namespace and name interfaces 1931da177e4SLinus Torvalds */ 1941da177e4SLinus Torvalds acpi_status 1954be44fcdSLen Brown acpi_walk_namespace(acpi_object_type type, 1961da177e4SLinus Torvalds acpi_handle start_object, 1971da177e4SLinus Torvalds u32 max_depth, 1982263576cSLin Ming acpi_walk_callback pre_order_visit, 1992263576cSLin Ming acpi_walk_callback post_order_visit, 2004be44fcdSLen Brown void *context, void **return_value); 2011da177e4SLinus Torvalds 2021da177e4SLinus Torvalds acpi_status 20370b30fb1SAl Viro acpi_get_devices(const char *HID, 2041da177e4SLinus Torvalds acpi_walk_callback user_function, 2054be44fcdSLen Brown void *context, void **return_value); 2061da177e4SLinus Torvalds 2071da177e4SLinus Torvalds acpi_status 208b47cf58eSBob Moore acpi_get_name(acpi_handle object, 2094be44fcdSLen Brown u32 name_type, struct acpi_buffer *ret_path_ptr); 2101da177e4SLinus Torvalds 2111da177e4SLinus Torvalds acpi_status 2124be44fcdSLen Brown acpi_get_handle(acpi_handle parent, 2134be44fcdSLen Brown acpi_string pathname, acpi_handle * ret_handle); 2141da177e4SLinus Torvalds 2151da177e4SLinus Torvalds acpi_status 216b47cf58eSBob Moore acpi_attach_data(acpi_handle object, acpi_object_handler handler, void *data); 217b47cf58eSBob Moore 218b47cf58eSBob Moore acpi_status acpi_detach_data(acpi_handle object, acpi_object_handler handler); 2191da177e4SLinus Torvalds 2201da177e4SLinus Torvalds acpi_status 221b47cf58eSBob Moore acpi_get_data(acpi_handle object, acpi_object_handler handler, void **data); 2221da177e4SLinus Torvalds 22350eca3ebSBob Moore acpi_status 22450eca3ebSBob Moore acpi_debug_trace(char *name, u32 debug_level, u32 debug_layer, u32 flags); 22550eca3ebSBob Moore 2261da177e4SLinus Torvalds /* 2271da177e4SLinus Torvalds * Object manipulation and enumeration 2281da177e4SLinus Torvalds */ 2291da177e4SLinus Torvalds acpi_status 2304be44fcdSLen Brown acpi_evaluate_object(acpi_handle object, 2311da177e4SLinus Torvalds acpi_string pathname, 2321da177e4SLinus Torvalds struct acpi_object_list *parameter_objects, 2331da177e4SLinus Torvalds struct acpi_buffer *return_object_buffer); 2341da177e4SLinus Torvalds 2351da177e4SLinus Torvalds acpi_status 2364be44fcdSLen Brown acpi_evaluate_object_typed(acpi_handle object, 2371da177e4SLinus Torvalds acpi_string pathname, 2381da177e4SLinus Torvalds struct acpi_object_list *external_params, 2391da177e4SLinus Torvalds struct acpi_buffer *return_buffer, 2401da177e4SLinus Torvalds acpi_object_type return_type); 2411da177e4SLinus Torvalds 2421da177e4SLinus Torvalds acpi_status 243b47cf58eSBob Moore acpi_get_object_info(acpi_handle object, 24415b8dd53SBob Moore struct acpi_device_info **return_buffer); 2451da177e4SLinus Torvalds 246b2f7ddcfSLin Ming acpi_status acpi_install_method(u8 *buffer); 247b2f7ddcfSLin Ming 2481da177e4SLinus Torvalds acpi_status 2494be44fcdSLen Brown acpi_get_next_object(acpi_object_type type, 2501da177e4SLinus Torvalds acpi_handle parent, 2514be44fcdSLen Brown acpi_handle child, acpi_handle * out_handle); 2521da177e4SLinus Torvalds 2534be44fcdSLen Brown acpi_status acpi_get_type(acpi_handle object, acpi_object_type * out_type); 2541da177e4SLinus Torvalds 2550f0fe1a0SJohn Keller acpi_status acpi_get_id(acpi_handle object, acpi_owner_id * out_type); 2560f0fe1a0SJohn Keller 2574be44fcdSLen Brown acpi_status acpi_get_parent(acpi_handle object, acpi_handle * out_handle); 2581da177e4SLinus Torvalds 2591da177e4SLinus Torvalds /* 260ecfbbc7bSBob Moore * Handler interfaces 2611da177e4SLinus Torvalds */ 2621da177e4SLinus Torvalds acpi_status 263ecfbbc7bSBob Moore acpi_install_initialization_handler(acpi_init_handler handler, u32 function); 264ecfbbc7bSBob Moore 26533620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 26633620c54SBob Moore acpi_install_global_event_handler 26733620c54SBob Moore (ACPI_GBL_EVENT_HANDLER handler, void *context)) 268a0fcdb23SLin Ming 26933620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 27033620c54SBob Moore acpi_install_fixed_event_handler(u32 27133620c54SBob Moore acpi_event, 27233620c54SBob Moore acpi_event_handler 27333620c54SBob Moore handler, 27433620c54SBob Moore void 27533620c54SBob Moore *context)) 27633620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 27733620c54SBob Moore acpi_remove_fixed_event_handler(u32 acpi_event, 27833620c54SBob Moore acpi_event_handler 27933620c54SBob Moore handler)) 28033620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 28133620c54SBob Moore acpi_install_gpe_handler(acpi_handle 28233620c54SBob Moore gpe_device, 28333620c54SBob Moore u32 gpe_number, 28433620c54SBob Moore u32 type, 28533620c54SBob Moore acpi_gpe_handler 28633620c54SBob Moore address, 28733620c54SBob Moore void *context)) 28833620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 28933620c54SBob Moore acpi_remove_gpe_handler(acpi_handle gpe_device, 29033620c54SBob Moore u32 gpe_number, 29133620c54SBob Moore acpi_gpe_handler 29233620c54SBob Moore address)) 2931da177e4SLinus Torvalds acpi_status 2944be44fcdSLen Brown acpi_install_notify_handler(acpi_handle device, 2951da177e4SLinus Torvalds u32 handler_type, 2964be44fcdSLen Brown acpi_notify_handler handler, void *context); 2971da177e4SLinus Torvalds 2981da177e4SLinus Torvalds acpi_status 2994be44fcdSLen Brown acpi_remove_notify_handler(acpi_handle device, 3004be44fcdSLen Brown u32 handler_type, acpi_notify_handler handler); 3011da177e4SLinus Torvalds 3021da177e4SLinus Torvalds acpi_status 3034be44fcdSLen Brown acpi_install_address_space_handler(acpi_handle device, 3041da177e4SLinus Torvalds acpi_adr_space_type space_id, 3051da177e4SLinus Torvalds acpi_adr_space_handler handler, 3064be44fcdSLen Brown acpi_adr_space_setup setup, void *context); 3071da177e4SLinus Torvalds 3081da177e4SLinus Torvalds acpi_status 3094be44fcdSLen Brown acpi_remove_address_space_handler(acpi_handle device, 3101da177e4SLinus Torvalds acpi_adr_space_type space_id, 3111da177e4SLinus Torvalds acpi_adr_space_handler handler); 3121da177e4SLinus Torvalds 3131da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 3144be44fcdSLen Brown acpi_status acpi_install_exception_handler(acpi_exception_handler handler); 3151da177e4SLinus Torvalds #endif 3161da177e4SLinus Torvalds 317b0ed7a91SLin Ming acpi_status acpi_install_interface_handler(acpi_interface_handler handler); 318b0ed7a91SLin Ming 3191da177e4SLinus Torvalds /* 320ffef6827SLin Ming * Global Lock interfaces 3211da177e4SLinus Torvalds */ 32233620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 32333620c54SBob Moore acpi_acquire_global_lock(u16 timeout, 32433620c54SBob Moore u32 *handle)) 32533620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 32633620c54SBob Moore acpi_release_global_lock(u32 handle)) 3271da177e4SLinus Torvalds 328ffef6827SLin Ming /* 329ffef6827SLin Ming * Interfaces to AML mutex objects 330ffef6827SLin Ming */ 331ffef6827SLin Ming acpi_status 332ffef6827SLin Ming acpi_acquire_mutex(acpi_handle handle, acpi_string pathname, u16 timeout); 333ffef6827SLin Ming 334ffef6827SLin Ming acpi_status acpi_release_mutex(acpi_handle handle, acpi_string pathname); 335ffef6827SLin Ming 336ffef6827SLin Ming /* 337ffef6827SLin Ming * Fixed Event interfaces 338ffef6827SLin Ming */ 33933620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 34033620c54SBob Moore acpi_enable_event(u32 event, u32 flags)) 3411da177e4SLinus Torvalds 34233620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 34333620c54SBob Moore acpi_disable_event(u32 event, u32 flags)) 3441da177e4SLinus Torvalds 34533620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_clear_event(u32 event)) 3461da177e4SLinus Torvalds 34733620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 34833620c54SBob Moore acpi_get_event_status(u32 event, 34933620c54SBob Moore acpi_event_status 35033620c54SBob Moore *event_status)) 35108ac07b8SBob Moore /* 352ffef6827SLin Ming * General Purpose Event (GPE) Interfaces 35308ac07b8SBob Moore */ 35433620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_update_all_gpes(void)) 3554be44fcdSLen Brown 35633620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 35733620c54SBob Moore acpi_enable_gpe(acpi_handle gpe_device, 35833620c54SBob Moore u32 gpe_number)) 3594be44fcdSLen Brown 36033620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 36133620c54SBob Moore acpi_disable_gpe(acpi_handle gpe_device, 36233620c54SBob Moore u32 gpe_number)) 3631da177e4SLinus Torvalds 36433620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 36533620c54SBob Moore acpi_clear_gpe(acpi_handle gpe_device, 36633620c54SBob Moore u32 gpe_number)) 367bba63a29SLin Ming 36833620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 36933620c54SBob Moore acpi_set_gpe(acpi_handle gpe_device, 37033620c54SBob Moore u32 gpe_number, u8 action)) 371e8b6f970SRafael J. Wysocki 37233620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 37333620c54SBob Moore acpi_finish_gpe(acpi_handle gpe_device, 37433620c54SBob Moore u32 gpe_number)) 37533620c54SBob Moore 37633620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 37733620c54SBob Moore acpi_setup_gpe_for_wake(acpi_handle 37833620c54SBob Moore parent_device, 37933620c54SBob Moore acpi_handle gpe_device, 38033620c54SBob Moore u32 gpe_number)) 38133620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 38233620c54SBob Moore acpi_set_gpe_wake_mask(acpi_handle gpe_device, 38333620c54SBob Moore u32 gpe_number, 38433620c54SBob Moore u8 action)) 38533620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 3864be44fcdSLen Brown acpi_get_gpe_status(acpi_handle gpe_device, 38733620c54SBob Moore u32 gpe_number, 38833620c54SBob Moore acpi_event_status 38933620c54SBob Moore *event_status)) 3901da177e4SLinus Torvalds 39133620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) 39208ac07b8SBob Moore 39333620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) 39408ac07b8SBob Moore 39533620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 39633620c54SBob Moore acpi_get_gpe_device(u32 gpe_index, 39733620c54SBob Moore acpi_handle * gpe_device)) 398e97d6bf1SBob Moore 39933620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 4004be44fcdSLen Brown acpi_install_gpe_block(acpi_handle gpe_device, 40133620c54SBob Moore struct 40233620c54SBob Moore acpi_generic_address 40333620c54SBob Moore *gpe_block_address, 40433620c54SBob Moore u32 register_count, 40533620c54SBob Moore u32 interrupt_number)) 40633620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 40733620c54SBob Moore acpi_remove_gpe_block(acpi_handle gpe_device)) 408a2100801SRafael J. Wysocki 4091da177e4SLinus Torvalds /* 4101da177e4SLinus Torvalds * Resource interfaces 4111da177e4SLinus Torvalds */ 4121da177e4SLinus Torvalds typedef 41361686124SBob Moore acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource, 4141da177e4SLinus Torvalds void *context); 4151da177e4SLinus Torvalds 4161da177e4SLinus Torvalds acpi_status 417b47cf58eSBob Moore acpi_get_vendor_resource(acpi_handle device, 418c51a4de8SBob Moore char *name, 419c51a4de8SBob Moore struct acpi_vendor_uuid *uuid, 420c51a4de8SBob Moore struct acpi_buffer *ret_buffer); 421c51a4de8SBob Moore 422c51a4de8SBob Moore acpi_status 423b47cf58eSBob Moore acpi_get_current_resources(acpi_handle device, struct acpi_buffer *ret_buffer); 4241da177e4SLinus Torvalds 4251da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 4261da177e4SLinus Torvalds acpi_status 427b47cf58eSBob Moore acpi_get_possible_resources(acpi_handle device, struct acpi_buffer *ret_buffer); 4281da177e4SLinus Torvalds #endif 4291da177e4SLinus Torvalds 4301da177e4SLinus Torvalds acpi_status 431a91cdde2SBob Moore acpi_get_event_resources(acpi_handle device_handle, 432a91cdde2SBob Moore struct acpi_buffer *ret_buffer); 433a91cdde2SBob Moore 434a91cdde2SBob Moore acpi_status 435b47cf58eSBob Moore acpi_walk_resources(acpi_handle device, 436c51a4de8SBob Moore char *name, 43761686124SBob Moore acpi_walk_resource_callback user_function, void *context); 4381da177e4SLinus Torvalds 4391da177e4SLinus Torvalds acpi_status 440b47cf58eSBob Moore acpi_set_current_resources(acpi_handle device, struct acpi_buffer *in_buffer); 4411da177e4SLinus Torvalds 4421da177e4SLinus Torvalds acpi_status 443b47cf58eSBob Moore acpi_get_irq_routing_table(acpi_handle device, struct acpi_buffer *ret_buffer); 4441da177e4SLinus Torvalds 4451da177e4SLinus Torvalds acpi_status 4464be44fcdSLen Brown acpi_resource_to_address64(struct acpi_resource *resource, 4471da177e4SLinus Torvalds struct acpi_resource_address64 *out); 4481da177e4SLinus Torvalds 4490e243178SBob Moore acpi_status 4500e243178SBob Moore acpi_buffer_to_resource(u8 *aml_buffer, 4510e243178SBob Moore u16 aml_buffer_length, 4520e243178SBob Moore struct acpi_resource **resource_ptr); 4530e243178SBob Moore 4541da177e4SLinus Torvalds /* 4551da177e4SLinus Torvalds * Hardware (ACPI device) interfaces 4561da177e4SLinus Torvalds */ 457d3fd902dSBob Moore acpi_status acpi_reset(void); 458d3fd902dSBob Moore 45933620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 46033620c54SBob Moore acpi_read_bit_register(u32 register_id, 46133620c54SBob Moore u32 *return_value)) 4624be44fcdSLen Brown 46333620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 46433620c54SBob Moore acpi_write_bit_register(u32 register_id, 46533620c54SBob Moore u32 value)) 4661da177e4SLinus Torvalds 46733620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 46833620c54SBob Moore acpi_set_firmware_waking_vector(u32 46933620c54SBob Moore physical_address)) 4701da177e4SLinus Torvalds 4714f70e371SBob Moore #if ACPI_MACHINE_WIDTH == 64 47233620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 47333620c54SBob Moore acpi_set_firmware_waking_vector64(u64 47433620c54SBob Moore physical_address)) 4754f70e371SBob Moore #endif 4761da177e4SLinus Torvalds 477c6b5774cSBob Moore acpi_status acpi_read(u64 *value, struct acpi_generic_address *reg); 478ecfbbc7bSBob Moore 479c6b5774cSBob Moore acpi_status acpi_write(u64 value, struct acpi_generic_address *reg); 480ecfbbc7bSBob Moore 48133620c54SBob Moore /* 48233620c54SBob Moore * Sleep/Wake interfaces 48333620c54SBob Moore */ 4841da177e4SLinus Torvalds acpi_status 4854be44fcdSLen Brown acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b); 4861da177e4SLinus Torvalds 4874be44fcdSLen Brown acpi_status acpi_enter_sleep_state_prep(u8 sleep_state); 4881da177e4SLinus Torvalds 4898a73b17eSLin Ming acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state, u8 flags); 4901da177e4SLinus Torvalds 49133620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void)) 4921da177e4SLinus Torvalds 4938a73b17eSLin Ming acpi_status acpi_leave_sleep_state_prep(u8 sleep_state, u8 flags); 494c95d47a8SRafael J. Wysocki 4954be44fcdSLen Brown acpi_status acpi_leave_sleep_state(u8 sleep_state); 4961da177e4SLinus Torvalds 49750df4d8bSBob Moore /* 498d08310feSBob Moore * ACPI Timer interfaces 499d08310feSBob Moore */ 500d08310feSBob Moore #ifdef ACPI_FUTURE_USAGE 50133620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 50233620c54SBob Moore acpi_get_timer_resolution(u32 *resolution)) 503d08310feSBob Moore 50433620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_get_timer(u32 *ticks)) 505d08310feSBob Moore 50633620c54SBob Moore ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 50733620c54SBob Moore acpi_get_timer_duration(u32 start_ticks, 50833620c54SBob Moore u32 end_ticks, 50933620c54SBob Moore u32 *time_elapsed)) 510d08310feSBob Moore #endif /* ACPI_FUTURE_USAGE */ 511d08310feSBob Moore 512d08310feSBob Moore /* 513b74be611SBob Moore * Error/Warning output 51450df4d8bSBob Moore */ 51550df4d8bSBob Moore void ACPI_INTERNAL_VAR_XFACE 51650df4d8bSBob Moore acpi_error(const char *module_name, 51750df4d8bSBob Moore u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3); 51850df4d8bSBob Moore 51950df4d8bSBob Moore void ACPI_INTERNAL_VAR_XFACE 52050df4d8bSBob Moore acpi_exception(const char *module_name, 52150df4d8bSBob Moore u32 line_number, 52250df4d8bSBob Moore acpi_status status, const char *format, ...) ACPI_PRINTF_LIKE(4); 52350df4d8bSBob Moore 52450df4d8bSBob Moore void ACPI_INTERNAL_VAR_XFACE 52550df4d8bSBob Moore acpi_warning(const char *module_name, 52650df4d8bSBob Moore u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3); 52750df4d8bSBob Moore 52850df4d8bSBob Moore void ACPI_INTERNAL_VAR_XFACE 52950df4d8bSBob Moore acpi_info(const char *module_name, 53050df4d8bSBob Moore u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3); 53150df4d8bSBob Moore 53262cdd141SBob Moore void ACPI_INTERNAL_VAR_XFACE 53362cdd141SBob Moore acpi_bios_error(const char *module_name, 53462cdd141SBob Moore u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3); 53562cdd141SBob Moore 53662cdd141SBob Moore void ACPI_INTERNAL_VAR_XFACE 53762cdd141SBob Moore acpi_bios_warning(const char *module_name, 53862cdd141SBob Moore u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3); 53962cdd141SBob Moore 540b74be611SBob Moore /* 541b74be611SBob Moore * Debug output 542b74be611SBob Moore */ 54350df4d8bSBob Moore #ifdef ACPI_DEBUG_OUTPUT 54450df4d8bSBob Moore 54550df4d8bSBob Moore void ACPI_INTERNAL_VAR_XFACE 54650df4d8bSBob Moore acpi_debug_print(u32 requested_debug_level, 54750df4d8bSBob Moore u32 line_number, 54850df4d8bSBob Moore const char *function_name, 54950df4d8bSBob Moore const char *module_name, 55050df4d8bSBob Moore u32 component_id, const char *format, ...) ACPI_PRINTF_LIKE(6); 55150df4d8bSBob Moore 55250df4d8bSBob Moore void ACPI_INTERNAL_VAR_XFACE 55350df4d8bSBob Moore acpi_debug_print_raw(u32 requested_debug_level, 55450df4d8bSBob Moore u32 line_number, 55550df4d8bSBob Moore const char *function_name, 55650df4d8bSBob Moore const char *module_name, 55750df4d8bSBob Moore u32 component_id, 55850df4d8bSBob Moore const char *format, ...) ACPI_PRINTF_LIKE(6); 55950df4d8bSBob Moore #endif 56050df4d8bSBob Moore 5611da177e4SLinus Torvalds #endif /* __ACXFACE_H__ */ 562