root/drivers/acpi/acpica/acdispat.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
   2 /******************************************************************************
   3  *
   4  * Name: acdispat.h - dispatcher (parser to interpreter interface)
   5  *
   6  * Copyright (C) 2000 - 2019, Intel Corp.
   7  *
   8  *****************************************************************************/
   9 
  10 #ifndef _ACDISPAT_H_
  11 #define _ACDISPAT_H_
  12 
  13 #define NAMEOF_LOCAL_NTE    "__L0"
  14 #define NAMEOF_ARG_NTE      "__A0"
  15 
  16 /*
  17  * dsargs - execution of dynamic arguments for static objects
  18  */
  19 acpi_status
  20 acpi_ds_get_buffer_field_arguments(union acpi_operand_object *obj_desc);
  21 
  22 acpi_status
  23 acpi_ds_get_bank_field_arguments(union acpi_operand_object *obj_desc);
  24 
  25 acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *rgn_desc);
  26 
  27 acpi_status acpi_ds_get_buffer_arguments(union acpi_operand_object *obj_desc);
  28 
  29 acpi_status acpi_ds_get_package_arguments(union acpi_operand_object *obj_desc);
  30 
  31 /*
  32  * dscontrol - support for execution control opcodes
  33  */
  34 acpi_status
  35 acpi_ds_exec_begin_control_op(struct acpi_walk_state *walk_state,
  36                               union acpi_parse_object *op);
  37 
  38 acpi_status
  39 acpi_ds_exec_end_control_op(struct acpi_walk_state *walk_state,
  40                             union acpi_parse_object *op);
  41 
  42 /*
  43  * dsopcode - support for late operand evaluation
  44  */
  45 acpi_status
  46 acpi_ds_eval_buffer_field_operands(struct acpi_walk_state *walk_state,
  47                                    union acpi_parse_object *op);
  48 
  49 acpi_status
  50 acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
  51                              union acpi_parse_object *op);
  52 
  53 acpi_status
  54 acpi_ds_eval_table_region_operands(struct acpi_walk_state *walk_state,
  55                                    union acpi_parse_object *op);
  56 
  57 acpi_status
  58 acpi_ds_eval_data_object_operands(struct acpi_walk_state *walk_state,
  59                                   union acpi_parse_object *op,
  60                                   union acpi_operand_object *obj_desc);
  61 
  62 acpi_status
  63 acpi_ds_eval_bank_field_operands(struct acpi_walk_state *walk_state,
  64                                  union acpi_parse_object *op);
  65 
  66 acpi_status acpi_ds_initialize_region(acpi_handle obj_handle);
  67 
  68 /*
  69  * dsexec - Parser/Interpreter interface, method execution callbacks
  70  */
  71 acpi_status
  72 acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state,
  73                             union acpi_operand_object *result_obj);
  74 
  75 acpi_status
  76 acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state,
  77                       union acpi_parse_object **out_op);
  78 
  79 acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *state);
  80 
  81 /*
  82  * dsfield - Parser/Interpreter interface for AML fields
  83  */
  84 acpi_status
  85 acpi_ds_create_field(union acpi_parse_object *op,
  86                      struct acpi_namespace_node *region_node,
  87                      struct acpi_walk_state *walk_state);
  88 
  89 acpi_status
  90 acpi_ds_create_bank_field(union acpi_parse_object *op,
  91                           struct acpi_namespace_node *region_node,
  92                           struct acpi_walk_state *walk_state);
  93 
  94 acpi_status
  95 acpi_ds_create_index_field(union acpi_parse_object *op,
  96                            struct acpi_namespace_node *region_node,
  97                            struct acpi_walk_state *walk_state);
  98 
  99 acpi_status
 100 acpi_ds_create_buffer_field(union acpi_parse_object *op,
 101                             struct acpi_walk_state *walk_state);
 102 
 103 acpi_status
 104 acpi_ds_init_field_objects(union acpi_parse_object *op,
 105                            struct acpi_walk_state *walk_state);
 106 
 107 /*
 108  * dsload - Parser/Interpreter interface
 109  */
 110 acpi_status
 111 acpi_ds_init_callbacks(struct acpi_walk_state *walk_state, u32 pass_number);
 112 
 113 /* dsload - pass 1 namespace load callbacks */
 114 
 115 acpi_status
 116 acpi_ds_load1_begin_op(struct acpi_walk_state *walk_state,
 117                        union acpi_parse_object **out_op);
 118 
 119 acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state);
 120 
 121 /* dsload - pass 2 namespace load callbacks */
 122 
 123 acpi_status
 124 acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state,
 125                        union acpi_parse_object **out_op);
 126 
 127 acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state);
 128 
 129 /*
 130  * dsmthdat - method data (locals/args)
 131  */
 132 acpi_status
 133 acpi_ds_store_object_to_local(u8 type,
 134                               u32 index,
 135                               union acpi_operand_object *src_desc,
 136                               struct acpi_walk_state *walk_state);
 137 
 138 acpi_status
 139 acpi_ds_method_data_get_entry(u16 opcode,
 140                               u32 index,
 141                               struct acpi_walk_state *walk_state,
 142                               union acpi_operand_object ***node);
 143 
 144 void acpi_ds_method_data_delete_all(struct acpi_walk_state *walk_state);
 145 
 146 u8 acpi_ds_is_method_value(union acpi_operand_object *obj_desc);
 147 
 148 acpi_status
 149 acpi_ds_method_data_get_value(u8 type,
 150                               u32 index,
 151                               struct acpi_walk_state *walk_state,
 152                               union acpi_operand_object **dest_desc);
 153 
 154 acpi_status
 155 acpi_ds_method_data_init_args(union acpi_operand_object **params,
 156                               u32 max_param_count,
 157                               struct acpi_walk_state *walk_state);
 158 
 159 acpi_status
 160 acpi_ds_method_data_get_node(u8 type,
 161                              u32 index,
 162                              struct acpi_walk_state *walk_state,
 163                              struct acpi_namespace_node **node);
 164 
 165 void acpi_ds_method_data_init(struct acpi_walk_state *walk_state);
 166 
 167 /*
 168  * dsmethod - Parser/Interpreter interface - control method parsing
 169  */
 170 acpi_status
 171 acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
 172                               union acpi_operand_object *obj_desc);
 173 
 174 acpi_status
 175 acpi_ds_call_control_method(struct acpi_thread_state *thread,
 176                             struct acpi_walk_state *walk_state,
 177                             union acpi_parse_object *op);
 178 
 179 acpi_status
 180 acpi_ds_restart_control_method(struct acpi_walk_state *walk_state,
 181                                union acpi_operand_object *return_desc);
 182 
 183 void
 184 acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
 185                                  struct acpi_walk_state *walk_state);
 186 
 187 acpi_status
 188 acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,
 189                                union acpi_operand_object *obj_desc,
 190                                struct acpi_walk_state *walk_state);
 191 
 192 acpi_status
 193 acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state);
 194 
 195 /*
 196  * dsinit
 197  */
 198 acpi_status
 199 acpi_ds_initialize_objects(u32 table_index,
 200                            struct acpi_namespace_node *start_node);
 201 
 202 /*
 203  * dsobject - Parser/Interpreter interface - object initialization and conversion
 204  */
 205 acpi_status
 206 acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,
 207                               union acpi_parse_object *op,
 208                               union acpi_operand_object **obj_desc_ptr);
 209 
 210 acpi_status
 211 acpi_ds_build_internal_buffer_obj(struct acpi_walk_state *walk_state,
 212                                   union acpi_parse_object *op,
 213                                   u32 buffer_length,
 214                                   union acpi_operand_object **obj_desc_ptr);
 215 
 216 acpi_status
 217 acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
 218                                    union acpi_parse_object *op,
 219                                    u32 package_length,
 220                                    union acpi_operand_object **obj_desc);
 221 
 222 acpi_status
 223 acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,
 224                             union acpi_parse_object *op,
 225                             u16 opcode, union acpi_operand_object **obj_desc);
 226 
 227 acpi_status
 228 acpi_ds_create_node(struct acpi_walk_state *walk_state,
 229                     struct acpi_namespace_node *node,
 230                     union acpi_parse_object *op);
 231 
 232 /*
 233  * dspkginit - Package object initialization
 234  */
 235 acpi_status
 236 acpi_ds_init_package_element(u8 object_type,
 237                              union acpi_operand_object *source_object,
 238                              union acpi_generic_state *state, void *context);
 239 
 240 /*
 241  * dsutils - Parser/Interpreter interface utility routines
 242  */
 243 void acpi_ds_clear_implicit_return(struct acpi_walk_state *walk_state);
 244 
 245 u8
 246 acpi_ds_do_implicit_return(union acpi_operand_object *return_desc,
 247                            struct acpi_walk_state *walk_state,
 248                            u8 add_reference);
 249 
 250 u8
 251 acpi_ds_is_result_used(union acpi_parse_object *op,
 252                        struct acpi_walk_state *walk_state);
 253 
 254 void
 255 acpi_ds_delete_result_if_not_used(union acpi_parse_object *op,
 256                                   union acpi_operand_object *result_obj,
 257                                   struct acpi_walk_state *walk_state);
 258 
 259 acpi_status
 260 acpi_ds_create_operand(struct acpi_walk_state *walk_state,
 261                        union acpi_parse_object *arg, u32 args_remaining);
 262 
 263 acpi_status
 264 acpi_ds_create_operands(struct acpi_walk_state *walk_state,
 265                         union acpi_parse_object *first_arg);
 266 
 267 acpi_status acpi_ds_resolve_operands(struct acpi_walk_state *walk_state);
 268 
 269 void acpi_ds_clear_operands(struct acpi_walk_state *walk_state);
 270 
 271 acpi_status acpi_ds_evaluate_name_path(struct acpi_walk_state *walk_state);
 272 
 273 /*
 274  * dswscope - Scope Stack manipulation
 275  */
 276 acpi_status
 277 acpi_ds_scope_stack_push(struct acpi_namespace_node *node,
 278                          acpi_object_type type,
 279                          struct acpi_walk_state *walk_state);
 280 
 281 acpi_status acpi_ds_scope_stack_pop(struct acpi_walk_state *walk_state);
 282 
 283 void acpi_ds_scope_stack_clear(struct acpi_walk_state *walk_state);
 284 
 285 /*
 286  * dswstate - parser WALK_STATE management routines
 287  */
 288 acpi_status
 289 acpi_ds_obj_stack_push(void *object, struct acpi_walk_state *walk_state);
 290 
 291 acpi_status
 292 acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state *walk_state);
 293 
 294 struct acpi_walk_state * acpi_ds_create_walk_state(acpi_owner_id owner_id,
 295                                                    union acpi_parse_object
 296                                                    *origin,
 297                                                    union acpi_operand_object
 298                                                    *mth_desc,
 299                                                    struct acpi_thread_state
 300                                                    *thread);
 301 
 302 acpi_status
 303 acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state,
 304                       union acpi_parse_object *op,
 305                       struct acpi_namespace_node *method_node,
 306                       u8 * aml_start,
 307                       u32 aml_length,
 308                       struct acpi_evaluate_info *info, u8 pass_number);
 309 
 310 void
 311 acpi_ds_obj_stack_pop_and_delete(u32 pop_count,
 312                                  struct acpi_walk_state *walk_state);
 313 
 314 void acpi_ds_delete_walk_state(struct acpi_walk_state *walk_state);
 315 
 316 struct acpi_walk_state *acpi_ds_pop_walk_state(struct acpi_thread_state
 317                                                *thread);
 318 
 319 void
 320 acpi_ds_push_walk_state(struct acpi_walk_state *walk_state,
 321                         struct acpi_thread_state *thread);
 322 
 323 acpi_status acpi_ds_result_stack_clear(struct acpi_walk_state *walk_state);
 324 
 325 struct acpi_walk_state *acpi_ds_get_current_walk_state(struct acpi_thread_state
 326                                                        *thread);
 327 
 328 acpi_status
 329 acpi_ds_result_pop(union acpi_operand_object **object,
 330                    struct acpi_walk_state *walk_state);
 331 
 332 acpi_status
 333 acpi_ds_result_push(union acpi_operand_object *object,
 334                     struct acpi_walk_state *walk_state);
 335 
 336 /*
 337  * dsdebug - parser debugging routines
 338  */
 339 void
 340 acpi_ds_dump_method_stack(acpi_status status,
 341                           struct acpi_walk_state *walk_state,
 342                           union acpi_parse_object *op);
 343 
 344 #endif                          /* _ACDISPAT_H_ */

/* [<][>][^][v][top][bottom][index][help] */