195857638SErik Schmauss /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 2e2f7a777SLen Brown /****************************************************************************** 3e2f7a777SLen Brown * 4e2f7a777SLen Brown * Name: acinterp.h - Interpreter subcomponent prototypes and defines 5e2f7a777SLen Brown * 6*612c2932SBob Moore * Copyright (C) 2000 - 2023, Intel Corp. 7e2f7a777SLen Brown * 895857638SErik Schmauss *****************************************************************************/ 9e2f7a777SLen Brown 10e2f7a777SLen Brown #ifndef __ACINTERP_H__ 11e2f7a777SLen Brown #define __ACINTERP_H__ 12e2f7a777SLen Brown 13e2f7a777SLen Brown #define ACPI_WALK_OPERANDS (&(walk_state->operands [walk_state->num_operands -1])) 14e2f7a777SLen Brown 15e2f7a777SLen Brown /* Macros for tables used for debug output */ 16e2f7a777SLen Brown 17e2f7a777SLen Brown #define ACPI_EXD_OFFSET(f) (u8) ACPI_OFFSET (union acpi_operand_object,f) 18e2f7a777SLen Brown #define ACPI_EXD_NSOFFSET(f) (u8) ACPI_OFFSET (struct acpi_namespace_node,f) 19e2f7a777SLen Brown #define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_exdump_info)) 20e2f7a777SLen Brown 21e2f7a777SLen Brown /* 22e2f7a777SLen Brown * If possible, pack the following structures to byte alignment, since we 23e2f7a777SLen Brown * don't care about performance for debug output. Two cases where we cannot 24e2f7a777SLen Brown * pack the structures: 25e2f7a777SLen Brown * 26e2f7a777SLen Brown * 1) Hardware does not support misaligned memory transfers 27e2f7a777SLen Brown * 2) Compiler does not support pointers within packed structures 28e2f7a777SLen Brown */ 29e2f7a777SLen Brown #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) 30e2f7a777SLen Brown #pragma pack(1) 31e2f7a777SLen Brown #endif 32e2f7a777SLen Brown 33e2f7a777SLen Brown typedef const struct acpi_exdump_info { 34e2f7a777SLen Brown u8 opcode; 35e2f7a777SLen Brown u8 offset; 360dfaaa3dSBob Moore const char *name; 37e2f7a777SLen Brown 38e2f7a777SLen Brown } acpi_exdump_info; 39e2f7a777SLen Brown 40e2f7a777SLen Brown /* Values for the Opcode field above */ 41e2f7a777SLen Brown 42e2f7a777SLen Brown #define ACPI_EXD_INIT 0 43e2f7a777SLen Brown #define ACPI_EXD_TYPE 1 44e2f7a777SLen Brown #define ACPI_EXD_UINT8 2 45e2f7a777SLen Brown #define ACPI_EXD_UINT16 3 46e2f7a777SLen Brown #define ACPI_EXD_UINT32 4 47e2f7a777SLen Brown #define ACPI_EXD_UINT64 5 48e2f7a777SLen Brown #define ACPI_EXD_LITERAL 6 49e2f7a777SLen Brown #define ACPI_EXD_POINTER 7 50e2f7a777SLen Brown #define ACPI_EXD_ADDRESS 8 51e2f7a777SLen Brown #define ACPI_EXD_STRING 9 52e2f7a777SLen Brown #define ACPI_EXD_BUFFER 10 53e2f7a777SLen Brown #define ACPI_EXD_PACKAGE 11 54e2f7a777SLen Brown #define ACPI_EXD_FIELD 12 55e2f7a777SLen Brown #define ACPI_EXD_REFERENCE 13 56a487af33SBob Moore #define ACPI_EXD_LIST 14 /* Operand object list */ 57a487af33SBob Moore #define ACPI_EXD_HDLR_LIST 15 /* Address Handler list */ 58a487af33SBob Moore #define ACPI_EXD_RGN_LIST 16 /* Region list */ 59a487af33SBob Moore #define ACPI_EXD_NODE 17 /* Namespace Node */ 60e2f7a777SLen Brown 61e2f7a777SLen Brown /* restore default alignment */ 62e2f7a777SLen Brown 63e2f7a777SLen Brown #pragma pack() 64e2f7a777SLen Brown 65e2f7a777SLen Brown /* 66e2f7a777SLen Brown * exconvrt - object conversion 67e2f7a777SLen Brown */ 68e2f7a777SLen Brown acpi_status 69e2f7a777SLen Brown acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc, 70fe97d287SBob Moore union acpi_operand_object **result_desc, 71fe97d287SBob Moore u32 implicit_conversion); 72e2f7a777SLen Brown 73e2f7a777SLen Brown acpi_status 74e2f7a777SLen Brown acpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc, 75e2f7a777SLen Brown union acpi_operand_object **result_desc); 76e2f7a777SLen Brown 77e2f7a777SLen Brown acpi_status 78e2f7a777SLen Brown acpi_ex_convert_to_string(union acpi_operand_object *obj_desc, 79e2f7a777SLen Brown union acpi_operand_object **result_desc, u32 type); 80e2f7a777SLen Brown 81e2f7a777SLen Brown /* Types for ->String conversion */ 82e2f7a777SLen Brown 83e2f7a777SLen Brown #define ACPI_EXPLICIT_BYTE_COPY 0x00000000 84e2f7a777SLen Brown #define ACPI_EXPLICIT_CONVERT_HEX 0x00000001 85e2f7a777SLen Brown #define ACPI_IMPLICIT_CONVERT_HEX 0x00000002 86e2f7a777SLen Brown #define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003 87e2f7a777SLen Brown 88e2f7a777SLen Brown acpi_status 89e2f7a777SLen Brown acpi_ex_convert_to_target_type(acpi_object_type destination_type, 90e2f7a777SLen Brown union acpi_operand_object *source_desc, 91e2f7a777SLen Brown union acpi_operand_object **result_desc, 92e2f7a777SLen Brown struct acpi_walk_state *walk_state); 93e2f7a777SLen Brown 94e2f7a777SLen Brown /* 954cdf1a56SLin Ming * exdebug - AML debug object 964cdf1a56SLin Ming */ 974cdf1a56SLin Ming void 984cdf1a56SLin Ming acpi_ex_do_debug_object(union acpi_operand_object *source_desc, 994cdf1a56SLin Ming u32 level, u32 index); 1004cdf1a56SLin Ming 101ab6c5733SLv Zheng void 102ab6c5733SLv Zheng acpi_ex_start_trace_method(struct acpi_namespace_node *method_node, 103ab6c5733SLv Zheng union acpi_operand_object *obj_desc, 104ab6c5733SLv Zheng struct acpi_walk_state *walk_state); 105ab6c5733SLv Zheng 106ab6c5733SLv Zheng void 107ab6c5733SLv Zheng acpi_ex_stop_trace_method(struct acpi_namespace_node *method_node, 108ab6c5733SLv Zheng union acpi_operand_object *obj_desc, 109ab6c5733SLv Zheng struct acpi_walk_state *walk_state); 110ab6c5733SLv Zheng 111ab6c5733SLv Zheng void 112ab6c5733SLv Zheng acpi_ex_start_trace_opcode(union acpi_parse_object *op, 113ab6c5733SLv Zheng struct acpi_walk_state *walk_state); 114ab6c5733SLv Zheng 115ab6c5733SLv Zheng void 116ab6c5733SLv Zheng acpi_ex_stop_trace_opcode(union acpi_parse_object *op, 117ab6c5733SLv Zheng struct acpi_walk_state *walk_state); 118ab6c5733SLv Zheng 119bab04824SLv Zheng void 120bab04824SLv Zheng acpi_ex_trace_point(acpi_trace_event_type type, 121bab04824SLv Zheng u8 begin, u8 *aml, char *pathname); 122bab04824SLv Zheng 1234cdf1a56SLin Ming /* 124e2f7a777SLen Brown * exfield - ACPI AML (p-code) execution - field manipulation 125e2f7a777SLen Brown */ 126e2f7a777SLen Brown acpi_status 127e324e101SBob Moore acpi_ex_get_protocol_buffer_length(u32 protocol_id, u32 *return_length); 128e324e101SBob Moore 129e324e101SBob Moore acpi_status 130e2f7a777SLen Brown acpi_ex_common_buffer_setup(union acpi_operand_object *obj_desc, 131e2f7a777SLen Brown u32 buffer_length, u32 * datum_count); 132e2f7a777SLen Brown 133e2f7a777SLen Brown acpi_status 134e2f7a777SLen Brown acpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc, 1355df7e6cbSBob Moore u64 mask, 1365df7e6cbSBob Moore u64 field_value, u32 field_datum_byte_offset); 137e2f7a777SLen Brown 138e2f7a777SLen Brown void 1395df7e6cbSBob Moore acpi_ex_get_buffer_datum(u64 *datum, 140e2f7a777SLen Brown void *buffer, 141e2f7a777SLen Brown u32 buffer_length, 142e2f7a777SLen Brown u32 byte_granularity, u32 buffer_offset); 143e2f7a777SLen Brown 144e2f7a777SLen Brown void 1455df7e6cbSBob Moore acpi_ex_set_buffer_datum(u64 merged_datum, 146e2f7a777SLen Brown void *buffer, 147e2f7a777SLen Brown u32 buffer_length, 148e2f7a777SLen Brown u32 byte_granularity, u32 buffer_offset); 149e2f7a777SLen Brown 150e2f7a777SLen Brown acpi_status 151e2f7a777SLen Brown acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state, 152e2f7a777SLen Brown union acpi_operand_object *obj_desc, 153e2f7a777SLen Brown union acpi_operand_object **ret_buffer_desc); 154e2f7a777SLen Brown 155e2f7a777SLen Brown acpi_status 156e2f7a777SLen Brown acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, 157e2f7a777SLen Brown union acpi_operand_object *obj_desc, 158e2f7a777SLen Brown union acpi_operand_object **result_desc); 159e2f7a777SLen Brown 160e2f7a777SLen Brown /* 161e2f7a777SLen Brown * exfldio - low level field I/O 162e2f7a777SLen Brown */ 163e2f7a777SLen Brown acpi_status 164e2f7a777SLen Brown acpi_ex_extract_from_field(union acpi_operand_object *obj_desc, 165e2f7a777SLen Brown void *buffer, u32 buffer_length); 166e2f7a777SLen Brown 167e2f7a777SLen Brown acpi_status 168e2f7a777SLen Brown acpi_ex_insert_into_field(union acpi_operand_object *obj_desc, 169e2f7a777SLen Brown void *buffer, u32 buffer_length); 170e2f7a777SLen Brown 171e2f7a777SLen Brown acpi_status 172e2f7a777SLen Brown acpi_ex_access_region(union acpi_operand_object *obj_desc, 1735df7e6cbSBob Moore u32 field_datum_byte_offset, u64 *value, u32 read_write); 174e2f7a777SLen Brown 175e2f7a777SLen Brown /* 176e2f7a777SLen Brown * exmisc - misc support routines 177e2f7a777SLen Brown */ 178e2f7a777SLen Brown acpi_status 179e2f7a777SLen Brown acpi_ex_get_object_reference(union acpi_operand_object *obj_desc, 180e2f7a777SLen Brown union acpi_operand_object **return_desc, 181e2f7a777SLen Brown struct acpi_walk_state *walk_state); 182e2f7a777SLen Brown 183e2f7a777SLen Brown acpi_status 184e2f7a777SLen Brown acpi_ex_concat_template(union acpi_operand_object *obj_desc, 185e2f7a777SLen Brown union acpi_operand_object *obj_desc2, 186e2f7a777SLen Brown union acpi_operand_object **actual_return_desc, 187e2f7a777SLen Brown struct acpi_walk_state *walk_state); 188e2f7a777SLen Brown 189e2f7a777SLen Brown acpi_status 190e2f7a777SLen Brown acpi_ex_do_concatenate(union acpi_operand_object *obj_desc, 191e2f7a777SLen Brown union acpi_operand_object *obj_desc2, 192e2f7a777SLen Brown union acpi_operand_object **actual_return_desc, 193e2f7a777SLen Brown struct acpi_walk_state *walk_state); 194e2f7a777SLen Brown 195e2f7a777SLen Brown acpi_status 196e2f7a777SLen Brown acpi_ex_do_logical_numeric_op(u16 opcode, 1975df7e6cbSBob Moore u64 integer0, u64 integer1, u8 *logical_result); 198e2f7a777SLen Brown 199e2f7a777SLen Brown acpi_status 200e2f7a777SLen Brown acpi_ex_do_logical_op(u16 opcode, 201e2f7a777SLen Brown union acpi_operand_object *operand0, 202e2f7a777SLen Brown union acpi_operand_object *operand1, u8 *logical_result); 203e2f7a777SLen Brown 2045df7e6cbSBob Moore u64 acpi_ex_do_math_op(u16 opcode, u64 operand0, u64 operand1); 205e2f7a777SLen Brown 206e2f7a777SLen Brown acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state); 207e2f7a777SLen Brown 208e2f7a777SLen Brown acpi_status acpi_ex_create_processor(struct acpi_walk_state *walk_state); 209e2f7a777SLen Brown 210e2f7a777SLen Brown acpi_status acpi_ex_create_power_resource(struct acpi_walk_state *walk_state); 211e2f7a777SLen Brown 212e2f7a777SLen Brown acpi_status 213e2f7a777SLen Brown acpi_ex_create_region(u8 * aml_start, 214e2f7a777SLen Brown u32 aml_length, 215e2f7a777SLen Brown u8 region_space, struct acpi_walk_state *walk_state); 216e2f7a777SLen Brown 217e2f7a777SLen Brown acpi_status acpi_ex_create_event(struct acpi_walk_state *walk_state); 218e2f7a777SLen Brown 219e2f7a777SLen Brown acpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state); 220e2f7a777SLen Brown 221e2f7a777SLen Brown acpi_status 222e2f7a777SLen Brown acpi_ex_create_method(u8 * aml_start, 223e2f7a777SLen Brown u32 aml_length, struct acpi_walk_state *walk_state); 224e2f7a777SLen Brown 225e2f7a777SLen Brown /* 226e2f7a777SLen Brown * exconfig - dynamic table load/unload 227e2f7a777SLen Brown */ 228e2f7a777SLen Brown acpi_status 229e2f7a777SLen Brown acpi_ex_load_op(union acpi_operand_object *obj_desc, 230e2f7a777SLen Brown union acpi_operand_object *target, 231e2f7a777SLen Brown struct acpi_walk_state *walk_state); 232e2f7a777SLen Brown 233e2f7a777SLen Brown acpi_status 234e2f7a777SLen Brown acpi_ex_load_table_op(struct acpi_walk_state *walk_state, 235e2f7a777SLen Brown union acpi_operand_object **return_desc); 236e2f7a777SLen Brown 237e2f7a777SLen Brown acpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle); 238e2f7a777SLen Brown 239e2f7a777SLen Brown /* 240e2f7a777SLen Brown * exmutex - mutex support 241e2f7a777SLen Brown */ 242e2f7a777SLen Brown acpi_status 243e2f7a777SLen Brown acpi_ex_acquire_mutex(union acpi_operand_object *time_desc, 244e2f7a777SLen Brown union acpi_operand_object *obj_desc, 245e2f7a777SLen Brown struct acpi_walk_state *walk_state); 246e2f7a777SLen Brown 247e2f7a777SLen Brown acpi_status 248e2f7a777SLen Brown acpi_ex_acquire_mutex_object(u16 timeout, 249e2f7a777SLen Brown union acpi_operand_object *obj_desc, 250e2f7a777SLen Brown acpi_thread_id thread_id); 251e2f7a777SLen Brown 252e2f7a777SLen Brown acpi_status 253e2f7a777SLen Brown acpi_ex_release_mutex(union acpi_operand_object *obj_desc, 254e2f7a777SLen Brown struct acpi_walk_state *walk_state); 255e2f7a777SLen Brown 256e2f7a777SLen Brown acpi_status acpi_ex_release_mutex_object(union acpi_operand_object *obj_desc); 257e2f7a777SLen Brown 258e2f7a777SLen Brown void acpi_ex_release_all_mutexes(struct acpi_thread_state *thread); 259e2f7a777SLen Brown 260e2f7a777SLen Brown void acpi_ex_unlink_mutex(union acpi_operand_object *obj_desc); 261e2f7a777SLen Brown 262e2f7a777SLen Brown /* 263e2f7a777SLen Brown * exprep - ACPI AML execution - prep utilities 264e2f7a777SLen Brown */ 265e2f7a777SLen Brown acpi_status 266e2f7a777SLen Brown acpi_ex_prep_common_field_object(union acpi_operand_object *obj_desc, 267e2f7a777SLen Brown u8 field_flags, 268e2f7a777SLen Brown u8 field_attribute, 269e2f7a777SLen Brown u32 field_bit_position, u32 field_bit_length); 270e2f7a777SLen Brown 271e2f7a777SLen Brown acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info); 272e2f7a777SLen Brown 273e2f7a777SLen Brown /* 2749e9f8733SBob Moore * exserial - field_unit support for serial address spaces 2759e9f8733SBob Moore */ 2769e9f8733SBob Moore acpi_status 2779e9f8733SBob Moore acpi_ex_read_serial_bus(union acpi_operand_object *obj_desc, 2789e9f8733SBob Moore union acpi_operand_object **return_buffer); 2799e9f8733SBob Moore 2809e9f8733SBob Moore acpi_status 2819e9f8733SBob Moore acpi_ex_write_serial_bus(union acpi_operand_object *source_desc, 2829e9f8733SBob Moore union acpi_operand_object *obj_desc, 2839e9f8733SBob Moore union acpi_operand_object **return_buffer); 2849e9f8733SBob Moore 2859e9f8733SBob Moore acpi_status 2869e9f8733SBob Moore acpi_ex_read_gpio(union acpi_operand_object *obj_desc, void *buffer); 2879e9f8733SBob Moore 2889e9f8733SBob Moore acpi_status 2899e9f8733SBob Moore acpi_ex_write_gpio(union acpi_operand_object *source_desc, 2909e9f8733SBob Moore union acpi_operand_object *obj_desc, 2919e9f8733SBob Moore union acpi_operand_object **return_buffer); 2929e9f8733SBob Moore 2939e9f8733SBob Moore /* 294e2f7a777SLen Brown * exsystem - Interface to OS services 295e2f7a777SLen Brown */ 296e2f7a777SLen Brown acpi_status 297e2f7a777SLen Brown acpi_ex_system_do_notify_op(union acpi_operand_object *value, 298e2f7a777SLen Brown union acpi_operand_object *obj_desc); 299e2f7a777SLen Brown 300ada241dcSBob Moore acpi_status acpi_ex_system_do_sleep(u64 time); 301e2f7a777SLen Brown 302e2f7a777SLen Brown acpi_status acpi_ex_system_do_stall(u32 time); 303e2f7a777SLen Brown 304e2f7a777SLen Brown acpi_status acpi_ex_system_signal_event(union acpi_operand_object *obj_desc); 305e2f7a777SLen Brown 306e2f7a777SLen Brown acpi_status 307e2f7a777SLen Brown acpi_ex_system_wait_event(union acpi_operand_object *time, 308e2f7a777SLen Brown union acpi_operand_object *obj_desc); 309e2f7a777SLen Brown 310e2f7a777SLen Brown acpi_status acpi_ex_system_reset_event(union acpi_operand_object *obj_desc); 311e2f7a777SLen Brown 312e2f7a777SLen Brown acpi_status 313e2f7a777SLen Brown acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout); 314e2f7a777SLen Brown 315e2f7a777SLen Brown acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout); 316e2f7a777SLen Brown 317e2f7a777SLen Brown /* 318e2f7a777SLen Brown * exoparg1 - ACPI AML execution, 1 operand 319e2f7a777SLen Brown */ 320e2f7a777SLen Brown acpi_status acpi_ex_opcode_0A_0T_1R(struct acpi_walk_state *walk_state); 321e2f7a777SLen Brown 322e2f7a777SLen Brown acpi_status acpi_ex_opcode_1A_0T_0R(struct acpi_walk_state *walk_state); 323e2f7a777SLen Brown 324e2f7a777SLen Brown acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state); 325e2f7a777SLen Brown 326e2f7a777SLen Brown acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state); 327e2f7a777SLen Brown 328e2f7a777SLen Brown acpi_status acpi_ex_opcode_1A_1T_0R(struct acpi_walk_state *walk_state); 329e2f7a777SLen Brown 330e2f7a777SLen Brown /* 331e2f7a777SLen Brown * exoparg2 - ACPI AML execution, 2 operands 332e2f7a777SLen Brown */ 333e2f7a777SLen Brown acpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state); 334e2f7a777SLen Brown 335e2f7a777SLen Brown acpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state); 336e2f7a777SLen Brown 337e2f7a777SLen Brown acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state); 338e2f7a777SLen Brown 339e2f7a777SLen Brown acpi_status acpi_ex_opcode_2A_2T_1R(struct acpi_walk_state *walk_state); 340e2f7a777SLen Brown 341e2f7a777SLen Brown /* 342e2f7a777SLen Brown * exoparg3 - ACPI AML execution, 3 operands 343e2f7a777SLen Brown */ 344e2f7a777SLen Brown acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state); 345e2f7a777SLen Brown 346e2f7a777SLen Brown acpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state); 347e2f7a777SLen Brown 348e2f7a777SLen Brown /* 349e2f7a777SLen Brown * exoparg6 - ACPI AML execution, 6 operands 350e2f7a777SLen Brown */ 351e2f7a777SLen Brown acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state *walk_state); 352e2f7a777SLen Brown 353e2f7a777SLen Brown /* 354e2f7a777SLen Brown * exresolv - Object resolution and get value functions 355e2f7a777SLen Brown */ 356e2f7a777SLen Brown acpi_status 357e2f7a777SLen Brown acpi_ex_resolve_to_value(union acpi_operand_object **stack_ptr, 358e2f7a777SLen Brown struct acpi_walk_state *walk_state); 359e2f7a777SLen Brown 360e2f7a777SLen Brown acpi_status 361e2f7a777SLen Brown acpi_ex_resolve_multiple(struct acpi_walk_state *walk_state, 362e2f7a777SLen Brown union acpi_operand_object *operand, 363e2f7a777SLen Brown acpi_object_type *return_type, 364e2f7a777SLen Brown union acpi_operand_object **return_desc); 365e2f7a777SLen Brown 366e2f7a777SLen Brown /* 367e2f7a777SLen Brown * exresnte - resolve namespace node 368e2f7a777SLen Brown */ 369e2f7a777SLen Brown acpi_status 370e2f7a777SLen Brown acpi_ex_resolve_node_to_value(struct acpi_namespace_node **stack_ptr, 371e2f7a777SLen Brown struct acpi_walk_state *walk_state); 372e2f7a777SLen Brown 373e2f7a777SLen Brown /* 374e2f7a777SLen Brown * exresop - resolve operand to value 375e2f7a777SLen Brown */ 376e2f7a777SLen Brown acpi_status 377e2f7a777SLen Brown acpi_ex_resolve_operands(u16 opcode, 378e2f7a777SLen Brown union acpi_operand_object **stack_ptr, 379e2f7a777SLen Brown struct acpi_walk_state *walk_state); 380e2f7a777SLen Brown 381e2f7a777SLen Brown /* 382e2f7a777SLen Brown * exdump - Interpreter debug output routines 383e2f7a777SLen Brown */ 384e2f7a777SLen Brown void acpi_ex_dump_operand(union acpi_operand_object *obj_desc, u32 depth); 385e2f7a777SLen Brown 386e2f7a777SLen Brown void 387e2f7a777SLen Brown acpi_ex_dump_operands(union acpi_operand_object **operands, 388e2f7a777SLen Brown const char *opcode_name, u32 num_opcodes); 389e2f7a777SLen Brown 390e2f7a777SLen Brown void 391e2f7a777SLen Brown acpi_ex_dump_object_descriptor(union acpi_operand_object *object, u32 flags); 392e2f7a777SLen Brown 393e2f7a777SLen Brown void acpi_ex_dump_namespace_node(struct acpi_namespace_node *node, u32 flags); 394e2f7a777SLen Brown 395e2f7a777SLen Brown /* 396e2f7a777SLen Brown * exnames - AML namestring support 397e2f7a777SLen Brown */ 398e2f7a777SLen Brown acpi_status 399e2f7a777SLen Brown acpi_ex_get_name_string(acpi_object_type data_type, 400e2f7a777SLen Brown u8 * in_aml_address, 401e2f7a777SLen Brown char **out_name_string, u32 * out_name_length); 402e2f7a777SLen Brown 403e2f7a777SLen Brown /* 404e2f7a777SLen Brown * exstore - Object store support 405e2f7a777SLen Brown */ 406e2f7a777SLen Brown acpi_status 407e2f7a777SLen Brown acpi_ex_store(union acpi_operand_object *val_desc, 408e2f7a777SLen Brown union acpi_operand_object *dest_desc, 409e2f7a777SLen Brown struct acpi_walk_state *walk_state); 410e2f7a777SLen Brown 411e2f7a777SLen Brown acpi_status 412e2f7a777SLen Brown acpi_ex_store_object_to_node(union acpi_operand_object *source_desc, 413e2f7a777SLen Brown struct acpi_namespace_node *node, 414e2f7a777SLen Brown struct acpi_walk_state *walk_state, 415e2f7a777SLen Brown u8 implicit_conversion); 416e2f7a777SLen Brown 417e2f7a777SLen Brown /* 418e2f7a777SLen Brown * exstoren - resolve/store object 419e2f7a777SLen Brown */ 420e2f7a777SLen Brown acpi_status 421e2f7a777SLen Brown acpi_ex_resolve_object(union acpi_operand_object **source_desc_ptr, 422e2f7a777SLen Brown acpi_object_type target_type, 423e2f7a777SLen Brown struct acpi_walk_state *walk_state); 424e2f7a777SLen Brown 425e2f7a777SLen Brown acpi_status 426e2f7a777SLen Brown acpi_ex_store_object_to_object(union acpi_operand_object *source_desc, 427e2f7a777SLen Brown union acpi_operand_object *dest_desc, 428e2f7a777SLen Brown union acpi_operand_object **new_desc, 429e2f7a777SLen Brown struct acpi_walk_state *walk_state); 430e2f7a777SLen Brown 431e2f7a777SLen Brown /* 432e2f7a777SLen Brown * exstorob - store object - buffer/string 433e2f7a777SLen Brown */ 434e2f7a777SLen Brown acpi_status 435e2f7a777SLen Brown acpi_ex_store_buffer_to_buffer(union acpi_operand_object *source_desc, 436e2f7a777SLen Brown union acpi_operand_object *target_desc); 437e2f7a777SLen Brown 438e2f7a777SLen Brown acpi_status 439e2f7a777SLen Brown acpi_ex_store_string_to_string(union acpi_operand_object *source_desc, 440e2f7a777SLen Brown union acpi_operand_object *target_desc); 441e2f7a777SLen Brown 442e2f7a777SLen Brown /* 443e2f7a777SLen Brown * excopy - object copy 444e2f7a777SLen Brown */ 445e2f7a777SLen Brown acpi_status 446e2f7a777SLen Brown acpi_ex_copy_integer_to_index_field(union acpi_operand_object *source_desc, 447e2f7a777SLen Brown union acpi_operand_object *target_desc); 448e2f7a777SLen Brown 449e2f7a777SLen Brown acpi_status 450e2f7a777SLen Brown acpi_ex_copy_integer_to_bank_field(union acpi_operand_object *source_desc, 451e2f7a777SLen Brown union acpi_operand_object *target_desc); 452e2f7a777SLen Brown 453e2f7a777SLen Brown acpi_status 454e2f7a777SLen Brown acpi_ex_copy_data_to_named_field(union acpi_operand_object *source_desc, 455e2f7a777SLen Brown struct acpi_namespace_node *node); 456e2f7a777SLen Brown 457e2f7a777SLen Brown acpi_status 458e2f7a777SLen Brown acpi_ex_copy_integer_to_buffer_field(union acpi_operand_object *source_desc, 459e2f7a777SLen Brown union acpi_operand_object *target_desc); 460e2f7a777SLen Brown 461e2f7a777SLen Brown /* 462e2f7a777SLen Brown * exutils - interpreter/scanner utilities 463e2f7a777SLen Brown */ 464e2f7a777SLen Brown void acpi_ex_enter_interpreter(void); 465e2f7a777SLen Brown 466e2f7a777SLen Brown void acpi_ex_exit_interpreter(void); 467e2f7a777SLen Brown 468ef42e53fSBob Moore u8 acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc); 469e2f7a777SLen Brown 470e2f7a777SLen Brown void acpi_ex_acquire_global_lock(u32 rule); 471e2f7a777SLen Brown 472e2f7a777SLen Brown void acpi_ex_release_global_lock(u32 rule); 473e2f7a777SLen Brown 4745df7e6cbSBob Moore void acpi_ex_eisa_id_to_string(char *dest, u64 compressed_id); 475e2f7a777SLen Brown 4765df7e6cbSBob Moore void acpi_ex_integer_to_string(char *dest, u64 value); 477e2f7a777SLen Brown 478f65358e5SSuravee Suthikulpanit void acpi_ex_pci_cls_to_string(char *dest, u8 class_code[3]); 479f65358e5SSuravee Suthikulpanit 480ec463666SBob Moore u8 acpi_is_valid_space_id(u8 space_id); 481ec463666SBob Moore 482e2f7a777SLen Brown /* 483e2f7a777SLen Brown * exregion - default op_region handlers 484e2f7a777SLen Brown */ 485e2f7a777SLen Brown acpi_status 486e2f7a777SLen Brown acpi_ex_system_memory_space_handler(u32 function, 487e2f7a777SLen Brown acpi_physical_address address, 488e2f7a777SLen Brown u32 bit_width, 4895df7e6cbSBob Moore u64 *value, 490e2f7a777SLen Brown void *handler_context, 491e2f7a777SLen Brown void *region_context); 492e2f7a777SLen Brown 493e2f7a777SLen Brown acpi_status 494e2f7a777SLen Brown acpi_ex_system_io_space_handler(u32 function, 495e2f7a777SLen Brown acpi_physical_address address, 496e2f7a777SLen Brown u32 bit_width, 4975df7e6cbSBob Moore u64 *value, 498e2f7a777SLen Brown void *handler_context, void *region_context); 499e2f7a777SLen Brown 500e2f7a777SLen Brown acpi_status 501e2f7a777SLen Brown acpi_ex_pci_config_space_handler(u32 function, 502e2f7a777SLen Brown acpi_physical_address address, 503e2f7a777SLen Brown u32 bit_width, 5045df7e6cbSBob Moore u64 *value, 505e2f7a777SLen Brown void *handler_context, void *region_context); 506e2f7a777SLen Brown 507e2f7a777SLen Brown acpi_status 508e2f7a777SLen Brown acpi_ex_cmos_space_handler(u32 function, 509e2f7a777SLen Brown acpi_physical_address address, 510e2f7a777SLen Brown u32 bit_width, 5115df7e6cbSBob Moore u64 *value, 512e2f7a777SLen Brown void *handler_context, void *region_context); 513e2f7a777SLen Brown 514e2f7a777SLen Brown acpi_status 515e2f7a777SLen Brown acpi_ex_pci_bar_space_handler(u32 function, 516e2f7a777SLen Brown acpi_physical_address address, 517e2f7a777SLen Brown u32 bit_width, 5185df7e6cbSBob Moore u64 *value, 519e2f7a777SLen Brown void *handler_context, void *region_context); 520e2f7a777SLen Brown 521e2f7a777SLen Brown acpi_status 522e2f7a777SLen Brown acpi_ex_embedded_controller_space_handler(u32 function, 523e2f7a777SLen Brown acpi_physical_address address, 524e2f7a777SLen Brown u32 bit_width, 5255df7e6cbSBob Moore u64 *value, 526e2f7a777SLen Brown void *handler_context, 527e2f7a777SLen Brown void *region_context); 528e2f7a777SLen Brown 529e2f7a777SLen Brown acpi_status 530e2f7a777SLen Brown acpi_ex_sm_bus_space_handler(u32 function, 531e2f7a777SLen Brown acpi_physical_address address, 532e2f7a777SLen Brown u32 bit_width, 5335df7e6cbSBob Moore u64 *value, 534e2f7a777SLen Brown void *handler_context, void *region_context); 535e2f7a777SLen Brown 536e2f7a777SLen Brown acpi_status 537e2f7a777SLen Brown acpi_ex_data_table_space_handler(u32 function, 538e2f7a777SLen Brown acpi_physical_address address, 539e2f7a777SLen Brown u32 bit_width, 5405df7e6cbSBob Moore u64 *value, 541e2f7a777SLen Brown void *handler_context, void *region_context); 542e2f7a777SLen Brown 543e2f7a777SLen Brown #endif /* __INTERP_H__ */ 544