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 /* 94a90c7e8SBob Moore * Copyright (C) 2000 - 2006, R. Byron Moore 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 481da177e4SLinus Torvalds #include "actypes.h" 491da177e4SLinus Torvalds #include "actbl.h" 501da177e4SLinus Torvalds 511da177e4SLinus Torvalds /* 521da177e4SLinus Torvalds * Global interfaces 531da177e4SLinus Torvalds */ 544be44fcdSLen Brown acpi_status acpi_initialize_subsystem(void); 551da177e4SLinus Torvalds 564be44fcdSLen Brown acpi_status acpi_enable_subsystem(u32 flags); 571da177e4SLinus Torvalds 584be44fcdSLen Brown acpi_status acpi_initialize_objects(u32 flags); 591da177e4SLinus Torvalds 604be44fcdSLen Brown acpi_status acpi_terminate(void); 611da177e4SLinus Torvalds 621da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 634be44fcdSLen Brown acpi_status acpi_subsystem_status(void); 641da177e4SLinus Torvalds #endif 651da177e4SLinus Torvalds 664be44fcdSLen Brown acpi_status acpi_enable(void); 671da177e4SLinus Torvalds 684be44fcdSLen Brown acpi_status acpi_disable(void); 691da177e4SLinus Torvalds 701da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 714be44fcdSLen Brown acpi_status acpi_get_system_info(struct acpi_buffer *ret_buffer); 721da177e4SLinus Torvalds #endif 731da177e4SLinus Torvalds 744be44fcdSLen Brown const char *acpi_format_exception(acpi_status exception); 751da177e4SLinus Torvalds 764be44fcdSLen Brown acpi_status acpi_purge_cached_objects(void); 771da177e4SLinus Torvalds 781da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 791da177e4SLinus Torvalds acpi_status 804be44fcdSLen Brown acpi_install_initialization_handler(acpi_init_handler handler, u32 function); 811da177e4SLinus Torvalds #endif 821da177e4SLinus Torvalds 831da177e4SLinus Torvalds /* 8444f6c012SRobert Moore * ACPI Memory managment 851da177e4SLinus Torvalds */ 864be44fcdSLen Brown void *acpi_allocate(u32 size); 871da177e4SLinus Torvalds 884be44fcdSLen Brown void *acpi_callocate(u32 size); 891da177e4SLinus Torvalds 904be44fcdSLen Brown void acpi_free(void *address); 911da177e4SLinus Torvalds 921da177e4SLinus Torvalds /* 931da177e4SLinus Torvalds * ACPI table manipulation interfaces 941da177e4SLinus Torvalds */ 951da177e4SLinus Torvalds acpi_status 964be44fcdSLen Brown acpi_find_root_pointer(u32 flags, struct acpi_pointer *rsdp_address); 971da177e4SLinus Torvalds 984be44fcdSLen Brown acpi_status acpi_load_tables(void); 991da177e4SLinus Torvalds 1001da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 1014be44fcdSLen Brown acpi_status acpi_load_table(struct acpi_table_header *table_ptr); 1024be44fcdSLen Brown 1034be44fcdSLen Brown acpi_status acpi_unload_table(acpi_table_type table_type); 1041da177e4SLinus Torvalds 1051da177e4SLinus Torvalds acpi_status 1064be44fcdSLen Brown acpi_get_table_header(acpi_table_type table_type, 1074be44fcdSLen Brown u32 instance, struct acpi_table_header *out_table_header); 1081da177e4SLinus Torvalds #endif /* ACPI_FUTURE_USAGE */ 1091da177e4SLinus Torvalds 1101da177e4SLinus Torvalds acpi_status 1114be44fcdSLen Brown acpi_get_table(acpi_table_type table_type, 1124be44fcdSLen Brown u32 instance, struct acpi_buffer *ret_buffer); 1131da177e4SLinus Torvalds 1141da177e4SLinus Torvalds acpi_status 1154be44fcdSLen Brown acpi_get_firmware_table(acpi_string signature, 1161da177e4SLinus Torvalds u32 instance, 1174be44fcdSLen Brown u32 flags, struct acpi_table_header **table_pointer); 1181da177e4SLinus Torvalds 1191da177e4SLinus Torvalds /* 1201da177e4SLinus Torvalds * Namespace and name interfaces 1211da177e4SLinus Torvalds */ 1221da177e4SLinus Torvalds acpi_status 1234be44fcdSLen Brown acpi_walk_namespace(acpi_object_type type, 1241da177e4SLinus Torvalds acpi_handle start_object, 1251da177e4SLinus Torvalds u32 max_depth, 1261da177e4SLinus Torvalds acpi_walk_callback user_function, 1274be44fcdSLen Brown void *context, void **return_value); 1281da177e4SLinus Torvalds 1291da177e4SLinus Torvalds acpi_status 1304be44fcdSLen Brown acpi_get_devices(char *HID, 1311da177e4SLinus Torvalds acpi_walk_callback user_function, 1324be44fcdSLen Brown void *context, void **return_value); 1331da177e4SLinus Torvalds 1341da177e4SLinus Torvalds acpi_status 1354be44fcdSLen Brown acpi_get_name(acpi_handle handle, 1364be44fcdSLen Brown u32 name_type, struct acpi_buffer *ret_path_ptr); 1371da177e4SLinus Torvalds 1381da177e4SLinus Torvalds acpi_status 1394be44fcdSLen Brown acpi_get_handle(acpi_handle parent, 1404be44fcdSLen Brown acpi_string pathname, acpi_handle * ret_handle); 1411da177e4SLinus Torvalds 1421da177e4SLinus Torvalds acpi_status 1434be44fcdSLen Brown acpi_attach_data(acpi_handle obj_handle, 1444be44fcdSLen Brown acpi_object_handler handler, void *data); 1451da177e4SLinus Torvalds 1461da177e4SLinus Torvalds acpi_status 1474be44fcdSLen Brown acpi_detach_data(acpi_handle obj_handle, acpi_object_handler handler); 1481da177e4SLinus Torvalds 1491da177e4SLinus Torvalds acpi_status 1504be44fcdSLen Brown acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data); 1511da177e4SLinus Torvalds 15250eca3ebSBob Moore acpi_status 15350eca3ebSBob Moore acpi_debug_trace(char *name, u32 debug_level, u32 debug_layer, u32 flags); 15450eca3ebSBob Moore 1551da177e4SLinus Torvalds /* 1561da177e4SLinus Torvalds * Object manipulation and enumeration 1571da177e4SLinus Torvalds */ 1581da177e4SLinus Torvalds acpi_status 1594be44fcdSLen Brown acpi_evaluate_object(acpi_handle object, 1601da177e4SLinus Torvalds acpi_string pathname, 1611da177e4SLinus Torvalds struct acpi_object_list *parameter_objects, 1621da177e4SLinus Torvalds struct acpi_buffer *return_object_buffer); 1631da177e4SLinus Torvalds 1641da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 1651da177e4SLinus Torvalds acpi_status 1664be44fcdSLen Brown acpi_evaluate_object_typed(acpi_handle object, 1671da177e4SLinus Torvalds acpi_string pathname, 1681da177e4SLinus Torvalds struct acpi_object_list *external_params, 1691da177e4SLinus Torvalds struct acpi_buffer *return_buffer, 1701da177e4SLinus Torvalds acpi_object_type return_type); 1711da177e4SLinus Torvalds #endif 1721da177e4SLinus Torvalds 1731da177e4SLinus Torvalds acpi_status 1744be44fcdSLen Brown acpi_get_object_info(acpi_handle handle, struct acpi_buffer *return_buffer); 1751da177e4SLinus Torvalds 1761da177e4SLinus Torvalds acpi_status 1774be44fcdSLen Brown acpi_get_next_object(acpi_object_type type, 1781da177e4SLinus Torvalds acpi_handle parent, 1794be44fcdSLen Brown acpi_handle child, acpi_handle * out_handle); 1801da177e4SLinus Torvalds 1814be44fcdSLen Brown acpi_status acpi_get_type(acpi_handle object, acpi_object_type * out_type); 1821da177e4SLinus Torvalds 1834be44fcdSLen Brown acpi_status acpi_get_parent(acpi_handle object, acpi_handle * out_handle); 1841da177e4SLinus Torvalds 1851da177e4SLinus Torvalds /* 1861da177e4SLinus Torvalds * Event handler interfaces 1871da177e4SLinus Torvalds */ 1881da177e4SLinus Torvalds acpi_status 1894be44fcdSLen Brown acpi_install_fixed_event_handler(u32 acpi_event, 1904be44fcdSLen Brown acpi_event_handler handler, void *context); 1911da177e4SLinus Torvalds 1921da177e4SLinus Torvalds acpi_status 1934be44fcdSLen Brown acpi_remove_fixed_event_handler(u32 acpi_event, acpi_event_handler handler); 1941da177e4SLinus Torvalds 1951da177e4SLinus Torvalds acpi_status 1964be44fcdSLen Brown acpi_install_notify_handler(acpi_handle device, 1971da177e4SLinus Torvalds u32 handler_type, 1984be44fcdSLen Brown acpi_notify_handler handler, void *context); 1991da177e4SLinus Torvalds 2001da177e4SLinus Torvalds acpi_status 2014be44fcdSLen Brown acpi_remove_notify_handler(acpi_handle device, 2024be44fcdSLen Brown u32 handler_type, acpi_notify_handler handler); 2031da177e4SLinus Torvalds 2041da177e4SLinus Torvalds acpi_status 2054be44fcdSLen Brown acpi_install_address_space_handler(acpi_handle device, 2061da177e4SLinus Torvalds acpi_adr_space_type space_id, 2071da177e4SLinus Torvalds acpi_adr_space_handler handler, 2084be44fcdSLen Brown acpi_adr_space_setup setup, void *context); 2091da177e4SLinus Torvalds 2101da177e4SLinus Torvalds acpi_status 2114be44fcdSLen Brown acpi_remove_address_space_handler(acpi_handle device, 2121da177e4SLinus Torvalds acpi_adr_space_type space_id, 2131da177e4SLinus Torvalds acpi_adr_space_handler handler); 2141da177e4SLinus Torvalds 2151da177e4SLinus Torvalds acpi_status 2164be44fcdSLen Brown acpi_install_gpe_handler(acpi_handle gpe_device, 2171da177e4SLinus Torvalds u32 gpe_number, 2184be44fcdSLen Brown u32 type, acpi_event_handler address, void *context); 2191da177e4SLinus Torvalds 2201da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 2214be44fcdSLen Brown acpi_status acpi_install_exception_handler(acpi_exception_handler handler); 2221da177e4SLinus Torvalds #endif 2231da177e4SLinus Torvalds 2241da177e4SLinus Torvalds /* 2251da177e4SLinus Torvalds * Event interfaces 2261da177e4SLinus Torvalds */ 2274be44fcdSLen Brown acpi_status acpi_acquire_global_lock(u16 timeout, u32 * handle); 2284be44fcdSLen Brown 2294be44fcdSLen Brown acpi_status acpi_release_global_lock(u32 handle); 2301da177e4SLinus Torvalds 2311da177e4SLinus Torvalds acpi_status 2324be44fcdSLen Brown acpi_remove_gpe_handler(acpi_handle gpe_device, 2334be44fcdSLen Brown u32 gpe_number, acpi_event_handler address); 2341da177e4SLinus Torvalds 2354be44fcdSLen Brown acpi_status acpi_enable_event(u32 event, u32 flags); 2361da177e4SLinus Torvalds 2374be44fcdSLen Brown acpi_status acpi_disable_event(u32 event, u32 flags); 2381da177e4SLinus Torvalds 2394be44fcdSLen Brown acpi_status acpi_clear_event(u32 event); 2401da177e4SLinus Torvalds 2414be44fcdSLen Brown #ifdef ACPI_FUTURE_USAGE 2424be44fcdSLen Brown acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status); 2434be44fcdSLen Brown #endif /* ACPI_FUTURE_USAGE */ 2444be44fcdSLen Brown 2454be44fcdSLen Brown acpi_status acpi_set_gpe_type(acpi_handle gpe_device, u32 gpe_number, u8 type); 2464be44fcdSLen Brown 2474be44fcdSLen Brown acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags); 2484be44fcdSLen Brown 2494be44fcdSLen Brown acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags); 2504be44fcdSLen Brown 2514be44fcdSLen Brown acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags); 2521da177e4SLinus Torvalds 2531da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 2541da177e4SLinus Torvalds acpi_status 2554be44fcdSLen Brown acpi_get_gpe_status(acpi_handle gpe_device, 2564be44fcdSLen Brown u32 gpe_number, 2574be44fcdSLen Brown u32 flags, acpi_event_status * event_status); 2581da177e4SLinus Torvalds #endif /* ACPI_FUTURE_USAGE */ 2591da177e4SLinus Torvalds 2601da177e4SLinus Torvalds acpi_status 2614be44fcdSLen Brown acpi_install_gpe_block(acpi_handle gpe_device, 2621da177e4SLinus Torvalds struct acpi_generic_address *gpe_block_address, 2634be44fcdSLen Brown u32 register_count, u32 interrupt_number); 2641da177e4SLinus Torvalds 2654be44fcdSLen Brown acpi_status acpi_remove_gpe_block(acpi_handle gpe_device); 2661da177e4SLinus Torvalds 2671da177e4SLinus Torvalds /* 2681da177e4SLinus Torvalds * Resource interfaces 2691da177e4SLinus Torvalds */ 2701da177e4SLinus Torvalds typedef 2714be44fcdSLen Brown acpi_status(*ACPI_WALK_RESOURCE_CALLBACK) (struct acpi_resource * resource, 2721da177e4SLinus Torvalds void *context); 2731da177e4SLinus Torvalds 2741da177e4SLinus Torvalds acpi_status 275c51a4de8SBob Moore acpi_get_vendor_resource(acpi_handle device_handle, 276c51a4de8SBob Moore char *name, 277c51a4de8SBob Moore struct acpi_vendor_uuid *uuid, 278c51a4de8SBob Moore struct acpi_buffer *ret_buffer); 279c51a4de8SBob Moore 280c51a4de8SBob Moore acpi_status 2814be44fcdSLen Brown acpi_get_current_resources(acpi_handle device_handle, 2821da177e4SLinus Torvalds struct acpi_buffer *ret_buffer); 2831da177e4SLinus Torvalds 2841da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 2851da177e4SLinus Torvalds acpi_status 2864be44fcdSLen Brown acpi_get_possible_resources(acpi_handle device_handle, 2871da177e4SLinus Torvalds struct acpi_buffer *ret_buffer); 2881da177e4SLinus Torvalds #endif 2891da177e4SLinus Torvalds 2901da177e4SLinus Torvalds acpi_status 2914be44fcdSLen Brown acpi_walk_resources(acpi_handle device_handle, 292c51a4de8SBob Moore char *name, 2934be44fcdSLen Brown ACPI_WALK_RESOURCE_CALLBACK user_function, void *context); 2941da177e4SLinus Torvalds 2951da177e4SLinus Torvalds acpi_status 2964be44fcdSLen Brown acpi_set_current_resources(acpi_handle device_handle, 2971da177e4SLinus Torvalds struct acpi_buffer *in_buffer); 2981da177e4SLinus Torvalds 2991da177e4SLinus Torvalds acpi_status 3004be44fcdSLen Brown acpi_get_irq_routing_table(acpi_handle bus_device_handle, 3011da177e4SLinus Torvalds struct acpi_buffer *ret_buffer); 3021da177e4SLinus Torvalds 3031da177e4SLinus Torvalds acpi_status 3044be44fcdSLen Brown acpi_resource_to_address64(struct acpi_resource *resource, 3051da177e4SLinus Torvalds struct acpi_resource_address64 *out); 3061da177e4SLinus Torvalds 3071da177e4SLinus Torvalds /* 3081da177e4SLinus Torvalds * Hardware (ACPI device) interfaces 3091da177e4SLinus Torvalds */ 3104be44fcdSLen Brown acpi_status acpi_get_register(u32 register_id, u32 * return_value, u32 flags); 3114be44fcdSLen Brown 3124be44fcdSLen Brown acpi_status acpi_set_register(u32 register_id, u32 value, u32 flags); 3131da177e4SLinus Torvalds 3141da177e4SLinus Torvalds acpi_status 3154be44fcdSLen Brown acpi_set_firmware_waking_vector(acpi_physical_address physical_address); 3161da177e4SLinus Torvalds 3171da177e4SLinus Torvalds #ifdef ACPI_FUTURE_USAGE 3181da177e4SLinus Torvalds acpi_status 3194be44fcdSLen Brown acpi_get_firmware_waking_vector(acpi_physical_address * physical_address); 3201da177e4SLinus Torvalds #endif 3211da177e4SLinus Torvalds 3221da177e4SLinus Torvalds acpi_status 3234be44fcdSLen Brown acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b); 3241da177e4SLinus Torvalds 3254be44fcdSLen Brown acpi_status acpi_enter_sleep_state_prep(u8 sleep_state); 3261da177e4SLinus Torvalds 3274be44fcdSLen Brown acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state); 3281da177e4SLinus Torvalds 3294be44fcdSLen Brown acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void); 3301da177e4SLinus Torvalds 3314be44fcdSLen Brown acpi_status acpi_leave_sleep_state(u8 sleep_state); 3321da177e4SLinus Torvalds 3331da177e4SLinus Torvalds #endif /* __ACXFACE_H__ */ 334