162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
262306a36Sopenharmony_ci/******************************************************************************
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2000 - 2023, Intel Corp.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci *****************************************************************************/
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _ACUTILS_H
1162306a36Sopenharmony_ci#define _ACUTILS_H
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciextern const u8 acpi_gbl_resource_aml_sizes[];
1462306a36Sopenharmony_ciextern const u8 acpi_gbl_resource_aml_serial_bus_sizes[];
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/* Strings used by the disassembler and debugger resource dump routines */
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciextern const char *acpi_gbl_bm_decode[];
2162306a36Sopenharmony_ciextern const char *acpi_gbl_config_decode[];
2262306a36Sopenharmony_ciextern const char *acpi_gbl_consume_decode[];
2362306a36Sopenharmony_ciextern const char *acpi_gbl_dec_decode[];
2462306a36Sopenharmony_ciextern const char *acpi_gbl_he_decode[];
2562306a36Sopenharmony_ciextern const char *acpi_gbl_io_decode[];
2662306a36Sopenharmony_ciextern const char *acpi_gbl_ll_decode[];
2762306a36Sopenharmony_ciextern const char *acpi_gbl_max_decode[];
2862306a36Sopenharmony_ciextern const char *acpi_gbl_mem_decode[];
2962306a36Sopenharmony_ciextern const char *acpi_gbl_min_decode[];
3062306a36Sopenharmony_ciextern const char *acpi_gbl_mtp_decode[];
3162306a36Sopenharmony_ciextern const char *acpi_gbl_phy_decode[];
3262306a36Sopenharmony_ciextern const char *acpi_gbl_rng_decode[];
3362306a36Sopenharmony_ciextern const char *acpi_gbl_rw_decode[];
3462306a36Sopenharmony_ciextern const char *acpi_gbl_shr_decode[];
3562306a36Sopenharmony_ciextern const char *acpi_gbl_siz_decode[];
3662306a36Sopenharmony_ciextern const char *acpi_gbl_trs_decode[];
3762306a36Sopenharmony_ciextern const char *acpi_gbl_ttp_decode[];
3862306a36Sopenharmony_ciextern const char *acpi_gbl_typ_decode[];
3962306a36Sopenharmony_ciextern const char *acpi_gbl_ppc_decode[];
4062306a36Sopenharmony_ciextern const char *acpi_gbl_ior_decode[];
4162306a36Sopenharmony_ciextern const char *acpi_gbl_dts_decode[];
4262306a36Sopenharmony_ciextern const char *acpi_gbl_ct_decode[];
4362306a36Sopenharmony_ciextern const char *acpi_gbl_sbt_decode[];
4462306a36Sopenharmony_ciextern const char *acpi_gbl_am_decode[];
4562306a36Sopenharmony_ciextern const char *acpi_gbl_sm_decode[];
4662306a36Sopenharmony_ciextern const char *acpi_gbl_wm_decode[];
4762306a36Sopenharmony_ciextern const char *acpi_gbl_cph_decode[];
4862306a36Sopenharmony_ciextern const char *acpi_gbl_cpo_decode[];
4962306a36Sopenharmony_ciextern const char *acpi_gbl_dp_decode[];
5062306a36Sopenharmony_ciextern const char *acpi_gbl_ed_decode[];
5162306a36Sopenharmony_ciextern const char *acpi_gbl_bpb_decode[];
5262306a36Sopenharmony_ciextern const char *acpi_gbl_sb_decode[];
5362306a36Sopenharmony_ciextern const char *acpi_gbl_fc_decode[];
5462306a36Sopenharmony_ciextern const char *acpi_gbl_pt_decode[];
5562306a36Sopenharmony_ciextern const char *acpi_gbl_ptyp_decode[];
5662306a36Sopenharmony_ciextern const char *acpi_gbl_clock_input_mode[];
5762306a36Sopenharmony_ciextern const char *acpi_gbl_clock_input_scale[];
5862306a36Sopenharmony_ci#endif
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci/*
6162306a36Sopenharmony_ci * For the iASL compiler case, the output is redirected to stderr so that
6262306a36Sopenharmony_ci * any of the various ACPI errors and warnings do not appear in the output
6362306a36Sopenharmony_ci * files, for either the compiler or disassembler portions of the tool.
6462306a36Sopenharmony_ci */
6562306a36Sopenharmony_ci#ifdef ACPI_ASL_COMPILER
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci#include <stdio.h>
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci#define ACPI_MSG_REDIRECT_BEGIN \
7062306a36Sopenharmony_ci	FILE                            *output_file = acpi_gbl_output_file; \
7162306a36Sopenharmony_ci	acpi_os_redirect_output (stderr);
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci#define ACPI_MSG_REDIRECT_END \
7462306a36Sopenharmony_ci	acpi_os_redirect_output (output_file);
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci#else
7762306a36Sopenharmony_ci/*
7862306a36Sopenharmony_ci * non-iASL case - no redirection, nothing to do
7962306a36Sopenharmony_ci */
8062306a36Sopenharmony_ci#define ACPI_MSG_REDIRECT_BEGIN
8162306a36Sopenharmony_ci#define ACPI_MSG_REDIRECT_END
8262306a36Sopenharmony_ci#endif
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci/*
8562306a36Sopenharmony_ci * Common error message prefixes
8662306a36Sopenharmony_ci */
8762306a36Sopenharmony_ci#ifndef ACPI_MSG_ERROR
8862306a36Sopenharmony_ci#define ACPI_MSG_ERROR          "ACPI Error: "
8962306a36Sopenharmony_ci#endif
9062306a36Sopenharmony_ci#ifndef ACPI_MSG_WARNING
9162306a36Sopenharmony_ci#define ACPI_MSG_WARNING        "ACPI Warning: "
9262306a36Sopenharmony_ci#endif
9362306a36Sopenharmony_ci#ifndef ACPI_MSG_INFO
9462306a36Sopenharmony_ci#define ACPI_MSG_INFO           "ACPI: "
9562306a36Sopenharmony_ci#endif
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci#ifndef ACPI_MSG_BIOS_ERROR
9862306a36Sopenharmony_ci#define ACPI_MSG_BIOS_ERROR     "Firmware Error (ACPI): "
9962306a36Sopenharmony_ci#endif
10062306a36Sopenharmony_ci#ifndef ACPI_MSG_BIOS_WARNING
10162306a36Sopenharmony_ci#define ACPI_MSG_BIOS_WARNING   "Firmware Warning (ACPI): "
10262306a36Sopenharmony_ci#endif
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci/*
10562306a36Sopenharmony_ci * Common message suffix
10662306a36Sopenharmony_ci */
10762306a36Sopenharmony_ci#define ACPI_MSG_SUFFIX \
10862306a36Sopenharmony_ci	acpi_os_printf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, module_name, line_number)
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci/* Flags to indicate implicit or explicit string-to-integer conversion */
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci#define ACPI_IMPLICIT_CONVERSION        TRUE
11362306a36Sopenharmony_ci#define ACPI_NO_IMPLICIT_CONVERSION     FALSE
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci/* Types for Resource descriptor entries */
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci#define ACPI_INVALID_RESOURCE           0
11862306a36Sopenharmony_ci#define ACPI_FIXED_LENGTH               1
11962306a36Sopenharmony_ci#define ACPI_VARIABLE_LENGTH            2
12062306a36Sopenharmony_ci#define ACPI_SMALL_VARIABLE_LENGTH      3
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_citypedef
12362306a36Sopenharmony_ciacpi_status (*acpi_walk_aml_callback) (u8 *aml,
12462306a36Sopenharmony_ci				       u32 length,
12562306a36Sopenharmony_ci				       u32 offset,
12662306a36Sopenharmony_ci				       u8 resource_index, void **context);
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_citypedef
12962306a36Sopenharmony_ciacpi_status (*acpi_pkg_callback) (u8 object_type,
13062306a36Sopenharmony_ci				  union acpi_operand_object * source_object,
13162306a36Sopenharmony_ci				  union acpi_generic_state * state,
13262306a36Sopenharmony_ci				  void *context);
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_cistruct acpi_pkg_info {
13562306a36Sopenharmony_ci	u8 *free_space;
13662306a36Sopenharmony_ci	acpi_size length;
13762306a36Sopenharmony_ci	u32 object_space;
13862306a36Sopenharmony_ci	u32 num_packages;
13962306a36Sopenharmony_ci};
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci/* Object reference counts */
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci#define REF_INCREMENT       (u16) 0
14462306a36Sopenharmony_ci#define REF_DECREMENT       (u16) 1
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci/* acpi_ut_dump_buffer */
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci#define DB_BYTE_DISPLAY      0x01
14962306a36Sopenharmony_ci#define DB_WORD_DISPLAY      0x02
15062306a36Sopenharmony_ci#define DB_DWORD_DISPLAY     0x04
15162306a36Sopenharmony_ci#define DB_QWORD_DISPLAY     0x08
15262306a36Sopenharmony_ci#define DB_DISPLAY_DATA_ONLY 0x10
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci/*
15562306a36Sopenharmony_ci * utascii - ASCII utilities
15662306a36Sopenharmony_ci */
15762306a36Sopenharmony_ciu8 acpi_ut_valid_nameseg(char *signature);
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ciu8 acpi_ut_valid_name_char(char character, u32 position);
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_civoid acpi_ut_check_and_repair_ascii(u8 *name, char *repaired_name, u32 count);
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci/*
16462306a36Sopenharmony_ci * utcksum - Checksum utilities
16562306a36Sopenharmony_ci */
16662306a36Sopenharmony_ciu8 acpi_ut_generate_checksum(void *table, u32 length, u8 original_checksum);
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ciu8 acpi_ut_checksum(u8 *buffer, u32 length);
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ciacpi_status
17162306a36Sopenharmony_ciacpi_ut_verify_cdat_checksum(struct acpi_table_cdat *cdat_table, u32 length);
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ciacpi_status
17462306a36Sopenharmony_ciacpi_ut_verify_checksum(struct acpi_table_header *table, u32 length);
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci/*
17762306a36Sopenharmony_ci * utnonansi - Non-ANSI C library functions
17862306a36Sopenharmony_ci */
17962306a36Sopenharmony_civoid acpi_ut_strupr(char *src_string);
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_civoid acpi_ut_strlwr(char *src_string);
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ciint acpi_ut_stricmp(char *string1, char *string2);
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci/*
18662306a36Sopenharmony_ci * utstrsuppt - string-to-integer conversion support functions
18762306a36Sopenharmony_ci */
18862306a36Sopenharmony_ciacpi_status acpi_ut_convert_octal_string(char *string, u64 *return_value);
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ciacpi_status acpi_ut_convert_decimal_string(char *string, u64 *return_value_ptr);
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciacpi_status acpi_ut_convert_hex_string(char *string, u64 *return_value_ptr);
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_cichar acpi_ut_remove_whitespace(char **string);
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_cichar acpi_ut_remove_leading_zeros(char **string);
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciu8 acpi_ut_detect_hex_prefix(char **string);
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_civoid acpi_ut_remove_hex_prefix(char **string);
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciu8 acpi_ut_detect_octal_prefix(char **string);
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci/*
20562306a36Sopenharmony_ci * utstrtoul64 - string-to-integer conversion functions
20662306a36Sopenharmony_ci */
20762306a36Sopenharmony_ciacpi_status acpi_ut_strtoul64(char *string, u64 *ret_integer);
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ciu64 acpi_ut_explicit_strtoul64(char *string);
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ciu64 acpi_ut_implicit_strtoul64(char *string);
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci/*
21462306a36Sopenharmony_ci * utglobal - Global data structures and procedures
21562306a36Sopenharmony_ci */
21662306a36Sopenharmony_ciacpi_status acpi_ut_init_globals(void);
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciconst char *acpi_ut_get_mutex_name(u32 mutex_id);
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ciconst char *acpi_ut_get_notify_name(u32 notify_value, acpi_object_type type);
22362306a36Sopenharmony_ci#endif
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ciconst char *acpi_ut_get_type_name(acpi_object_type type);
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ciconst char *acpi_ut_get_node_name(void *object);
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciconst char *acpi_ut_get_descriptor_name(void *object);
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ciconst char *acpi_ut_get_reference_name(union acpi_operand_object *object);
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ciconst char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc);
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ciconst char *acpi_ut_get_region_name(u8 space_id);
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ciconst char *acpi_ut_get_event_name(u32 event_id);
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ciconst char *acpi_ut_get_argument_type_name(u32 arg_type);
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_cichar acpi_ut_hex_to_ascii_char(u64 integer, u32 position);
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciacpi_status acpi_ut_ascii_to_hex_byte(char *two_ascii_chars, u8 *return_byte);
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ciu8 acpi_ut_ascii_char_to_hex(int hex_char);
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ciu8 acpi_ut_valid_object_type(acpi_object_type type);
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci/*
25062306a36Sopenharmony_ci * utinit - miscellaneous initialization and shutdown
25162306a36Sopenharmony_ci */
25262306a36Sopenharmony_ciacpi_status acpi_ut_hardware_initialize(void);
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_civoid acpi_ut_subsystem_shutdown(void);
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci/*
25762306a36Sopenharmony_ci * utcopy - Object construction and conversion interfaces
25862306a36Sopenharmony_ci */
25962306a36Sopenharmony_ciacpi_status
26062306a36Sopenharmony_ciacpi_ut_build_simple_object(union acpi_operand_object *obj,
26162306a36Sopenharmony_ci			    union acpi_object *user_obj,
26262306a36Sopenharmony_ci			    u8 *data_space, u32 *buffer_space_used);
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ciacpi_status
26562306a36Sopenharmony_ciacpi_ut_build_package_object(union acpi_operand_object *obj,
26662306a36Sopenharmony_ci			     u8 *buffer, u32 *space_used);
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ciacpi_status
26962306a36Sopenharmony_ciacpi_ut_copy_iobject_to_eobject(union acpi_operand_object *obj,
27062306a36Sopenharmony_ci				struct acpi_buffer *ret_buffer);
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ciacpi_status
27362306a36Sopenharmony_ciacpi_ut_copy_eobject_to_iobject(union acpi_object *obj,
27462306a36Sopenharmony_ci				union acpi_operand_object **internal_obj);
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ciacpi_status
27762306a36Sopenharmony_ciacpi_ut_copy_isimple_to_isimple(union acpi_operand_object *source_obj,
27862306a36Sopenharmony_ci				union acpi_operand_object *dest_obj);
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ciacpi_status
28162306a36Sopenharmony_ciacpi_ut_copy_iobject_to_iobject(union acpi_operand_object *source_desc,
28262306a36Sopenharmony_ci				union acpi_operand_object **dest_desc,
28362306a36Sopenharmony_ci				struct acpi_walk_state *walk_state);
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ci/*
28662306a36Sopenharmony_ci * utcreate - Object creation
28762306a36Sopenharmony_ci */
28862306a36Sopenharmony_ciacpi_status
28962306a36Sopenharmony_ciacpi_ut_update_object_reference(union acpi_operand_object *object, u16 action);
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci/*
29262306a36Sopenharmony_ci * utdebug - Debug interfaces
29362306a36Sopenharmony_ci */
29462306a36Sopenharmony_civoid acpi_ut_init_stack_ptr_trace(void);
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_civoid acpi_ut_track_stack_ptr(void);
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_civoid
29962306a36Sopenharmony_ciacpi_ut_trace(u32 line_number,
30062306a36Sopenharmony_ci	      const char *function_name,
30162306a36Sopenharmony_ci	      const char *module_name, u32 component_id);
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_civoid
30462306a36Sopenharmony_ciacpi_ut_trace_ptr(u32 line_number,
30562306a36Sopenharmony_ci		  const char *function_name,
30662306a36Sopenharmony_ci		  const char *module_name,
30762306a36Sopenharmony_ci		  u32 component_id, const void *pointer);
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_civoid
31062306a36Sopenharmony_ciacpi_ut_trace_u32(u32 line_number,
31162306a36Sopenharmony_ci		  const char *function_name,
31262306a36Sopenharmony_ci		  const char *module_name, u32 component_id, u32 integer);
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_civoid
31562306a36Sopenharmony_ciacpi_ut_trace_str(u32 line_number,
31662306a36Sopenharmony_ci		  const char *function_name,
31762306a36Sopenharmony_ci		  const char *module_name,
31862306a36Sopenharmony_ci		  u32 component_id, const char *string);
31962306a36Sopenharmony_ci
32062306a36Sopenharmony_civoid
32162306a36Sopenharmony_ciacpi_ut_exit(u32 line_number,
32262306a36Sopenharmony_ci	     const char *function_name,
32362306a36Sopenharmony_ci	     const char *module_name, u32 component_id);
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_civoid
32662306a36Sopenharmony_ciacpi_ut_status_exit(u32 line_number,
32762306a36Sopenharmony_ci		    const char *function_name,
32862306a36Sopenharmony_ci		    const char *module_name,
32962306a36Sopenharmony_ci		    u32 component_id, acpi_status status);
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_civoid
33262306a36Sopenharmony_ciacpi_ut_value_exit(u32 line_number,
33362306a36Sopenharmony_ci		   const char *function_name,
33462306a36Sopenharmony_ci		   const char *module_name, u32 component_id, u64 value);
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_civoid
33762306a36Sopenharmony_ciacpi_ut_ptr_exit(u32 line_number,
33862306a36Sopenharmony_ci		 const char *function_name,
33962306a36Sopenharmony_ci		 const char *module_name, u32 component_id, u8 *ptr);
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_civoid
34262306a36Sopenharmony_ciacpi_ut_str_exit(u32 line_number,
34362306a36Sopenharmony_ci		 const char *function_name,
34462306a36Sopenharmony_ci		 const char *module_name, u32 component_id, const char *string);
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_civoid
34762306a36Sopenharmony_ciacpi_ut_debug_dump_buffer(u8 *buffer, u32 count, u32 display, u32 component_id);
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_civoid acpi_ut_dump_buffer(u8 *buffer, u32 count, u32 display, u32 offset);
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci#ifdef ACPI_APPLICATION
35262306a36Sopenharmony_civoid
35362306a36Sopenharmony_ciacpi_ut_dump_buffer_to_file(ACPI_FILE file,
35462306a36Sopenharmony_ci			    u8 *buffer,
35562306a36Sopenharmony_ci			    u32 count, u32 display, u32 base_offset);
35662306a36Sopenharmony_ci#endif
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_civoid acpi_ut_report_error(char *module_name, u32 line_number);
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_civoid acpi_ut_report_info(char *module_name, u32 line_number);
36162306a36Sopenharmony_ci
36262306a36Sopenharmony_civoid acpi_ut_report_warning(char *module_name, u32 line_number);
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci/*
36562306a36Sopenharmony_ci * utdelete - Object deletion and reference counts
36662306a36Sopenharmony_ci */
36762306a36Sopenharmony_civoid acpi_ut_add_reference(union acpi_operand_object *object);
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_civoid acpi_ut_remove_reference(union acpi_operand_object *object);
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_civoid acpi_ut_delete_internal_package_object(union acpi_operand_object *object);
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_civoid acpi_ut_delete_internal_simple_object(union acpi_operand_object *object);
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_civoid acpi_ut_delete_internal_object_list(union acpi_operand_object **obj_list);
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ci/*
37862306a36Sopenharmony_ci * uteval - object evaluation
37962306a36Sopenharmony_ci */
38062306a36Sopenharmony_ciacpi_status
38162306a36Sopenharmony_ciacpi_ut_evaluate_object(struct acpi_namespace_node *prefix_node,
38262306a36Sopenharmony_ci			const char *path,
38362306a36Sopenharmony_ci			u32 expected_return_btypes,
38462306a36Sopenharmony_ci			union acpi_operand_object **return_desc);
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ciacpi_status
38762306a36Sopenharmony_ciacpi_ut_evaluate_numeric_object(const char *object_name,
38862306a36Sopenharmony_ci				struct acpi_namespace_node *device_node,
38962306a36Sopenharmony_ci				u64 *value);
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ciacpi_status
39262306a36Sopenharmony_ciacpi_ut_execute_STA(struct acpi_namespace_node *device_node, u32 *status_flags);
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ciacpi_status
39562306a36Sopenharmony_ciacpi_ut_execute_power_methods(struct acpi_namespace_node *device_node,
39662306a36Sopenharmony_ci			      const char **method_names,
39762306a36Sopenharmony_ci			      u8 method_count, u8 *out_values);
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ci/*
40062306a36Sopenharmony_ci * utids - device ID support
40162306a36Sopenharmony_ci */
40262306a36Sopenharmony_ciacpi_status
40362306a36Sopenharmony_ciacpi_ut_execute_HID(struct acpi_namespace_node *device_node,
40462306a36Sopenharmony_ci		    struct acpi_pnp_device_id ** return_id);
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ciacpi_status
40762306a36Sopenharmony_ciacpi_ut_execute_UID(struct acpi_namespace_node *device_node,
40862306a36Sopenharmony_ci		    struct acpi_pnp_device_id ** return_id);
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ciacpi_status
41162306a36Sopenharmony_ciacpi_ut_execute_CID(struct acpi_namespace_node *device_node,
41262306a36Sopenharmony_ci		    struct acpi_pnp_device_id_list ** return_cid_list);
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ciacpi_status
41562306a36Sopenharmony_ciacpi_ut_execute_CLS(struct acpi_namespace_node *device_node,
41662306a36Sopenharmony_ci		    struct acpi_pnp_device_id **return_id);
41762306a36Sopenharmony_ci
41862306a36Sopenharmony_ci/*
41962306a36Sopenharmony_ci * utlock - reader/writer locks
42062306a36Sopenharmony_ci */
42162306a36Sopenharmony_ciacpi_status acpi_ut_create_rw_lock(struct acpi_rw_lock *lock);
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_civoid acpi_ut_delete_rw_lock(struct acpi_rw_lock *lock);
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ciacpi_status acpi_ut_acquire_read_lock(struct acpi_rw_lock *lock);
42662306a36Sopenharmony_ci
42762306a36Sopenharmony_ciacpi_status acpi_ut_release_read_lock(struct acpi_rw_lock *lock);
42862306a36Sopenharmony_ci
42962306a36Sopenharmony_ciacpi_status acpi_ut_acquire_write_lock(struct acpi_rw_lock *lock);
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_civoid acpi_ut_release_write_lock(struct acpi_rw_lock *lock);
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_ci/*
43462306a36Sopenharmony_ci * utobject - internal object create/delete/cache routines
43562306a36Sopenharmony_ci */
43662306a36Sopenharmony_ciunion acpi_operand_object *acpi_ut_create_internal_object_dbg(const char
43762306a36Sopenharmony_ci							      *module_name,
43862306a36Sopenharmony_ci							      u32 line_number,
43962306a36Sopenharmony_ci							      u32 component_id,
44062306a36Sopenharmony_ci							      acpi_object_type
44162306a36Sopenharmony_ci							      type);
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_civoid *acpi_ut_allocate_object_desc_dbg(const char *module_name,
44462306a36Sopenharmony_ci				       u32 line_number, u32 component_id);
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_ci#define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_acpi_module_name,__LINE__,_COMPONENT,t)
44762306a36Sopenharmony_ci#define acpi_ut_allocate_object_desc()  acpi_ut_allocate_object_desc_dbg (_acpi_module_name,__LINE__,_COMPONENT)
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_civoid acpi_ut_delete_object_desc(union acpi_operand_object *object);
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_ciu8 acpi_ut_valid_internal_object(void *object);
45262306a36Sopenharmony_ci
45362306a36Sopenharmony_ciunion acpi_operand_object *acpi_ut_create_package_object(u32 count);
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ciunion acpi_operand_object *acpi_ut_create_integer_object(u64 value);
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ciunion acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size);
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ciunion acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size);
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ciacpi_status
46262306a36Sopenharmony_ciacpi_ut_get_object_size(union acpi_operand_object *obj, acpi_size *obj_length);
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ci/*
46562306a36Sopenharmony_ci * utosi - Support for the _OSI predefined control method
46662306a36Sopenharmony_ci */
46762306a36Sopenharmony_ciacpi_status acpi_ut_initialize_interfaces(void);
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_ciacpi_status acpi_ut_interface_terminate(void);
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ciacpi_status acpi_ut_install_interface(acpi_string interface_name);
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ciacpi_status acpi_ut_remove_interface(acpi_string interface_name);
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ciacpi_status acpi_ut_update_interfaces(u8 action);
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_cistruct acpi_interface_info *acpi_ut_get_interface(acpi_string interface_name);
47862306a36Sopenharmony_ci
47962306a36Sopenharmony_ciacpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state);
48062306a36Sopenharmony_ci
48162306a36Sopenharmony_ci/*
48262306a36Sopenharmony_ci * utpredef - support for predefined names
48362306a36Sopenharmony_ci */
48462306a36Sopenharmony_ciconst union acpi_predefined_info *acpi_ut_get_next_predefined_method(const union
48562306a36Sopenharmony_ci								     acpi_predefined_info
48662306a36Sopenharmony_ci								     *this_name);
48762306a36Sopenharmony_ci
48862306a36Sopenharmony_ciconst union acpi_predefined_info *acpi_ut_match_predefined_method(char *name);
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_civoid acpi_ut_get_expected_return_types(char *buffer, u32 expected_btypes);
49162306a36Sopenharmony_ci
49262306a36Sopenharmony_ci#if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
49362306a36Sopenharmony_ciconst union acpi_predefined_info *acpi_ut_match_resource_name(char *name);
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_civoid
49662306a36Sopenharmony_ciacpi_ut_display_predefined_method(char *buffer,
49762306a36Sopenharmony_ci				  const union acpi_predefined_info *this_name,
49862306a36Sopenharmony_ci				  u8 multi_line);
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ciu32 acpi_ut_get_resource_bit_width(char *buffer, u16 types);
50162306a36Sopenharmony_ci#endif
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_ci/*
50462306a36Sopenharmony_ci * utstate - Generic state creation/cache routines
50562306a36Sopenharmony_ci */
50662306a36Sopenharmony_civoid
50762306a36Sopenharmony_ciacpi_ut_push_generic_state(union acpi_generic_state **list_head,
50862306a36Sopenharmony_ci			   union acpi_generic_state *state);
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ciunion acpi_generic_state *acpi_ut_pop_generic_state(union acpi_generic_state
51162306a36Sopenharmony_ci						    **list_head);
51262306a36Sopenharmony_ci
51362306a36Sopenharmony_ciunion acpi_generic_state *acpi_ut_create_generic_state(void);
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_cistruct acpi_thread_state *acpi_ut_create_thread_state(void);
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ciunion acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object
51862306a36Sopenharmony_ci						      *object, u16 action);
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ciunion acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object,
52162306a36Sopenharmony_ci						   void *external_object,
52262306a36Sopenharmony_ci						   u32 index);
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_ciacpi_status
52562306a36Sopenharmony_ciacpi_ut_create_update_state_and_push(union acpi_operand_object *object,
52662306a36Sopenharmony_ci				     u16 action,
52762306a36Sopenharmony_ci				     union acpi_generic_state **state_list);
52862306a36Sopenharmony_ci
52962306a36Sopenharmony_ciunion acpi_generic_state *acpi_ut_create_control_state(void);
53062306a36Sopenharmony_ci
53162306a36Sopenharmony_civoid acpi_ut_delete_generic_state(union acpi_generic_state *state);
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci/*
53462306a36Sopenharmony_ci * utmath
53562306a36Sopenharmony_ci */
53662306a36Sopenharmony_ciacpi_status
53762306a36Sopenharmony_ciacpi_ut_divide(u64 in_dividend,
53862306a36Sopenharmony_ci	       u64 in_divisor, u64 *out_quotient, u64 *out_remainder);
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_ciacpi_status
54162306a36Sopenharmony_ciacpi_ut_short_divide(u64 in_dividend,
54262306a36Sopenharmony_ci		     u32 divisor, u64 *out_quotient, u32 *out_remainder);
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ciacpi_status
54562306a36Sopenharmony_ciacpi_ut_short_multiply(u64 in_multiplicand, u32 multiplier, u64 *outproduct);
54662306a36Sopenharmony_ci
54762306a36Sopenharmony_ciacpi_status acpi_ut_short_shift_left(u64 operand, u32 count, u64 *out_result);
54862306a36Sopenharmony_ci
54962306a36Sopenharmony_ciacpi_status acpi_ut_short_shift_right(u64 operand, u32 count, u64 *out_result);
55062306a36Sopenharmony_ci
55162306a36Sopenharmony_ci/*
55262306a36Sopenharmony_ci * utmisc
55362306a36Sopenharmony_ci */
55462306a36Sopenharmony_ciconst struct acpi_exception_info *acpi_ut_validate_exception(acpi_status
55562306a36Sopenharmony_ci							     status);
55662306a36Sopenharmony_ci
55762306a36Sopenharmony_ciu8 acpi_ut_is_pci_root_bridge(char *id);
55862306a36Sopenharmony_ci
55962306a36Sopenharmony_ci#if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP)
56062306a36Sopenharmony_ciu8 acpi_ut_is_aml_table(struct acpi_table_header *table);
56162306a36Sopenharmony_ci#endif
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_ciacpi_status
56462306a36Sopenharmony_ciacpi_ut_walk_package_tree(union acpi_operand_object *source_object,
56562306a36Sopenharmony_ci			  void *target_object,
56662306a36Sopenharmony_ci			  acpi_pkg_callback walk_callback, void *context);
56762306a36Sopenharmony_ci
56862306a36Sopenharmony_ci/* Values for Base above (16=Hex, 10=Decimal) */
56962306a36Sopenharmony_ci
57062306a36Sopenharmony_ci#define ACPI_ANY_BASE        0
57162306a36Sopenharmony_ci
57262306a36Sopenharmony_ciu32 acpi_ut_dword_byte_swap(u32 value);
57362306a36Sopenharmony_ci
57462306a36Sopenharmony_civoid acpi_ut_set_integer_width(u8 revision);
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ci#ifdef ACPI_DEBUG_OUTPUT
57762306a36Sopenharmony_civoid
57862306a36Sopenharmony_ciacpi_ut_display_init_pathname(u8 type,
57962306a36Sopenharmony_ci			      struct acpi_namespace_node *obj_handle,
58062306a36Sopenharmony_ci			      const char *path);
58162306a36Sopenharmony_ci#endif
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_ci/*
58462306a36Sopenharmony_ci * utownerid - Support for Table/Method Owner IDs
58562306a36Sopenharmony_ci */
58662306a36Sopenharmony_ciacpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id);
58762306a36Sopenharmony_ci
58862306a36Sopenharmony_civoid acpi_ut_release_owner_id(acpi_owner_id *owner_id);
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_ci/*
59162306a36Sopenharmony_ci * utresrc
59262306a36Sopenharmony_ci */
59362306a36Sopenharmony_ciacpi_status
59462306a36Sopenharmony_ciacpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,
59562306a36Sopenharmony_ci			   u8 *aml,
59662306a36Sopenharmony_ci			   acpi_size aml_length,
59762306a36Sopenharmony_ci			   acpi_walk_aml_callback user_function,
59862306a36Sopenharmony_ci			   void **context);
59962306a36Sopenharmony_ci
60062306a36Sopenharmony_ciacpi_status
60162306a36Sopenharmony_ciacpi_ut_validate_resource(struct acpi_walk_state *walk_state,
60262306a36Sopenharmony_ci			  void *aml, u8 *return_index);
60362306a36Sopenharmony_ci
60462306a36Sopenharmony_ciu32 acpi_ut_get_descriptor_length(void *aml);
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_ciu16 acpi_ut_get_resource_length(void *aml);
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ciu8 acpi_ut_get_resource_header_length(void *aml);
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_ciu8 acpi_ut_get_resource_type(void *aml);
61162306a36Sopenharmony_ci
61262306a36Sopenharmony_ciacpi_status
61362306a36Sopenharmony_ciacpi_ut_get_resource_end_tag(union acpi_operand_object *obj_desc, u8 **end_tag);
61462306a36Sopenharmony_ci
61562306a36Sopenharmony_ci/*
61662306a36Sopenharmony_ci * utstring - String and character utilities
61762306a36Sopenharmony_ci */
61862306a36Sopenharmony_civoid acpi_ut_print_string(char *string, u16 max_length);
61962306a36Sopenharmony_ci
62062306a36Sopenharmony_ci#if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
62162306a36Sopenharmony_civoid ut_convert_backslashes(char *pathname);
62262306a36Sopenharmony_ci#endif
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_civoid acpi_ut_repair_name(char *name);
62562306a36Sopenharmony_ci
62662306a36Sopenharmony_ci#if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) || defined (ACPI_DEBUG_OUTPUT)
62762306a36Sopenharmony_ciu8 acpi_ut_safe_strcpy(char *dest, acpi_size dest_size, char *source);
62862306a36Sopenharmony_ci
62962306a36Sopenharmony_civoid acpi_ut_safe_strncpy(char *dest, char *source, acpi_size dest_size);
63062306a36Sopenharmony_ci
63162306a36Sopenharmony_ciu8 acpi_ut_safe_strcat(char *dest, acpi_size dest_size, char *source);
63262306a36Sopenharmony_ci
63362306a36Sopenharmony_ciu8
63462306a36Sopenharmony_ciacpi_ut_safe_strncat(char *dest,
63562306a36Sopenharmony_ci		     acpi_size dest_size,
63662306a36Sopenharmony_ci		     char *source, acpi_size max_transfer_length);
63762306a36Sopenharmony_ci#endif
63862306a36Sopenharmony_ci
63962306a36Sopenharmony_ci/*
64062306a36Sopenharmony_ci * utmutex - mutex support
64162306a36Sopenharmony_ci */
64262306a36Sopenharmony_ciacpi_status acpi_ut_mutex_initialize(void);
64362306a36Sopenharmony_ci
64462306a36Sopenharmony_civoid acpi_ut_mutex_terminate(void);
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ciacpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id);
64762306a36Sopenharmony_ci
64862306a36Sopenharmony_ciacpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id);
64962306a36Sopenharmony_ci
65062306a36Sopenharmony_ci/*
65162306a36Sopenharmony_ci * utalloc - memory allocation and object caching
65262306a36Sopenharmony_ci */
65362306a36Sopenharmony_ciacpi_status acpi_ut_create_caches(void);
65462306a36Sopenharmony_ci
65562306a36Sopenharmony_ciacpi_status acpi_ut_delete_caches(void);
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ciacpi_status acpi_ut_validate_buffer(struct acpi_buffer *buffer);
65862306a36Sopenharmony_ci
65962306a36Sopenharmony_ciacpi_status
66062306a36Sopenharmony_ciacpi_ut_initialize_buffer(struct acpi_buffer *buffer,
66162306a36Sopenharmony_ci			  acpi_size required_length);
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_ci#ifdef ACPI_DBG_TRACK_ALLOCATIONS
66462306a36Sopenharmony_civoid *acpi_ut_allocate_and_track(acpi_size size,
66562306a36Sopenharmony_ci				 u32 component, const char *module, u32 line);
66662306a36Sopenharmony_ci
66762306a36Sopenharmony_civoid *acpi_ut_allocate_zeroed_and_track(acpi_size size,
66862306a36Sopenharmony_ci					u32 component,
66962306a36Sopenharmony_ci					const char *module, u32 line);
67062306a36Sopenharmony_ci
67162306a36Sopenharmony_civoid
67262306a36Sopenharmony_ciacpi_ut_free_and_track(void *address,
67362306a36Sopenharmony_ci		       u32 component, const char *module, u32 line);
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_civoid acpi_ut_dump_allocation_info(void);
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_civoid acpi_ut_dump_allocations(u32 component, const char *module);
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ciacpi_status
68062306a36Sopenharmony_ciacpi_ut_create_list(const char *list_name,
68162306a36Sopenharmony_ci		    u16 object_size, struct acpi_memory_list **return_cache);
68262306a36Sopenharmony_ci
68362306a36Sopenharmony_ci#endif				/* ACPI_DBG_TRACK_ALLOCATIONS */
68462306a36Sopenharmony_ci
68562306a36Sopenharmony_ci/*
68662306a36Sopenharmony_ci * utaddress - address range check
68762306a36Sopenharmony_ci */
68862306a36Sopenharmony_ciacpi_status
68962306a36Sopenharmony_ciacpi_ut_add_address_range(acpi_adr_space_type space_id,
69062306a36Sopenharmony_ci			  acpi_physical_address address,
69162306a36Sopenharmony_ci			  u32 length, struct acpi_namespace_node *region_node);
69262306a36Sopenharmony_ci
69362306a36Sopenharmony_civoid
69462306a36Sopenharmony_ciacpi_ut_remove_address_range(acpi_adr_space_type space_id,
69562306a36Sopenharmony_ci			     struct acpi_namespace_node *region_node);
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_ciu32
69862306a36Sopenharmony_ciacpi_ut_check_address_range(acpi_adr_space_type space_id,
69962306a36Sopenharmony_ci			    acpi_physical_address address, u32 length, u8 warn);
70062306a36Sopenharmony_ci
70162306a36Sopenharmony_civoid acpi_ut_delete_address_lists(void);
70262306a36Sopenharmony_ci
70362306a36Sopenharmony_ci/*
70462306a36Sopenharmony_ci * utxferror - various error/warning output functions
70562306a36Sopenharmony_ci */
70662306a36Sopenharmony_ciACPI_PRINTF_LIKE(5)
70762306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
70862306a36Sopenharmony_ciacpi_ut_predefined_warning(const char *module_name,
70962306a36Sopenharmony_ci			   u32 line_number,
71062306a36Sopenharmony_ci			   char *pathname,
71162306a36Sopenharmony_ci			   u16 node_flags, const char *format, ...);
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ciACPI_PRINTF_LIKE(5)
71462306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
71562306a36Sopenharmony_ciacpi_ut_predefined_info(const char *module_name,
71662306a36Sopenharmony_ci			u32 line_number,
71762306a36Sopenharmony_ci			char *pathname,
71862306a36Sopenharmony_ci			u16 node_flags, const char *format, ...);
71962306a36Sopenharmony_ci
72062306a36Sopenharmony_ciACPI_PRINTF_LIKE(5)
72162306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
72262306a36Sopenharmony_ciacpi_ut_predefined_bios_error(const char *module_name,
72362306a36Sopenharmony_ci			      u32 line_number,
72462306a36Sopenharmony_ci			      char *pathname,
72562306a36Sopenharmony_ci			      u16 node_flags, const char *format, ...);
72662306a36Sopenharmony_ci
72762306a36Sopenharmony_civoid
72862306a36Sopenharmony_ciacpi_ut_prefixed_namespace_error(const char *module_name,
72962306a36Sopenharmony_ci				 u32 line_number,
73062306a36Sopenharmony_ci				 union acpi_generic_state *prefix_scope,
73162306a36Sopenharmony_ci				 const char *internal_name,
73262306a36Sopenharmony_ci				 acpi_status lookup_status);
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_civoid
73562306a36Sopenharmony_ciacpi_ut_method_error(const char *module_name,
73662306a36Sopenharmony_ci		     u32 line_number,
73762306a36Sopenharmony_ci		     const char *message,
73862306a36Sopenharmony_ci		     struct acpi_namespace_node *node,
73962306a36Sopenharmony_ci		     const char *path, acpi_status lookup_status);
74062306a36Sopenharmony_ci
74162306a36Sopenharmony_ci/*
74262306a36Sopenharmony_ci * Utility functions for ACPI names and IDs
74362306a36Sopenharmony_ci */
74462306a36Sopenharmony_ciconst struct ah_predefined_name *acpi_ah_match_predefined_name(char *nameseg);
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_ciconst struct ah_device_id *acpi_ah_match_hardware_id(char *hid);
74762306a36Sopenharmony_ci
74862306a36Sopenharmony_ciconst char *acpi_ah_match_uuid(u8 *data);
74962306a36Sopenharmony_ci
75062306a36Sopenharmony_ci/*
75162306a36Sopenharmony_ci * utuuid -- UUID support functions
75262306a36Sopenharmony_ci */
75362306a36Sopenharmony_ci#if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
75462306a36Sopenharmony_civoid acpi_ut_convert_string_to_uuid(char *in_string, u8 *uuid_buffer);
75562306a36Sopenharmony_ci
75662306a36Sopenharmony_ciacpi_status acpi_ut_convert_uuid_to_string(char *uuid_buffer, char *out_string);
75762306a36Sopenharmony_ci#endif
75862306a36Sopenharmony_ci
75962306a36Sopenharmony_ci#endif				/* _ACUTILS_H */
760