162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 262306a36Sopenharmony_ci/****************************************************************************** 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Name: acinterp.h - Interpreter subcomponent prototypes and defines 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2000 - 2023, Intel Corp. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci *****************************************************************************/ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef __ACINTERP_H__ 1162306a36Sopenharmony_ci#define __ACINTERP_H__ 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define ACPI_WALK_OPERANDS (&(walk_state->operands [walk_state->num_operands -1])) 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci/* Macros for tables used for debug output */ 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define ACPI_EXD_OFFSET(f) (u8) ACPI_OFFSET (union acpi_operand_object,f) 1862306a36Sopenharmony_ci#define ACPI_EXD_NSOFFSET(f) (u8) ACPI_OFFSET (struct acpi_namespace_node,f) 1962306a36Sopenharmony_ci#define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_exdump_info)) 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci/* 2262306a36Sopenharmony_ci * If possible, pack the following structures to byte alignment, since we 2362306a36Sopenharmony_ci * don't care about performance for debug output. Two cases where we cannot 2462306a36Sopenharmony_ci * pack the structures: 2562306a36Sopenharmony_ci * 2662306a36Sopenharmony_ci * 1) Hardware does not support misaligned memory transfers 2762306a36Sopenharmony_ci * 2) Compiler does not support pointers within packed structures 2862306a36Sopenharmony_ci */ 2962306a36Sopenharmony_ci#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) 3062306a36Sopenharmony_ci#pragma pack(1) 3162306a36Sopenharmony_ci#endif 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_citypedef const struct acpi_exdump_info { 3462306a36Sopenharmony_ci u8 opcode; 3562306a36Sopenharmony_ci u8 offset; 3662306a36Sopenharmony_ci const char *name; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci} acpi_exdump_info; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* Values for the Opcode field above */ 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#define ACPI_EXD_INIT 0 4362306a36Sopenharmony_ci#define ACPI_EXD_TYPE 1 4462306a36Sopenharmony_ci#define ACPI_EXD_UINT8 2 4562306a36Sopenharmony_ci#define ACPI_EXD_UINT16 3 4662306a36Sopenharmony_ci#define ACPI_EXD_UINT32 4 4762306a36Sopenharmony_ci#define ACPI_EXD_UINT64 5 4862306a36Sopenharmony_ci#define ACPI_EXD_LITERAL 6 4962306a36Sopenharmony_ci#define ACPI_EXD_POINTER 7 5062306a36Sopenharmony_ci#define ACPI_EXD_ADDRESS 8 5162306a36Sopenharmony_ci#define ACPI_EXD_STRING 9 5262306a36Sopenharmony_ci#define ACPI_EXD_BUFFER 10 5362306a36Sopenharmony_ci#define ACPI_EXD_PACKAGE 11 5462306a36Sopenharmony_ci#define ACPI_EXD_FIELD 12 5562306a36Sopenharmony_ci#define ACPI_EXD_REFERENCE 13 5662306a36Sopenharmony_ci#define ACPI_EXD_LIST 14 /* Operand object list */ 5762306a36Sopenharmony_ci#define ACPI_EXD_HDLR_LIST 15 /* Address Handler list */ 5862306a36Sopenharmony_ci#define ACPI_EXD_RGN_LIST 16 /* Region list */ 5962306a36Sopenharmony_ci#define ACPI_EXD_NODE 17 /* Namespace Node */ 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci/* restore default alignment */ 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci#pragma pack() 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci/* 6662306a36Sopenharmony_ci * exconvrt - object conversion 6762306a36Sopenharmony_ci */ 6862306a36Sopenharmony_ciacpi_status 6962306a36Sopenharmony_ciacpi_ex_convert_to_integer(union acpi_operand_object *obj_desc, 7062306a36Sopenharmony_ci union acpi_operand_object **result_desc, 7162306a36Sopenharmony_ci u32 implicit_conversion); 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ciacpi_status 7462306a36Sopenharmony_ciacpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc, 7562306a36Sopenharmony_ci union acpi_operand_object **result_desc); 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciacpi_status 7862306a36Sopenharmony_ciacpi_ex_convert_to_string(union acpi_operand_object *obj_desc, 7962306a36Sopenharmony_ci union acpi_operand_object **result_desc, u32 type); 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci/* Types for ->String conversion */ 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci#define ACPI_EXPLICIT_BYTE_COPY 0x00000000 8462306a36Sopenharmony_ci#define ACPI_EXPLICIT_CONVERT_HEX 0x00000001 8562306a36Sopenharmony_ci#define ACPI_IMPLICIT_CONVERT_HEX 0x00000002 8662306a36Sopenharmony_ci#define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciacpi_status 8962306a36Sopenharmony_ciacpi_ex_convert_to_target_type(acpi_object_type destination_type, 9062306a36Sopenharmony_ci union acpi_operand_object *source_desc, 9162306a36Sopenharmony_ci union acpi_operand_object **result_desc, 9262306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci/* 9562306a36Sopenharmony_ci * exdebug - AML debug object 9662306a36Sopenharmony_ci */ 9762306a36Sopenharmony_civoid 9862306a36Sopenharmony_ciacpi_ex_do_debug_object(union acpi_operand_object *source_desc, 9962306a36Sopenharmony_ci u32 level, u32 index); 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_civoid 10262306a36Sopenharmony_ciacpi_ex_start_trace_method(struct acpi_namespace_node *method_node, 10362306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 10462306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_civoid 10762306a36Sopenharmony_ciacpi_ex_stop_trace_method(struct acpi_namespace_node *method_node, 10862306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 10962306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_civoid 11262306a36Sopenharmony_ciacpi_ex_start_trace_opcode(union acpi_parse_object *op, 11362306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_civoid 11662306a36Sopenharmony_ciacpi_ex_stop_trace_opcode(union acpi_parse_object *op, 11762306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_civoid 12062306a36Sopenharmony_ciacpi_ex_trace_point(acpi_trace_event_type type, 12162306a36Sopenharmony_ci u8 begin, u8 *aml, char *pathname); 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci/* 12462306a36Sopenharmony_ci * exfield - ACPI AML (p-code) execution - field manipulation 12562306a36Sopenharmony_ci */ 12662306a36Sopenharmony_ciacpi_status 12762306a36Sopenharmony_ciacpi_ex_get_protocol_buffer_length(u32 protocol_id, u32 *return_length); 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciacpi_status 13062306a36Sopenharmony_ciacpi_ex_common_buffer_setup(union acpi_operand_object *obj_desc, 13162306a36Sopenharmony_ci u32 buffer_length, u32 * datum_count); 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ciacpi_status 13462306a36Sopenharmony_ciacpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc, 13562306a36Sopenharmony_ci u64 mask, 13662306a36Sopenharmony_ci u64 field_value, u32 field_datum_byte_offset); 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_civoid 13962306a36Sopenharmony_ciacpi_ex_get_buffer_datum(u64 *datum, 14062306a36Sopenharmony_ci void *buffer, 14162306a36Sopenharmony_ci u32 buffer_length, 14262306a36Sopenharmony_ci u32 byte_granularity, u32 buffer_offset); 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_civoid 14562306a36Sopenharmony_ciacpi_ex_set_buffer_datum(u64 merged_datum, 14662306a36Sopenharmony_ci void *buffer, 14762306a36Sopenharmony_ci u32 buffer_length, 14862306a36Sopenharmony_ci u32 byte_granularity, u32 buffer_offset); 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ciacpi_status 15162306a36Sopenharmony_ciacpi_ex_read_data_from_field(struct acpi_walk_state *walk_state, 15262306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 15362306a36Sopenharmony_ci union acpi_operand_object **ret_buffer_desc); 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ciacpi_status 15662306a36Sopenharmony_ciacpi_ex_write_data_to_field(union acpi_operand_object *source_desc, 15762306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 15862306a36Sopenharmony_ci union acpi_operand_object **result_desc); 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci/* 16162306a36Sopenharmony_ci * exfldio - low level field I/O 16262306a36Sopenharmony_ci */ 16362306a36Sopenharmony_ciacpi_status 16462306a36Sopenharmony_ciacpi_ex_extract_from_field(union acpi_operand_object *obj_desc, 16562306a36Sopenharmony_ci void *buffer, u32 buffer_length); 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ciacpi_status 16862306a36Sopenharmony_ciacpi_ex_insert_into_field(union acpi_operand_object *obj_desc, 16962306a36Sopenharmony_ci void *buffer, u32 buffer_length); 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ciacpi_status 17262306a36Sopenharmony_ciacpi_ex_access_region(union acpi_operand_object *obj_desc, 17362306a36Sopenharmony_ci u32 field_datum_byte_offset, u64 *value, u32 read_write); 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci/* 17662306a36Sopenharmony_ci * exmisc - misc support routines 17762306a36Sopenharmony_ci */ 17862306a36Sopenharmony_ciacpi_status 17962306a36Sopenharmony_ciacpi_ex_get_object_reference(union acpi_operand_object *obj_desc, 18062306a36Sopenharmony_ci union acpi_operand_object **return_desc, 18162306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ciacpi_status 18462306a36Sopenharmony_ciacpi_ex_concat_template(union acpi_operand_object *obj_desc, 18562306a36Sopenharmony_ci union acpi_operand_object *obj_desc2, 18662306a36Sopenharmony_ci union acpi_operand_object **actual_return_desc, 18762306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ciacpi_status 19062306a36Sopenharmony_ciacpi_ex_do_concatenate(union acpi_operand_object *obj_desc, 19162306a36Sopenharmony_ci union acpi_operand_object *obj_desc2, 19262306a36Sopenharmony_ci union acpi_operand_object **actual_return_desc, 19362306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ciacpi_status 19662306a36Sopenharmony_ciacpi_ex_do_logical_numeric_op(u16 opcode, 19762306a36Sopenharmony_ci u64 integer0, u64 integer1, u8 *logical_result); 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ciacpi_status 20062306a36Sopenharmony_ciacpi_ex_do_logical_op(u16 opcode, 20162306a36Sopenharmony_ci union acpi_operand_object *operand0, 20262306a36Sopenharmony_ci union acpi_operand_object *operand1, u8 *logical_result); 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ciu64 acpi_ex_do_math_op(u16 opcode, u64 operand0, u64 operand1); 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ciacpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state); 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ciacpi_status acpi_ex_create_processor(struct acpi_walk_state *walk_state); 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ciacpi_status acpi_ex_create_power_resource(struct acpi_walk_state *walk_state); 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ciacpi_status 21362306a36Sopenharmony_ciacpi_ex_create_region(u8 * aml_start, 21462306a36Sopenharmony_ci u32 aml_length, 21562306a36Sopenharmony_ci u8 region_space, struct acpi_walk_state *walk_state); 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ciacpi_status acpi_ex_create_event(struct acpi_walk_state *walk_state); 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ciacpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state); 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ciacpi_status 22262306a36Sopenharmony_ciacpi_ex_create_method(u8 * aml_start, 22362306a36Sopenharmony_ci u32 aml_length, struct acpi_walk_state *walk_state); 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci/* 22662306a36Sopenharmony_ci * exconfig - dynamic table load/unload 22762306a36Sopenharmony_ci */ 22862306a36Sopenharmony_ciacpi_status 22962306a36Sopenharmony_ciacpi_ex_load_op(union acpi_operand_object *obj_desc, 23062306a36Sopenharmony_ci union acpi_operand_object *target, 23162306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ciacpi_status 23462306a36Sopenharmony_ciacpi_ex_load_table_op(struct acpi_walk_state *walk_state, 23562306a36Sopenharmony_ci union acpi_operand_object **return_desc); 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ciacpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle); 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci/* 24062306a36Sopenharmony_ci * exmutex - mutex support 24162306a36Sopenharmony_ci */ 24262306a36Sopenharmony_ciacpi_status 24362306a36Sopenharmony_ciacpi_ex_acquire_mutex(union acpi_operand_object *time_desc, 24462306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 24562306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ciacpi_status 24862306a36Sopenharmony_ciacpi_ex_acquire_mutex_object(u16 timeout, 24962306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 25062306a36Sopenharmony_ci acpi_thread_id thread_id); 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ciacpi_status 25362306a36Sopenharmony_ciacpi_ex_release_mutex(union acpi_operand_object *obj_desc, 25462306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ciacpi_status acpi_ex_release_mutex_object(union acpi_operand_object *obj_desc); 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_civoid acpi_ex_release_all_mutexes(struct acpi_thread_state *thread); 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_civoid acpi_ex_unlink_mutex(union acpi_operand_object *obj_desc); 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci/* 26362306a36Sopenharmony_ci * exprep - ACPI AML execution - prep utilities 26462306a36Sopenharmony_ci */ 26562306a36Sopenharmony_ciacpi_status 26662306a36Sopenharmony_ciacpi_ex_prep_common_field_object(union acpi_operand_object *obj_desc, 26762306a36Sopenharmony_ci u8 field_flags, 26862306a36Sopenharmony_ci u8 field_attribute, 26962306a36Sopenharmony_ci u32 field_bit_position, u32 field_bit_length); 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_ciacpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info); 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci/* 27462306a36Sopenharmony_ci * exserial - field_unit support for serial address spaces 27562306a36Sopenharmony_ci */ 27662306a36Sopenharmony_ciacpi_status 27762306a36Sopenharmony_ciacpi_ex_read_serial_bus(union acpi_operand_object *obj_desc, 27862306a36Sopenharmony_ci union acpi_operand_object **return_buffer); 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ciacpi_status 28162306a36Sopenharmony_ciacpi_ex_write_serial_bus(union acpi_operand_object *source_desc, 28262306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 28362306a36Sopenharmony_ci union acpi_operand_object **return_buffer); 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_ciacpi_status 28662306a36Sopenharmony_ciacpi_ex_read_gpio(union acpi_operand_object *obj_desc, void *buffer); 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ciacpi_status 28962306a36Sopenharmony_ciacpi_ex_write_gpio(union acpi_operand_object *source_desc, 29062306a36Sopenharmony_ci union acpi_operand_object *obj_desc, 29162306a36Sopenharmony_ci union acpi_operand_object **return_buffer); 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci/* 29462306a36Sopenharmony_ci * exsystem - Interface to OS services 29562306a36Sopenharmony_ci */ 29662306a36Sopenharmony_ciacpi_status 29762306a36Sopenharmony_ciacpi_ex_system_do_notify_op(union acpi_operand_object *value, 29862306a36Sopenharmony_ci union acpi_operand_object *obj_desc); 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ciacpi_status acpi_ex_system_do_sleep(u64 time); 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ciacpi_status acpi_ex_system_do_stall(u32 time); 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ciacpi_status acpi_ex_system_signal_event(union acpi_operand_object *obj_desc); 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ciacpi_status 30762306a36Sopenharmony_ciacpi_ex_system_wait_event(union acpi_operand_object *time, 30862306a36Sopenharmony_ci union acpi_operand_object *obj_desc); 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ciacpi_status acpi_ex_system_reset_event(union acpi_operand_object *obj_desc); 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ciacpi_status 31362306a36Sopenharmony_ciacpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout); 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ciacpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout); 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci/* 31862306a36Sopenharmony_ci * exoparg1 - ACPI AML execution, 1 operand 31962306a36Sopenharmony_ci */ 32062306a36Sopenharmony_ciacpi_status acpi_ex_opcode_0A_0T_1R(struct acpi_walk_state *walk_state); 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ciacpi_status acpi_ex_opcode_1A_0T_0R(struct acpi_walk_state *walk_state); 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ciacpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state); 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciacpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state); 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_ciacpi_status acpi_ex_opcode_1A_1T_0R(struct acpi_walk_state *walk_state); 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ci/* 33162306a36Sopenharmony_ci * exoparg2 - ACPI AML execution, 2 operands 33262306a36Sopenharmony_ci */ 33362306a36Sopenharmony_ciacpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state); 33462306a36Sopenharmony_ci 33562306a36Sopenharmony_ciacpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state); 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ciacpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state); 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ciacpi_status acpi_ex_opcode_2A_2T_1R(struct acpi_walk_state *walk_state); 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci/* 34262306a36Sopenharmony_ci * exoparg3 - ACPI AML execution, 3 operands 34362306a36Sopenharmony_ci */ 34462306a36Sopenharmony_ciacpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state); 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_ciacpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state); 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_ci/* 34962306a36Sopenharmony_ci * exoparg6 - ACPI AML execution, 6 operands 35062306a36Sopenharmony_ci */ 35162306a36Sopenharmony_ciacpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state *walk_state); 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci/* 35462306a36Sopenharmony_ci * exresolv - Object resolution and get value functions 35562306a36Sopenharmony_ci */ 35662306a36Sopenharmony_ciacpi_status 35762306a36Sopenharmony_ciacpi_ex_resolve_to_value(union acpi_operand_object **stack_ptr, 35862306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_ciacpi_status 36162306a36Sopenharmony_ciacpi_ex_resolve_multiple(struct acpi_walk_state *walk_state, 36262306a36Sopenharmony_ci union acpi_operand_object *operand, 36362306a36Sopenharmony_ci acpi_object_type *return_type, 36462306a36Sopenharmony_ci union acpi_operand_object **return_desc); 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci/* 36762306a36Sopenharmony_ci * exresnte - resolve namespace node 36862306a36Sopenharmony_ci */ 36962306a36Sopenharmony_ciacpi_status 37062306a36Sopenharmony_ciacpi_ex_resolve_node_to_value(struct acpi_namespace_node **stack_ptr, 37162306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ci/* 37462306a36Sopenharmony_ci * exresop - resolve operand to value 37562306a36Sopenharmony_ci */ 37662306a36Sopenharmony_ciacpi_status 37762306a36Sopenharmony_ciacpi_ex_resolve_operands(u16 opcode, 37862306a36Sopenharmony_ci union acpi_operand_object **stack_ptr, 37962306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ci/* 38262306a36Sopenharmony_ci * exdump - Interpreter debug output routines 38362306a36Sopenharmony_ci */ 38462306a36Sopenharmony_civoid acpi_ex_dump_operand(union acpi_operand_object *obj_desc, u32 depth); 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_civoid 38762306a36Sopenharmony_ciacpi_ex_dump_operands(union acpi_operand_object **operands, 38862306a36Sopenharmony_ci const char *opcode_name, u32 num_opcodes); 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_civoid 39162306a36Sopenharmony_ciacpi_ex_dump_object_descriptor(union acpi_operand_object *object, u32 flags); 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_civoid acpi_ex_dump_namespace_node(struct acpi_namespace_node *node, u32 flags); 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci/* 39662306a36Sopenharmony_ci * exnames - AML namestring support 39762306a36Sopenharmony_ci */ 39862306a36Sopenharmony_ciacpi_status 39962306a36Sopenharmony_ciacpi_ex_get_name_string(acpi_object_type data_type, 40062306a36Sopenharmony_ci u8 * in_aml_address, 40162306a36Sopenharmony_ci char **out_name_string, u32 * out_name_length); 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_ci/* 40462306a36Sopenharmony_ci * exstore - Object store support 40562306a36Sopenharmony_ci */ 40662306a36Sopenharmony_ciacpi_status 40762306a36Sopenharmony_ciacpi_ex_store(union acpi_operand_object *val_desc, 40862306a36Sopenharmony_ci union acpi_operand_object *dest_desc, 40962306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ciacpi_status 41262306a36Sopenharmony_ciacpi_ex_store_object_to_node(union acpi_operand_object *source_desc, 41362306a36Sopenharmony_ci struct acpi_namespace_node *node, 41462306a36Sopenharmony_ci struct acpi_walk_state *walk_state, 41562306a36Sopenharmony_ci u8 implicit_conversion); 41662306a36Sopenharmony_ci 41762306a36Sopenharmony_ci/* 41862306a36Sopenharmony_ci * exstoren - resolve/store object 41962306a36Sopenharmony_ci */ 42062306a36Sopenharmony_ciacpi_status 42162306a36Sopenharmony_ciacpi_ex_resolve_object(union acpi_operand_object **source_desc_ptr, 42262306a36Sopenharmony_ci acpi_object_type target_type, 42362306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_ciacpi_status 42662306a36Sopenharmony_ciacpi_ex_store_object_to_object(union acpi_operand_object *source_desc, 42762306a36Sopenharmony_ci union acpi_operand_object *dest_desc, 42862306a36Sopenharmony_ci union acpi_operand_object **new_desc, 42962306a36Sopenharmony_ci struct acpi_walk_state *walk_state); 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci/* 43262306a36Sopenharmony_ci * exstorob - store object - buffer/string 43362306a36Sopenharmony_ci */ 43462306a36Sopenharmony_ciacpi_status 43562306a36Sopenharmony_ciacpi_ex_store_buffer_to_buffer(union acpi_operand_object *source_desc, 43662306a36Sopenharmony_ci union acpi_operand_object *target_desc); 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ciacpi_status 43962306a36Sopenharmony_ciacpi_ex_store_string_to_string(union acpi_operand_object *source_desc, 44062306a36Sopenharmony_ci union acpi_operand_object *target_desc); 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_ci/* 44362306a36Sopenharmony_ci * excopy - object copy 44462306a36Sopenharmony_ci */ 44562306a36Sopenharmony_ciacpi_status 44662306a36Sopenharmony_ciacpi_ex_copy_integer_to_index_field(union acpi_operand_object *source_desc, 44762306a36Sopenharmony_ci union acpi_operand_object *target_desc); 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_ciacpi_status 45062306a36Sopenharmony_ciacpi_ex_copy_integer_to_bank_field(union acpi_operand_object *source_desc, 45162306a36Sopenharmony_ci union acpi_operand_object *target_desc); 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_ciacpi_status 45462306a36Sopenharmony_ciacpi_ex_copy_data_to_named_field(union acpi_operand_object *source_desc, 45562306a36Sopenharmony_ci struct acpi_namespace_node *node); 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ciacpi_status 45862306a36Sopenharmony_ciacpi_ex_copy_integer_to_buffer_field(union acpi_operand_object *source_desc, 45962306a36Sopenharmony_ci union acpi_operand_object *target_desc); 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci/* 46262306a36Sopenharmony_ci * exutils - interpreter/scanner utilities 46362306a36Sopenharmony_ci */ 46462306a36Sopenharmony_civoid acpi_ex_enter_interpreter(void); 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_civoid acpi_ex_exit_interpreter(void); 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ciu8 acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc); 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_civoid acpi_ex_acquire_global_lock(u32 rule); 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_civoid acpi_ex_release_global_lock(u32 rule); 47362306a36Sopenharmony_ci 47462306a36Sopenharmony_civoid acpi_ex_eisa_id_to_string(char *dest, u64 compressed_id); 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_civoid acpi_ex_integer_to_string(char *dest, u64 value); 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_civoid acpi_ex_pci_cls_to_string(char *dest, u8 class_code[3]); 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ciu8 acpi_is_valid_space_id(u8 space_id); 48162306a36Sopenharmony_ci 48262306a36Sopenharmony_ci/* 48362306a36Sopenharmony_ci * exregion - default op_region handlers 48462306a36Sopenharmony_ci */ 48562306a36Sopenharmony_ciacpi_status 48662306a36Sopenharmony_ciacpi_ex_system_memory_space_handler(u32 function, 48762306a36Sopenharmony_ci acpi_physical_address address, 48862306a36Sopenharmony_ci u32 bit_width, 48962306a36Sopenharmony_ci u64 *value, 49062306a36Sopenharmony_ci void *handler_context, 49162306a36Sopenharmony_ci void *region_context); 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_ciacpi_status 49462306a36Sopenharmony_ciacpi_ex_system_io_space_handler(u32 function, 49562306a36Sopenharmony_ci acpi_physical_address address, 49662306a36Sopenharmony_ci u32 bit_width, 49762306a36Sopenharmony_ci u64 *value, 49862306a36Sopenharmony_ci void *handler_context, void *region_context); 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_ciacpi_status 50162306a36Sopenharmony_ciacpi_ex_pci_config_space_handler(u32 function, 50262306a36Sopenharmony_ci acpi_physical_address address, 50362306a36Sopenharmony_ci u32 bit_width, 50462306a36Sopenharmony_ci u64 *value, 50562306a36Sopenharmony_ci void *handler_context, void *region_context); 50662306a36Sopenharmony_ci 50762306a36Sopenharmony_ciacpi_status 50862306a36Sopenharmony_ciacpi_ex_cmos_space_handler(u32 function, 50962306a36Sopenharmony_ci acpi_physical_address address, 51062306a36Sopenharmony_ci u32 bit_width, 51162306a36Sopenharmony_ci u64 *value, 51262306a36Sopenharmony_ci void *handler_context, void *region_context); 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ciacpi_status 51562306a36Sopenharmony_ciacpi_ex_pci_bar_space_handler(u32 function, 51662306a36Sopenharmony_ci acpi_physical_address address, 51762306a36Sopenharmony_ci u32 bit_width, 51862306a36Sopenharmony_ci u64 *value, 51962306a36Sopenharmony_ci void *handler_context, void *region_context); 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ciacpi_status 52262306a36Sopenharmony_ciacpi_ex_embedded_controller_space_handler(u32 function, 52362306a36Sopenharmony_ci acpi_physical_address address, 52462306a36Sopenharmony_ci u32 bit_width, 52562306a36Sopenharmony_ci u64 *value, 52662306a36Sopenharmony_ci void *handler_context, 52762306a36Sopenharmony_ci void *region_context); 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_ciacpi_status 53062306a36Sopenharmony_ciacpi_ex_sm_bus_space_handler(u32 function, 53162306a36Sopenharmony_ci acpi_physical_address address, 53262306a36Sopenharmony_ci u32 bit_width, 53362306a36Sopenharmony_ci u64 *value, 53462306a36Sopenharmony_ci void *handler_context, void *region_context); 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ciacpi_status 53762306a36Sopenharmony_ciacpi_ex_data_table_space_handler(u32 function, 53862306a36Sopenharmony_ci acpi_physical_address address, 53962306a36Sopenharmony_ci u32 bit_width, 54062306a36Sopenharmony_ci u64 *value, 54162306a36Sopenharmony_ci void *handler_context, void *region_context); 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_ci#endif /* __INTERP_H__ */ 544