xref: /openbmc/linux/drivers/acpi/acpica/acapps.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
195857638SErik Schmauss /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
2506f57ddSLv Zheng /******************************************************************************
3506f57ddSLv Zheng  *
4506f57ddSLv Zheng  * Module Name: acapps - common include for ACPI applications/tools
5506f57ddSLv Zheng  *
6*612c2932SBob Moore  * Copyright (C) 2000 - 2023, Intel Corp.
7506f57ddSLv Zheng  *
895857638SErik Schmauss  *****************************************************************************/
9506f57ddSLv Zheng 
10506f57ddSLv Zheng #ifndef _ACAPPS
11506f57ddSLv Zheng #define _ACAPPS
12506f57ddSLv Zheng 
13e323c02dSLv Zheng #ifdef ACPI_USE_STANDARD_HEADERS
14e323c02dSLv Zheng #include <sys/stat.h>
15e323c02dSLv Zheng #endif				/* ACPI_USE_STANDARD_HEADERS */
16e323c02dSLv Zheng 
17506f57ddSLv Zheng /* Common info for tool signons */
18506f57ddSLv Zheng 
19506f57ddSLv Zheng #define ACPICA_NAME                 "Intel ACPI Component Architecture"
20487ea80aSBob Moore #define ACPICA_COPYRIGHT            "Copyright (c) 2000 - 2022 Intel Corporation"
21506f57ddSLv Zheng 
22506f57ddSLv Zheng #if ACPI_MACHINE_WIDTH == 64
23892411ddSBob Moore #define ACPI_WIDTH          " (64-bit version)"
24506f57ddSLv Zheng 
25506f57ddSLv Zheng #elif ACPI_MACHINE_WIDTH == 32
26892411ddSBob Moore #define ACPI_WIDTH          " (32-bit version)"
27506f57ddSLv Zheng 
28506f57ddSLv Zheng #else
29506f57ddSLv Zheng #error unknown ACPI_MACHINE_WIDTH
30892411ddSBob Moore #define ACPI_WIDTH          " (unknown bit width, not 32 or 64)"
31506f57ddSLv Zheng 
32506f57ddSLv Zheng #endif
33506f57ddSLv Zheng 
34506f57ddSLv Zheng /* Macros for signons and file headers */
35506f57ddSLv Zheng 
36506f57ddSLv Zheng #define ACPI_COMMON_SIGNON(utility_name) \
37892411ddSBob Moore 	"\n%s\n%s version %8.8X\n%s\n\n", \
38506f57ddSLv Zheng 	ACPICA_NAME, \
39892411ddSBob Moore 	utility_name, ((u32) ACPI_CA_VERSION), \
40506f57ddSLv Zheng 	ACPICA_COPYRIGHT
41506f57ddSLv Zheng 
42506f57ddSLv Zheng #define ACPI_COMMON_HEADER(utility_name, prefix) \
431797d379SRasmus Villemoes 	"%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \
44506f57ddSLv Zheng 	prefix, ACPICA_NAME, \
451797d379SRasmus Villemoes 	prefix, utility_name, ((u32) ACPI_CA_VERSION), ACPI_WIDTH, \
46506f57ddSLv Zheng 	prefix, ACPICA_COPYRIGHT, \
47506f57ddSLv Zheng 	prefix
48506f57ddSLv Zheng 
4990adf776SBob Moore #define ACPI_COMMON_BUILD_TIME \
5090adf776SBob Moore 	"Build date/time: %s %s\n", __DATE__, __TIME__
5190adf776SBob Moore 
52506f57ddSLv Zheng /* Macros for usage messages */
53506f57ddSLv Zheng 
54506f57ddSLv Zheng #define ACPI_USAGE_HEADER(usage) \
55911a9b84SLv Zheng 	printf ("Usage: %s\nOptions:\n", usage);
56d9cf147dSLv Zheng 
57d9cf147dSLv Zheng #define ACPI_USAGE_TEXT(description) \
58911a9b84SLv Zheng 	printf (description);
59506f57ddSLv Zheng 
60506f57ddSLv Zheng #define ACPI_OPTION(name, description) \
61911a9b84SLv Zheng 	printf ("  %-20s%s\n", name, description);
62506f57ddSLv Zheng 
633727ec2aSBob Moore /* Check for unexpected exceptions */
643727ec2aSBob Moore 
653727ec2aSBob Moore #define ACPI_CHECK_STATUS(name, status, expected) \
663727ec2aSBob Moore 	if (status != expected) \
673727ec2aSBob Moore 	{ \
683727ec2aSBob Moore 		acpi_os_printf ("Unexpected %s from %s (%s-%d)\n", \
693727ec2aSBob Moore 			acpi_format_exception (status), #name, _acpi_module_name, __LINE__); \
703727ec2aSBob Moore 	}
713727ec2aSBob Moore 
723727ec2aSBob Moore /* Check for unexpected non-AE_OK errors */
733727ec2aSBob Moore 
743727ec2aSBob Moore #define ACPI_CHECK_OK(name, status)   ACPI_CHECK_STATUS (name, status, AE_OK);
753727ec2aSBob Moore 
76506f57ddSLv Zheng #define FILE_SUFFIX_DISASSEMBLY     "dsl"
77842e7133SBob Moore #define FILE_SUFFIX_BINARY_TABLE    ".dat"	/* Needs the dot */
78506f57ddSLv Zheng 
792ba7379bSBob Moore /* acfileio */
802ba7379bSBob Moore 
812ba7379bSBob Moore acpi_status
82395ec731SBob Moore ac_get_all_tables_from_file(char *filename,
832ba7379bSBob Moore 			    u8 get_only_aml_tables,
842ba7379bSBob Moore 			    struct acpi_new_table_desc **return_list_head);
852ba7379bSBob Moore 
86ff7993a7SErik Schmauss void ac_delete_table_list(struct acpi_new_table_desc *list_head);
87ff7993a7SErik Schmauss 
88395ec731SBob Moore u8 ac_is_file_binary(FILE * file);
89395ec731SBob Moore 
90395ec731SBob Moore acpi_status ac_validate_table_header(FILE * file, long table_offset);
91395ec731SBob Moore 
922ba7379bSBob Moore /* Values for get_only_aml_tables */
932ba7379bSBob Moore 
942ba7379bSBob Moore #define ACPI_GET_ONLY_AML_TABLES    TRUE
952ba7379bSBob Moore #define ACPI_GET_ALL_TABLES         FALSE
962ba7379bSBob Moore 
97506f57ddSLv Zheng /*
98506f57ddSLv Zheng  * getopt
99506f57ddSLv Zheng  */
100506f57ddSLv Zheng int acpi_getopt(int argc, char **argv, char *opts);
101506f57ddSLv Zheng 
102506f57ddSLv Zheng int acpi_getopt_argument(int argc, char **argv);
103506f57ddSLv Zheng 
104506f57ddSLv Zheng extern int acpi_gbl_optind;
105506f57ddSLv Zheng extern int acpi_gbl_opterr;
106506f57ddSLv Zheng extern int acpi_gbl_sub_opt_char;
107506f57ddSLv Zheng extern char *acpi_gbl_optarg;
108506f57ddSLv Zheng 
109506f57ddSLv Zheng /*
110506f57ddSLv Zheng  * cmfsize - Common get file size function
111506f57ddSLv Zheng  */
1123c9349c9SLv Zheng u32 cm_get_file_size(ACPI_FILE file);
113506f57ddSLv Zheng 
114506f57ddSLv Zheng /*
115506f57ddSLv Zheng  * adwalk
116506f57ddSLv Zheng  */
117506f57ddSLv Zheng void
118506f57ddSLv Zheng acpi_dm_cross_reference_namespace(union acpi_parse_object *parse_tree_root,
119506f57ddSLv Zheng 				  struct acpi_namespace_node *namespace_root,
120506f57ddSLv Zheng 				  acpi_owner_id owner_id);
121506f57ddSLv Zheng 
122506f57ddSLv Zheng void acpi_dm_dump_tree(union acpi_parse_object *origin);
123506f57ddSLv Zheng 
124506f57ddSLv Zheng void acpi_dm_find_orphan_methods(union acpi_parse_object *origin);
125506f57ddSLv Zheng 
126506f57ddSLv Zheng void
127506f57ddSLv Zheng acpi_dm_finish_namespace_load(union acpi_parse_object *parse_tree_root,
128506f57ddSLv Zheng 			      struct acpi_namespace_node *namespace_root,
129506f57ddSLv Zheng 			      acpi_owner_id owner_id);
130506f57ddSLv Zheng 
131506f57ddSLv Zheng void
132a86c856eSDavid E. Box acpi_dm_convert_parse_objects(union acpi_parse_object *parse_tree_root,
133506f57ddSLv Zheng 			      struct acpi_namespace_node *namespace_root);
134506f57ddSLv Zheng 
135506f57ddSLv Zheng /*
136506f57ddSLv Zheng  * adfile
137506f57ddSLv Zheng  */
138506f57ddSLv Zheng acpi_status ad_initialize(void);
139506f57ddSLv Zheng 
140506f57ddSLv Zheng char *fl_generate_filename(char *input_filename, char *suffix);
141506f57ddSLv Zheng 
142506f57ddSLv Zheng acpi_status
143506f57ddSLv Zheng fl_split_input_pathname(char *input_path,
144506f57ddSLv Zheng 			char **out_directory_path, char **out_filename);
145506f57ddSLv Zheng 
14683b2fa94SBob Moore char *fl_get_file_basename(char *file_pathname);
14783b2fa94SBob Moore 
148506f57ddSLv Zheng char *ad_generate_filename(char *prefix, char *table_id);
149506f57ddSLv Zheng 
150506f57ddSLv Zheng void
151506f57ddSLv Zheng ad_write_table(struct acpi_table_header *table,
152506f57ddSLv Zheng 	       u32 length, char *table_name, char *oem_table_id);
153506f57ddSLv Zheng 
154506f57ddSLv Zheng #endif				/* _ACAPPS */
155