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