xref: /openbmc/linux/drivers/acpi/acpica/acconvert.h (revision 82e6fdd6)
1 /******************************************************************************
2  *
3  * Module Name: acapps - common include for ACPI applications/tools
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2018, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #ifndef _ACCONVERT
45 #define _ACCONVERT
46 
47 /* Definitions for comment state */
48 
49 #define ASL_COMMENT_STANDARD    1
50 #define ASLCOMMENT_INLINE       2
51 #define ASL_COMMENT_OPEN_PAREN  3
52 #define ASL_COMMENT_CLOSE_PAREN 4
53 #define ASL_COMMENT_CLOSE_BRACE 5
54 
55 /* Definitions for comment print function*/
56 
57 #define AML_COMMENT_STANDARD    1
58 #define AMLCOMMENT_INLINE       2
59 #define AML_COMMENT_END_NODE    3
60 #define AML_NAMECOMMENT         4
61 #define AML_COMMENT_CLOSE_BRACE 5
62 #define AML_COMMENT_ENDBLK      6
63 #define AML_COMMENT_INCLUDE     7
64 
65 #ifdef ACPI_ASL_COMPILER
66 /*
67  * cvcompiler
68  */
69 void
70 cv_process_comment(struct asl_comment_state current_state,
71 		   char *string_buffer, int c1);
72 
73 void
74 cv_process_comment_type2(struct asl_comment_state current_state,
75 			 char *string_buffer);
76 
77 u32 cv_calculate_comment_lengths(union acpi_parse_object *op);
78 
79 void cv_process_comment_state(char input);
80 
81 char *cv_append_inline_comment(char *inline_comment, char *to_add);
82 
83 void cv_add_to_comment_list(char *to_add);
84 
85 void cv_place_comment(u8 type, char *comment_string);
86 
87 u32 cv_parse_op_block_type(union acpi_parse_object *op);
88 
89 struct acpi_comment_node *cv_comment_node_calloc(void);
90 
91 void cg_write_aml_def_block_comment(union acpi_parse_object *op);
92 
93 void
94 cg_write_one_aml_comment(union acpi_parse_object *op,
95 			 char *comment_to_print, u8 input_option);
96 
97 void cg_write_aml_comment(union acpi_parse_object *op);
98 
99 /*
100  * cvparser
101  */
102 void
103 cv_init_file_tree(struct acpi_table_header *table,
104 		  u8 *aml_start, u32 aml_length);
105 
106 void cv_clear_op_comments(union acpi_parse_object *op);
107 
108 struct acpi_file_node *cv_filename_exists(char *filename,
109 					  struct acpi_file_node *head);
110 
111 void cv_label_file_node(union acpi_parse_object *op);
112 
113 void
114 cv_capture_list_comments(struct acpi_parse_state *parser_state,
115 			 struct acpi_comment_node *list_head,
116 			 struct acpi_comment_node *list_tail);
117 
118 void cv_capture_comments_only(struct acpi_parse_state *parser_state);
119 
120 void cv_capture_comments(struct acpi_walk_state *walk_state);
121 
122 void cv_transfer_comments(union acpi_parse_object *op);
123 
124 /*
125  * cvdisasm
126  */
127 void cv_switch_files(u32 level, union acpi_parse_object *op);
128 
129 u8 cv_file_has_switched(union acpi_parse_object *op);
130 
131 void cv_close_paren_write_comment(union acpi_parse_object *op, u32 level);
132 
133 void cv_close_brace_write_comment(union acpi_parse_object *op, u32 level);
134 
135 void
136 cv_print_one_comment_list(struct acpi_comment_node *comment_list, u32 level);
137 
138 void
139 cv_print_one_comment_type(union acpi_parse_object *op,
140 			  u8 comment_type, char *end_str, u32 level);
141 
142 #endif
143 
144 #endif				/* _ACCONVERT */
145