diff options
author | Bob Moore <robert.moore@intel.com> | 2013-04-11 20:24:22 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-04-12 07:29:46 -0400 |
commit | c34c82bc9634a099a2652889806c5997f2a3d56f (patch) | |
tree | f2b9505b179e7e1a069105037fb0a531aeebdb56 /drivers/acpi | |
parent | f084dbb939070281be7c882db63a4a428c51fcf4 (diff) |
ACPICA: Predefine names: Add allowed argument types to master info table
This change adds the infrastructure to enable typechecking
on incoming arguments for the predefined methods/objects. It
does not actually contain the code that will fully utilize this
information. Also condenses some duplicate code for the predefined
names into a new module, utilities/utpredef.c
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/acpica/Makefile | 1 | ||||
-rw-r--r-- | drivers/acpi/acpica/aclocal.h | 13 | ||||
-rw-r--r-- | drivers/acpi/acpica/acnamesp.h | 4 | ||||
-rw-r--r-- | drivers/acpi/acpica/acpredef.h | 1305 | ||||
-rw-r--r-- | drivers/acpi/acpica/acutils.h | 20 | ||||
-rw-r--r-- | drivers/acpi/acpica/nseval.c | 26 | ||||
-rw-r--r-- | drivers/acpi/acpica/nspredef.c | 106 | ||||
-rw-r--r-- | drivers/acpi/acpica/utpredef.c | 399 |
8 files changed, 1361 insertions, 513 deletions
diff --git a/drivers/acpi/acpica/Makefile b/drivers/acpi/acpica/Makefile index 5a542c8db942..7ddf29eca9f5 100644 --- a/drivers/acpi/acpica/Makefile +++ b/drivers/acpi/acpica/Makefile | |||
@@ -161,6 +161,7 @@ acpi-y += \ | |||
161 | utobject.o \ | 161 | utobject.o \ |
162 | utosi.o \ | 162 | utosi.o \ |
163 | utownerid.o \ | 163 | utownerid.o \ |
164 | utpredef.o \ | ||
164 | utresrc.o \ | 165 | utresrc.o \ |
165 | utstate.o \ | 166 | utstate.o \ |
166 | utstring.o \ | 167 | utstring.o \ |
diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h index 636658ffc9b1..d5bfbd331bfd 100644 --- a/drivers/acpi/acpica/aclocal.h +++ b/drivers/acpi/acpica/aclocal.h | |||
@@ -294,6 +294,8 @@ acpi_status(*acpi_internal_method) (struct acpi_walk_state * walk_state); | |||
294 | #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ | 294 | #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ |
295 | #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF | 295 | #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF |
296 | 296 | ||
297 | #pragma pack(1) | ||
298 | |||
297 | /* | 299 | /* |
298 | * Information structure for ACPI predefined names. | 300 | * Information structure for ACPI predefined names. |
299 | * Each entry in the table contains the following items: | 301 | * Each entry in the table contains the following items: |
@@ -304,7 +306,7 @@ acpi_status(*acpi_internal_method) (struct acpi_walk_state * walk_state); | |||
304 | */ | 306 | */ |
305 | struct acpi_name_info { | 307 | struct acpi_name_info { |
306 | char name[ACPI_NAME_SIZE]; | 308 | char name[ACPI_NAME_SIZE]; |
307 | u8 param_count; | 309 | u16 argument_list; |
308 | u8 expected_btypes; | 310 | u8 expected_btypes; |
309 | }; | 311 | }; |
310 | 312 | ||
@@ -327,7 +329,7 @@ struct acpi_package_info { | |||
327 | u8 count1; | 329 | u8 count1; |
328 | u8 object_type2; | 330 | u8 object_type2; |
329 | u8 count2; | 331 | u8 count2; |
330 | u8 reserved; | 332 | u16 reserved; |
331 | }; | 333 | }; |
332 | 334 | ||
333 | /* Used for ACPI_PTYPE2_FIXED */ | 335 | /* Used for ACPI_PTYPE2_FIXED */ |
@@ -336,6 +338,7 @@ struct acpi_package_info2 { | |||
336 | u8 type; | 338 | u8 type; |
337 | u8 count; | 339 | u8 count; |
338 | u8 object_type[4]; | 340 | u8 object_type[4]; |
341 | u8 reserved; | ||
339 | }; | 342 | }; |
340 | 343 | ||
341 | /* Used for ACPI_PTYPE1_OPTION */ | 344 | /* Used for ACPI_PTYPE1_OPTION */ |
@@ -345,7 +348,7 @@ struct acpi_package_info3 { | |||
345 | u8 count; | 348 | u8 count; |
346 | u8 object_type[2]; | 349 | u8 object_type[2]; |
347 | u8 tail_object_type; | 350 | u8 tail_object_type; |
348 | u8 reserved; | 351 | u16 reserved; |
349 | }; | 352 | }; |
350 | 353 | ||
351 | union acpi_predefined_info { | 354 | union acpi_predefined_info { |
@@ -355,6 +358,10 @@ union acpi_predefined_info { | |||
355 | struct acpi_package_info3 ret_info3; | 358 | struct acpi_package_info3 ret_info3; |
356 | }; | 359 | }; |
357 | 360 | ||
361 | /* Reset to default packing */ | ||
362 | |||
363 | #pragma pack() | ||
364 | |||
358 | /* Data block used during object validation */ | 365 | /* Data block used during object validation */ |
359 | 366 | ||
360 | struct acpi_predefined_data { | 367 | struct acpi_predefined_data { |
diff --git a/drivers/acpi/acpica/acnamesp.h b/drivers/acpi/acpica/acnamesp.h index 6475962a7f2d..d2e491876bc0 100644 --- a/drivers/acpi/acpica/acnamesp.h +++ b/drivers/acpi/acpica/acnamesp.h | |||
@@ -231,10 +231,6 @@ acpi_ns_check_predefined_names(struct acpi_namespace_node *node, | |||
231 | acpi_status return_status, | 231 | acpi_status return_status, |
232 | union acpi_operand_object **return_object); | 232 | union acpi_operand_object **return_object); |
233 | 233 | ||
234 | const union acpi_predefined_info *acpi_ns_check_for_predefined_name(struct | ||
235 | acpi_namespace_node | ||
236 | *node); | ||
237 | |||
238 | void | 234 | void |
239 | acpi_ns_check_parameter_count(char *pathname, | 235 | acpi_ns_check_parameter_count(char *pathname, |
240 | struct acpi_namespace_node *node, | 236 | struct acpi_namespace_node *node, |
diff --git a/drivers/acpi/acpica/acpredef.h b/drivers/acpi/acpica/acpredef.h index 752cc40cdc1e..b22b70944fd6 100644 --- a/drivers/acpi/acpica/acpredef.h +++ b/drivers/acpi/acpica/acpredef.h | |||
@@ -56,7 +56,7 @@ | |||
56 | * object type | 56 | * object type |
57 | * count | 57 | * count |
58 | * | 58 | * |
59 | * ACPI_PTYPE1_VAR: Variable-length length: | 59 | * ACPI_PTYPE1_VAR: Variable-length length. Zero-length package is allowed: |
60 | * object type (Int/Buf/Ref) | 60 | * object type (Int/Buf/Ref) |
61 | * | 61 | * |
62 | * ACPI_PTYPE1_OPTION: Package has some required and some optional elements | 62 | * ACPI_PTYPE1_OPTION: Package has some required and some optional elements |
@@ -66,14 +66,16 @@ | |||
66 | * 2) PTYPE2 packages contain a Variable-length number of sub-packages. Each | 66 | * 2) PTYPE2 packages contain a Variable-length number of sub-packages. Each |
67 | * of the different types describe the contents of each of the sub-packages. | 67 | * of the different types describe the contents of each of the sub-packages. |
68 | * | 68 | * |
69 | * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types: | 69 | * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types. Zero-length |
70 | * parent package is allowed: | ||
70 | * object type | 71 | * object type |
71 | * count | 72 | * count |
72 | * object type | 73 | * object type |
73 | * count | 74 | * count |
74 | * (Used for _ALR,_MLS,_PSS,_TRT,_TSS) | 75 | * (Used for _ALR,_MLS,_PSS,_TRT,_TSS) |
75 | * | 76 | * |
76 | * ACPI_PTYPE2_COUNT: Each subpackage has a count as first element: | 77 | * ACPI_PTYPE2_COUNT: Each subpackage has a count as first element. |
78 | * Zero-length parent package is allowed: | ||
77 | * object type | 79 | * object type |
78 | * (Used for _CSD,_PSD,_TSD) | 80 | * (Used for _CSD,_PSD,_TSD) |
79 | * | 81 | * |
@@ -84,17 +86,19 @@ | |||
84 | * count | 86 | * count |
85 | * (Used for _CST) | 87 | * (Used for _CST) |
86 | * | 88 | * |
87 | * ACPI_PTYPE2_FIXED: Each subpackage is of Fixed-length | 89 | * ACPI_PTYPE2_FIXED: Each subpackage is of Fixed-length. Zero-length |
90 | * parent package is allowed. | ||
88 | * (Used for _PRT) | 91 | * (Used for _PRT) |
89 | * | 92 | * |
90 | * ACPI_PTYPE2_MIN: Each subpackage has a Variable-length but minimum length | 93 | * ACPI_PTYPE2_MIN: Each subpackage has a Variable-length but minimum length. |
94 | * Zero-length parent package is allowed: | ||
91 | * (Used for _HPX) | 95 | * (Used for _HPX) |
92 | * | 96 | * |
93 | * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length | 97 | * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length |
94 | * (Used for _ART, _FPS) | 98 | * (Used for _ART, _FPS) |
95 | * | 99 | * |
96 | * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements | 100 | * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements |
97 | * followed by an optional element | 101 | * followed by an optional element. Zero-length parent package is allowed. |
98 | * object type | 102 | * object type |
99 | * count | 103 | * count |
100 | * object type | 104 | * object type |
@@ -116,8 +120,47 @@ enum acpi_return_package_types { | |||
116 | ACPI_PTYPE2_FIX_VAR = 10 | 120 | ACPI_PTYPE2_FIX_VAR = 10 |
117 | }; | 121 | }; |
118 | 122 | ||
123 | /* Support macros for users of the predefined info table */ | ||
124 | |||
125 | #define METHOD_PREDEF_ARGS_MAX 4 | ||
126 | #define METHOD_ARG_BIT_WIDTH 3 | ||
127 | #define METHOD_ARG_MASK 0x0007 | ||
128 | #define ARG_COUNT_IS_MINIMUM 0x8000 | ||
129 | #define METHOD_MAX_ARG_TYPE ACPI_TYPE_PACKAGE | ||
130 | |||
131 | #define METHOD_GET_COUNT(arg_list) (arg_list & METHOD_ARG_MASK) | ||
132 | #define METHOD_GET_NEXT_ARG(arg_list) (arg_list >> METHOD_ARG_BIT_WIDTH) | ||
133 | |||
134 | /* Macros used to build the predefined info table */ | ||
135 | |||
136 | #define METHOD_0ARGS 0 | ||
137 | #define METHOD_1ARGS(a1) (1 | (a1 << 3)) | ||
138 | #define METHOD_2ARGS(a1,a2) (2 | (a1 << 3) | (a2 << 6)) | ||
139 | #define METHOD_3ARGS(a1,a2,a3) (3 | (a1 << 3) | (a2 << 6) | (a3 << 9)) | ||
140 | #define METHOD_4ARGS(a1,a2,a3,a4) (4 | (a1 << 3) | (a2 << 6) | (a3 << 9) | (a4 << 12)) | ||
141 | |||
142 | #define METHOD_RETURNS(type) (type) | ||
143 | #define METHOD_NO_RETURN_VALUE 0 | ||
144 | |||
145 | #define PACKAGE_INFO(a,b,c,d,e,f) {{{(a),(b),(c),(d)}, ((((u16)(f)) << 8) | (e)), 0}} | ||
146 | |||
147 | /* Support macros for the resource descriptor info table */ | ||
148 | |||
149 | #define WIDTH_1 0x0001 | ||
150 | #define WIDTH_2 0x0002 | ||
151 | #define WIDTH_3 0x0004 | ||
152 | #define WIDTH_8 0x0008 | ||
153 | #define WIDTH_16 0x0010 | ||
154 | #define WIDTH_32 0x0020 | ||
155 | #define WIDTH_64 0x0040 | ||
156 | #define VARIABLE_DATA 0x0080 | ||
157 | #define NUM_RESOURCE_WIDTHS 8 | ||
158 | |||
159 | #define WIDTH_ADDRESS WIDTH_16 | WIDTH_32 | WIDTH_64 | ||
160 | |||
119 | #ifdef ACPI_CREATE_PREDEFINED_TABLE | 161 | #ifdef ACPI_CREATE_PREDEFINED_TABLE |
120 | /* | 162 | /****************************************************************************** |
163 | * | ||
121 | * Predefined method/object information table. | 164 | * Predefined method/object information table. |
122 | * | 165 | * |
123 | * These are the names that can actually be evaluated via acpi_evaluate_object. | 166 | * These are the names that can actually be evaluated via acpi_evaluate_object. |
@@ -125,23 +168,24 @@ enum acpi_return_package_types { | |||
125 | * | 168 | * |
126 | * 1) Predefined/Reserved names that are never evaluated via | 169 | * 1) Predefined/Reserved names that are never evaluated via |
127 | * acpi_evaluate_object: | 170 | * acpi_evaluate_object: |
128 | * _Lxx and _Exx GPE methods | 171 | * _Lxx and _Exx GPE methods |
129 | * _Qxx EC methods | 172 | * _Qxx EC methods |
130 | * _T_x compiler temporary variables | 173 | * _T_x compiler temporary variables |
174 | * _Wxx wake events | ||
131 | * | 175 | * |
132 | * 2) Predefined names that never actually exist within the AML code: | 176 | * 2) Predefined names that never actually exist within the AML code: |
133 | * Predefined resource descriptor field names | 177 | * Predefined resource descriptor field names |
134 | * | 178 | * |
135 | * 3) Predefined names that are implemented within ACPICA: | 179 | * 3) Predefined names that are implemented within ACPICA: |
136 | * _OSI | 180 | * _OSI |
137 | * | ||
138 | * 4) Some predefined names that are not documented within the ACPI spec. | ||
139 | * _WDG, _WED | ||
140 | * | 181 | * |
141 | * The main entries in the table each contain the following items: | 182 | * The main entries in the table each contain the following items: |
142 | * | 183 | * |
143 | * name - The ACPI reserved name | 184 | * name - The ACPI reserved name |
144 | * param_count - Number of arguments to the method | 185 | * argument_list - Contains (in 16 bits), the number of required |
186 | * arguments to the method (3 bits), and a 3-bit type | ||
187 | * field for each argument (up to 4 arguments). The | ||
188 | * METHOD_?ARGS macros generate the correct packed data. | ||
145 | * expected_btypes - Allowed type(s) for the return value. | 189 | * expected_btypes - Allowed type(s) for the return value. |
146 | * 0 means that no return value is expected. | 190 | * 0 means that no return value is expected. |
147 | * | 191 | * |
@@ -151,256 +195,511 @@ enum acpi_return_package_types { | |||
151 | * overall size of the stored data. | 195 | * overall size of the stored data. |
152 | * | 196 | * |
153 | * Note: The additional braces are intended to promote portability. | 197 | * Note: The additional braces are intended to promote portability. |
154 | */ | 198 | * |
155 | static const union acpi_predefined_info predefined_names[] = { | 199 | * Note2: Table is used by the kernel-resident subsystem, the iASL compiler, |
156 | {{"_AC0", 0, ACPI_RTYPE_INTEGER}}, | 200 | * and the acpi_help utility. |
157 | {{"_AC1", 0, ACPI_RTYPE_INTEGER}}, | 201 | * |
158 | {{"_AC2", 0, ACPI_RTYPE_INTEGER}}, | 202 | * TBD: _PRT - currently ignore reversed entries. Attempt to fix in nsrepair. |
159 | {{"_AC3", 0, ACPI_RTYPE_INTEGER}}, | 203 | * Possibly fixing package elements like _BIF, etc. |
160 | {{"_AC4", 0, ACPI_RTYPE_INTEGER}}, | 204 | * |
161 | {{"_AC5", 0, ACPI_RTYPE_INTEGER}}, | 205 | *****************************************************************************/ |
162 | {{"_AC6", 0, ACPI_RTYPE_INTEGER}}, | 206 | |
163 | {{"_AC7", 0, ACPI_RTYPE_INTEGER}}, | 207 | const union acpi_predefined_info acpi_gbl_predefined_methods[] = { |
164 | {{"_AC8", 0, ACPI_RTYPE_INTEGER}}, | 208 | {{"_AC0", METHOD_0ARGS, |
165 | {{"_AC9", 0, ACPI_RTYPE_INTEGER}}, | 209 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
166 | {{"_ADR", 0, ACPI_RTYPE_INTEGER}}, | 210 | |
167 | {{"_AEI", 0, ACPI_RTYPE_BUFFER}}, | 211 | {{"_AC1", METHOD_0ARGS, |
168 | {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 212 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
169 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 213 | |
170 | 214 | {{"_AC2", METHOD_0ARGS, | |
171 | {{"_AL1", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 215 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
172 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 216 | |
173 | 217 | {{"_AC3", METHOD_0ARGS, | |
174 | {{"_AL2", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 218 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
175 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 219 | |
176 | 220 | {{"_AC4", METHOD_0ARGS, | |
177 | {{"_AL3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 221 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
178 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 222 | |
179 | 223 | {{"_AC5", METHOD_0ARGS, | |
180 | {{"_AL4", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 224 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
181 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 225 | |
182 | 226 | {{"_AC6", METHOD_0ARGS, | |
183 | {{"_AL5", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 227 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
184 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 228 | |
185 | 229 | {{"_AC7", METHOD_0ARGS, | |
186 | {{"_AL6", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 230 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
187 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 231 | |
188 | 232 | {{"_AC8", METHOD_0ARGS, | |
189 | {{"_AL7", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 233 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
190 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 234 | |
191 | 235 | {{"_AC9", METHOD_0ARGS, | |
192 | {{"_AL8", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 236 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
193 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 237 | |
194 | 238 | {{"_ADR", METHOD_0ARGS, | |
195 | {{"_AL9", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 239 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
196 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 240 | |
197 | 241 | {{"_AEI", METHOD_0ARGS, | |
198 | {{"_ALC", 0, ACPI_RTYPE_INTEGER}}, | 242 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, |
199 | {{"_ALI", 0, ACPI_RTYPE_INTEGER}}, | 243 | |
200 | {{"_ALP", 0, ACPI_RTYPE_INTEGER}}, | 244 | {{"_AL0", METHOD_0ARGS, |
201 | {{"_ALR", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 2 (Ints) */ | 245 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
202 | {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 2,0}, 0,0}}, | 246 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
203 | 247 | ||
204 | {{"_ALT", 0, ACPI_RTYPE_INTEGER}}, | 248 | {{"_AL1", METHOD_0ARGS, |
205 | {{"_ART", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(rev), n Pkg (2 Ref/11 Int) */ | 249 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
206 | {{{ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER}, | 250 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
207 | 11, 0}}, | 251 | |
208 | 252 | {{"_AL2", METHOD_0ARGS, | |
209 | {{"_BBN", 0, ACPI_RTYPE_INTEGER}}, | 253 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
210 | {{"_BCL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */ | 254 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
211 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}}, | 255 | |
212 | 256 | {{"_AL3", METHOD_0ARGS, | |
213 | {{"_BCM", 1, 0}}, | 257 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
214 | {{"_BCT", 1, ACPI_RTYPE_INTEGER}}, | 258 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
215 | {{"_BDN", 0, ACPI_RTYPE_INTEGER}}, | 259 | |
216 | {{"_BFS", 1, 0}}, | 260 | {{"_AL4", METHOD_0ARGS, |
217 | {{"_BIF", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (9 Int),(4 Str) */ | 261 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
218 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9, ACPI_RTYPE_STRING}, 4, 0}}, | 262 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
219 | 263 | ||
220 | {{"_BIX", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int),(4 Str) */ | 264 | {{"_AL5", METHOD_0ARGS, |
221 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, ACPI_RTYPE_STRING}, 4, | 265 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
222 | 0}}, | 266 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
223 | 267 | ||
224 | {{"_BLT", 3, 0}}, | 268 | {{"_AL6", METHOD_0ARGS, |
225 | {{"_BMA", 1, ACPI_RTYPE_INTEGER}}, | 269 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
226 | {{"_BMC", 1, 0}}, | 270 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
227 | {{"_BMD", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (5 Int) */ | 271 | |
228 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0}, 0,0}}, | 272 | {{"_AL7", METHOD_0ARGS, |
229 | 273 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | |
230 | {{"_BMS", 1, ACPI_RTYPE_INTEGER}}, | 274 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
231 | {{"_BQC", 0, ACPI_RTYPE_INTEGER}}, | 275 | |
232 | {{"_BST", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */ | 276 | {{"_AL8", METHOD_0ARGS, |
233 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}}, | 277 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
234 | 278 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | |
235 | {{"_BTM", 1, ACPI_RTYPE_INTEGER}}, | 279 | |
236 | {{"_BTP", 1, 0}}, | 280 | {{"_AL9", METHOD_0ARGS, |
237 | {{"_CBA", 0, ACPI_RTYPE_INTEGER}}, /* See PCI firmware spec 3.0 */ | 281 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
238 | {{"_CDM", 0, ACPI_RTYPE_INTEGER}}, | 282 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
239 | {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */ | 283 | |
240 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0, 0}, 0, | 284 | {{"_ALC", METHOD_0ARGS, |
241 | 0}}, | 285 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
242 | 286 | ||
243 | {{"_CLS", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int) */ | 287 | {{"_ALI", METHOD_0ARGS, |
244 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}}, | 288 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
245 | 289 | ||
246 | {{"_CPC", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Bufs) */ | 290 | {{"_ALP", METHOD_0ARGS, |
247 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0, 0}, 0, | 291 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
248 | 0}}, | 292 | |
249 | 293 | {{"_ALR", METHOD_0ARGS, | |
250 | {{"_CRS", 0, ACPI_RTYPE_BUFFER}}, | 294 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 2 (Ints) */ |
251 | {{"_CRT", 0, ACPI_RTYPE_INTEGER}}, | 295 | PACKAGE_INFO(ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 2, 0, 0, 0), |
252 | {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */ | 296 | |
253 | {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0}, 0,0}}, | 297 | {{"_ALT", METHOD_0ARGS, |
254 | 298 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | |
255 | {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */ | 299 | |
256 | {{{ACPI_PTYPE2_PKG_COUNT, ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3, | 300 | {{"_ART", METHOD_0ARGS, |
257 | 0}}, | 301 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (2 Ref/11 Int) */ |
258 | 302 | PACKAGE_INFO(ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_REFERENCE, 2, | |
259 | {{"_CWS", 1, ACPI_RTYPE_INTEGER}}, | 303 | ACPI_RTYPE_INTEGER, 11, 0), |
260 | {{"_DCK", 1, ACPI_RTYPE_INTEGER}}, | 304 | |
261 | {{"_DCS", 0, ACPI_RTYPE_INTEGER}}, | 305 | {{"_BBN", METHOD_0ARGS, |
262 | {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}}, | 306 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
263 | {{"_DDN", 0, ACPI_RTYPE_STRING}}, | 307 | |
264 | {{"_DEP", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 308 | {{"_BCL", METHOD_0ARGS, |
265 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}}, | 309 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */ |
266 | 310 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0, 0, 0, 0), | |
267 | {{"_DGS", 0, ACPI_RTYPE_INTEGER}}, | 311 | |
268 | {{"_DIS", 0, 0}}, | 312 | {{"_BCM", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
269 | 313 | METHOD_NO_RETURN_VALUE}}, | |
270 | {{"_DLM", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */ | 314 | |
271 | {{{ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1, | 315 | {{"_BCT", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
272 | ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER}, 0, 0}}, | 316 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
273 | 317 | ||
274 | {{"_DMA", 0, ACPI_RTYPE_BUFFER}}, | 318 | {{"_BDN", METHOD_0ARGS, |
275 | {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */ | 319 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
276 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}}, | 320 | |
277 | 321 | {{"_BFS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | |
278 | {{"_DOS", 1, 0}}, | 322 | METHOD_NO_RETURN_VALUE}}, |
279 | {{"_DSM", 4, ACPI_RTYPE_ALL}}, /* Must return a type, but it can be of any type */ | 323 | |
280 | {{"_DSS", 1, 0}}, | 324 | {{"_BIF", METHOD_0ARGS, |
281 | {{"_DSW", 3, 0}}, | 325 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (9 Int),(4 Str) */ |
282 | {{"_DTI", 1, 0}}, | 326 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9, |
283 | {{"_EC_", 0, ACPI_RTYPE_INTEGER}}, | 327 | ACPI_RTYPE_STRING, 4, 0), |
284 | {{"_EDL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs)*/ | 328 | |
285 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 329 | {{"_BIX", METHOD_0ARGS, |
286 | 330 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (16 Int),(4 Str) */ | |
287 | {{"_EJ0", 1, 0}}, | 331 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, |
288 | {{"_EJ1", 1, 0}}, | 332 | ACPI_RTYPE_STRING, 4, 0), |
289 | {{"_EJ2", 1, 0}}, | 333 | |
290 | {{"_EJ3", 1, 0}}, | 334 | {{"_BLT", |
291 | {{"_EJ4", 1, 0}}, | 335 | METHOD_3ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), |
292 | {{"_EJD", 0, ACPI_RTYPE_STRING}}, | 336 | METHOD_NO_RETURN_VALUE}}, |
293 | {{"_EVT", 1, 0}}, | 337 | |
294 | {{"_FDE", 0, ACPI_RTYPE_BUFFER}}, | 338 | {{"_BMA", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
295 | {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */ | 339 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
296 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}}, | 340 | |
297 | 341 | {{"_BMC", METHOD_1ARGS(ACPI_TYPE_INTEGER), | |
298 | {{"_FDM", 1, 0}}, | 342 | METHOD_NO_RETURN_VALUE}}, |
299 | {{"_FIF", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */ | 343 | |
300 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0}, 0, 0}}, | 344 | {{"_BMD", METHOD_0ARGS, |
301 | 345 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (5 Int) */ | |
302 | {{"_FIX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */ | 346 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5, 0, 0, 0), |
303 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}}, | 347 | |
304 | 348 | {{"_BMS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | |
305 | {{"_FPS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(rev), n Pkg (5 Int) */ | 349 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
306 | {{{ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_INTEGER, 5, 0}, 0, 0}}, | 350 | |
307 | 351 | {{"_BQC", METHOD_0ARGS, | |
308 | {{"_FSL", 1, 0}}, | 352 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
309 | {{"_FST", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int) */ | 353 | |
310 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}}, | 354 | {{"_BST", METHOD_0ARGS, |
311 | 355 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ | |
312 | {{"_GAI", 0, ACPI_RTYPE_INTEGER}}, | 356 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0, 0, 0), |
313 | {{"_GCP", 0, ACPI_RTYPE_INTEGER}}, | 357 | |
314 | {{"_GHL", 0, ACPI_RTYPE_INTEGER}}, | 358 | {{"_BTM", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
315 | {{"_GLK", 0, ACPI_RTYPE_INTEGER}}, | 359 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
316 | {{"_GPD", 0, ACPI_RTYPE_INTEGER}}, | 360 | |
317 | {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */ | 361 | {{"_BTP", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
318 | {{"_GRT", 0, ACPI_RTYPE_BUFFER}}, | 362 | METHOD_NO_RETURN_VALUE}}, |
319 | {{"_GSB", 0, ACPI_RTYPE_INTEGER}}, | 363 | |
320 | {{"_GTF", 0, ACPI_RTYPE_BUFFER}}, | 364 | {{"_CBA", METHOD_0ARGS, |
321 | {{"_GTM", 0, ACPI_RTYPE_BUFFER}}, | 365 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* See PCI firmware spec 3.0 */ |
322 | {{"_GTS", 1, 0}}, | 366 | |
323 | {{"_GWS", 1, ACPI_RTYPE_INTEGER}}, | 367 | {{"_CDM", METHOD_0ARGS, |
324 | {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}}, | 368 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
325 | {{"_HOT", 0, ACPI_RTYPE_INTEGER}}, | 369 | |
326 | {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */ | 370 | {{"_CID", METHOD_0ARGS, |
327 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}}, | 371 | METHOD_RETURNS(ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints/Strs) */ |
372 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0, | ||
373 | 0, 0, 0), | ||
374 | |||
375 | {{"_CLS", METHOD_0ARGS, | ||
376 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */ | ||
377 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0, 0, 0), | ||
378 | |||
379 | {{"_CPC", METHOD_0ARGS, | ||
380 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints/Bufs) */ | ||
381 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0, | ||
382 | 0, 0, 0), | ||
383 | |||
384 | {{"_CRS", METHOD_0ARGS, | ||
385 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
386 | |||
387 | {{"_CRT", METHOD_0ARGS, | ||
388 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
389 | |||
390 | {{"_CSD", METHOD_0ARGS, | ||
391 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(n), n-1 Int) */ | ||
392 | PACKAGE_INFO(ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0, 0, 0, 0), | ||
393 | |||
394 | {{"_CST", METHOD_0ARGS, | ||
395 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */ | ||
396 | PACKAGE_INFO(ACPI_PTYPE2_PKG_COUNT, ACPI_RTYPE_BUFFER, 1, | ||
397 | ACPI_RTYPE_INTEGER, 3, 0), | ||
398 | |||
399 | {{"_CWS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
400 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
401 | |||
402 | {{"_DCK", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
403 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
404 | |||
405 | {{"_DCS", METHOD_0ARGS, | ||
406 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
407 | |||
408 | {{"_DDC", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
409 | METHOD_RETURNS(ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER)}}, | ||
410 | |||
411 | {{"_DDN", METHOD_0ARGS, | ||
412 | METHOD_RETURNS(ACPI_RTYPE_STRING)}}, | ||
413 | |||
414 | {{"_DEP", METHOD_0ARGS, | ||
415 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
416 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
417 | |||
418 | {{"_DGS", METHOD_0ARGS, | ||
419 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
420 | |||
421 | {{"_DIS", METHOD_0ARGS, | ||
422 | METHOD_NO_RETURN_VALUE}}, | ||
423 | |||
424 | {{"_DLM", METHOD_0ARGS, | ||
425 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */ | ||
426 | PACKAGE_INFO(ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1, | ||
427 | ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER, 0, 0), | ||
428 | |||
429 | {{"_DMA", METHOD_0ARGS, | ||
430 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
431 | |||
432 | {{"_DOD", METHOD_0ARGS, | ||
433 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */ | ||
434 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0, 0, 0, 0), | ||
435 | |||
436 | {{"_DOS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
437 | METHOD_NO_RETURN_VALUE}}, | ||
438 | |||
439 | {{"_DSM", | ||
440 | METHOD_4ARGS(ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, | ||
441 | ACPI_TYPE_PACKAGE), | ||
442 | METHOD_RETURNS(ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */ | ||
443 | |||
444 | {{"_DSS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
445 | METHOD_NO_RETURN_VALUE}}, | ||
446 | |||
447 | {{"_DSW", | ||
448 | METHOD_3ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), | ||
449 | METHOD_NO_RETURN_VALUE}}, | ||
450 | |||
451 | {{"_DTI", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
452 | METHOD_NO_RETURN_VALUE}}, | ||
453 | |||
454 | {{"_EC_", METHOD_0ARGS, | ||
455 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
456 | |||
457 | {{"_EDL", METHOD_0ARGS, | ||
458 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
459 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
460 | |||
461 | {{"_EJ0", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
462 | METHOD_NO_RETURN_VALUE}}, | ||
463 | |||
464 | {{"_EJ1", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
465 | METHOD_NO_RETURN_VALUE}}, | ||
466 | |||
467 | {{"_EJ2", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
468 | METHOD_NO_RETURN_VALUE}}, | ||
469 | |||
470 | {{"_EJ3", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
471 | METHOD_NO_RETURN_VALUE}}, | ||
472 | |||
473 | {{"_EJ4", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
474 | METHOD_NO_RETURN_VALUE}}, | ||
475 | |||
476 | {{"_EJD", METHOD_0ARGS, | ||
477 | METHOD_RETURNS(ACPI_RTYPE_STRING)}}, | ||
478 | |||
479 | {{"_ERR", | ||
480 | METHOD_3ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_STRING, ACPI_TYPE_INTEGER), | ||
481 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* Internal use only, used by ACPICA test suites */ | ||
482 | |||
483 | {{"_EVT", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
484 | METHOD_NO_RETURN_VALUE}}, | ||
485 | |||
486 | {{"_FDE", METHOD_0ARGS, | ||
487 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
488 | |||
489 | {{"_FDI", METHOD_0ARGS, | ||
490 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (16 Int) */ | ||
491 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, 0, 0, 0), | ||
492 | |||
493 | {{"_FDM", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
494 | METHOD_NO_RETURN_VALUE}}, | ||
495 | |||
496 | {{"_FIF", METHOD_0ARGS, | ||
497 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ | ||
498 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0, 0, 0), | ||
499 | |||
500 | {{"_FIX", METHOD_0ARGS, | ||
501 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */ | ||
502 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0, 0, 0, 0), | ||
503 | |||
504 | {{"_FPS", METHOD_0ARGS, | ||
505 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (5 Int) */ | ||
506 | PACKAGE_INFO(ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_INTEGER, 5, 0, 0, 0), | ||
507 | |||
508 | {{"_FSL", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
509 | METHOD_NO_RETURN_VALUE}}, | ||
510 | |||
511 | {{"_FST", METHOD_0ARGS, | ||
512 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */ | ||
513 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0, 0, 0), | ||
514 | |||
515 | {{"_GAI", METHOD_0ARGS, | ||
516 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
517 | |||
518 | {{"_GCP", METHOD_0ARGS, | ||
519 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
520 | |||
521 | {{"_GHL", METHOD_0ARGS, | ||
522 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
523 | |||
524 | {{"_GLK", METHOD_0ARGS, | ||
525 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
526 | |||
527 | {{"_GPD", METHOD_0ARGS, | ||
528 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
529 | |||
530 | {{"_GPE", METHOD_0ARGS, | ||
531 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* _GPE method, not _GPE scope */ | ||
532 | |||
533 | {{"_GRT", METHOD_0ARGS, | ||
534 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
535 | |||
536 | {{"_GSB", METHOD_0ARGS, | ||
537 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
538 | |||
539 | {{"_GTF", METHOD_0ARGS, | ||
540 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
541 | |||
542 | {{"_GTM", METHOD_0ARGS, | ||
543 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
544 | |||
545 | {{"_GTS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
546 | METHOD_NO_RETURN_VALUE}}, | ||
547 | |||
548 | {{"_GWS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
549 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
550 | |||
551 | {{"_HID", METHOD_0ARGS, | ||
552 | METHOD_RETURNS(ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING)}}, | ||
553 | |||
554 | {{"_HOT", METHOD_0ARGS, | ||
555 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
556 | |||
557 | {{"_HPP", METHOD_0ARGS, | ||
558 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ | ||
559 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0, 0, 0), | ||
328 | 560 | ||
329 | /* | 561 | /* |
330 | * For _HPX, a single package is returned, containing a Variable-length number | 562 | * For _HPX, a single package is returned, containing a variable-length number |
331 | * of sub-packages. Each sub-package contains a PCI record setting. | 563 | * of sub-packages. Each sub-package contains a PCI record setting. |
332 | * There are several different type of record settings, of different | 564 | * There are several different type of record settings, of different |
333 | * lengths, but all elements of all settings are Integers. | 565 | * lengths, but all elements of all settings are Integers. |
334 | */ | 566 | */ |
335 | {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */ | 567 | {{"_HPX", METHOD_0ARGS, |
336 | {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}}, | 568 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (var Ints) */ |
337 | 569 | PACKAGE_INFO(ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5, 0, 0, 0), | |
338 | {{"_HRV", 0, ACPI_RTYPE_INTEGER}}, | 570 | |
339 | {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */ | 571 | {{"_HRV", METHOD_0ARGS, |
340 | {{"_INI", 0, 0}}, | 572 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
341 | {{"_IRC", 0, 0}}, | 573 | |
342 | {{"_LCK", 1, 0}}, | 574 | {{"_IFT", METHOD_0ARGS, |
343 | {{"_LID", 0, ACPI_RTYPE_INTEGER}}, | 575 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* See IPMI spec */ |
344 | {{"_MAT", 0, ACPI_RTYPE_BUFFER}}, | 576 | |
345 | {{"_MBM", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (8 Int) */ | 577 | {{"_INI", METHOD_0ARGS, |
346 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 8, 0}, 0, 0}}, | 578 | METHOD_NO_RETURN_VALUE}}, |
347 | 579 | ||
348 | {{"_MLS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (1 Str/1 Buf) */ | 580 | {{"_IRC", METHOD_0ARGS, |
349 | {{{ACPI_PTYPE2, ACPI_RTYPE_STRING, 1, ACPI_RTYPE_BUFFER}, 1, 0}}, | 581 | METHOD_NO_RETURN_VALUE}}, |
350 | 582 | ||
351 | {{"_MSG", 1, 0}}, | 583 | {{"_LCK", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
352 | {{"_MSM", 4, ACPI_RTYPE_INTEGER}}, | 584 | METHOD_NO_RETURN_VALUE}}, |
353 | {{"_NTT", 0, ACPI_RTYPE_INTEGER}}, | 585 | |
354 | {{"_OFF", 0, 0}}, | 586 | {{"_LID", METHOD_0ARGS, |
355 | {{"_ON_", 0, 0}}, | 587 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
356 | {{"_OS_", 0, ACPI_RTYPE_STRING}}, | 588 | |
357 | {{"_OSC", 4, ACPI_RTYPE_BUFFER}}, | 589 | {{"_MAT", METHOD_0ARGS, |
358 | {{"_OST", 3, 0}}, | 590 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, |
359 | {{"_PAI", 1, ACPI_RTYPE_INTEGER}}, | 591 | |
360 | {{"_PCL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 592 | {{"_MBM", METHOD_0ARGS, |
361 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 593 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (8 Int) */ |
362 | 594 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 8, 0, 0, 0), | |
363 | {{"_PCT", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Buf) */ | 595 | |
364 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0}, 0,0}}, | 596 | {{"_MLS", METHOD_0ARGS, |
365 | 597 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (1 Str/1 Buf) */ | |
366 | {{"_PDC", 1, 0}}, | 598 | PACKAGE_INFO(ACPI_PTYPE2, ACPI_RTYPE_STRING, 1, ACPI_RTYPE_BUFFER, 1, |
367 | {{"_PDL", 0, ACPI_RTYPE_INTEGER}}, | 599 | 0), |
368 | {{"_PIC", 1, 0}}, | 600 | |
369 | {{"_PIF", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int),(3 Str) */ | 601 | {{"_MSG", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
370 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, ACPI_RTYPE_STRING}, 3, 0}}, | 602 | METHOD_NO_RETURN_VALUE}}, |
371 | 603 | ||
372 | {{"_PLD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Bufs) */ | 604 | {{"_MSM", |
373 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0,0}, 0,0}}, | 605 | METHOD_4ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, |
374 | 606 | ACPI_TYPE_INTEGER), | |
375 | {{"_PMC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (11 Int),(3 Str) */ | 607 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
376 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 11, ACPI_RTYPE_STRING}, 3, | 608 | |
377 | 0}}, | 609 | {{"_NTT", METHOD_0ARGS, |
378 | 610 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | |
379 | {{"_PMD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 611 | |
380 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}}, | 612 | {{"_OFF", METHOD_0ARGS, |
381 | 613 | METHOD_NO_RETURN_VALUE}}, | |
382 | {{"_PMM", 0, ACPI_RTYPE_INTEGER}}, | 614 | |
383 | {{"_PPC", 0, ACPI_RTYPE_INTEGER}}, | 615 | {{"_ON_", METHOD_0ARGS, |
384 | {{"_PPE", 0, ACPI_RTYPE_INTEGER}}, /* See dig64 spec */ | 616 | METHOD_NO_RETURN_VALUE}}, |
385 | {{"_PR0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 617 | |
386 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 618 | {{"_OS_", METHOD_0ARGS, |
387 | 619 | METHOD_RETURNS(ACPI_RTYPE_STRING)}}, | |
388 | {{"_PR1", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 620 | |
389 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 621 | {{"_OSC", |
390 | 622 | METHOD_4ARGS(ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, | |
391 | {{"_PR2", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 623 | ACPI_TYPE_BUFFER), |
392 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 624 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, |
393 | 625 | ||
394 | {{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 626 | {{"_OST", |
395 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}}, | 627 | METHOD_3ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_BUFFER), |
396 | 628 | METHOD_NO_RETURN_VALUE}}, | |
397 | {{"_PRE", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 629 | |
398 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}}, | 630 | {{"_PAI", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
399 | 631 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | |
400 | {{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 632 | |
401 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}}, | 633 | {{"_PCL", METHOD_0ARGS, |
402 | 634 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | |
403 | {{"_PRS", 0, ACPI_RTYPE_BUFFER}}, | 635 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
636 | |||
637 | {{"_PCT", METHOD_0ARGS, | ||
638 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Buf) */ | ||
639 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2, 0, 0, 0), | ||
640 | |||
641 | {{"_PDC", METHOD_1ARGS(ACPI_TYPE_BUFFER), | ||
642 | METHOD_NO_RETURN_VALUE}}, | ||
643 | |||
644 | {{"_PDL", METHOD_0ARGS, | ||
645 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
646 | |||
647 | {{"_PIC", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
648 | METHOD_NO_RETURN_VALUE}}, | ||
649 | |||
650 | {{"_PIF", METHOD_0ARGS, | ||
651 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int),(3 Str) */ | ||
652 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, | ||
653 | ACPI_RTYPE_STRING, 3, 0), | ||
654 | |||
655 | {{"_PLD", METHOD_0ARGS, | ||
656 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Bufs) */ | ||
657 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0, 0, 0, 0), | ||
658 | |||
659 | {{"_PMC", METHOD_0ARGS, | ||
660 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (11 Int),(3 Str) */ | ||
661 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 11, | ||
662 | ACPI_RTYPE_STRING, 3, 0), | ||
663 | |||
664 | {{"_PMD", METHOD_0ARGS, | ||
665 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
666 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
667 | |||
668 | {{"_PMM", METHOD_0ARGS, | ||
669 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
670 | |||
671 | {{"_PPC", METHOD_0ARGS, | ||
672 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
673 | |||
674 | {{"_PPE", METHOD_0ARGS, | ||
675 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* See dig64 spec */ | ||
676 | |||
677 | {{"_PR0", METHOD_0ARGS, | ||
678 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
679 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
680 | |||
681 | {{"_PR1", METHOD_0ARGS, | ||
682 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
683 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
684 | |||
685 | {{"_PR2", METHOD_0ARGS, | ||
686 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
687 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
688 | |||
689 | {{"_PR3", METHOD_0ARGS, | ||
690 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
691 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
692 | |||
693 | {{"_PRE", METHOD_0ARGS, | ||
694 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
695 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
696 | |||
697 | {{"_PRL", METHOD_0ARGS, | ||
698 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
699 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
700 | |||
701 | {{"_PRS", METHOD_0ARGS, | ||
702 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
404 | 703 | ||
405 | /* | 704 | /* |
406 | * For _PRT, many BIOSs reverse the 3rd and 4th Package elements (Source | 705 | * For _PRT, many BIOSs reverse the 3rd and 4th Package elements (Source |
@@ -410,47 +709,89 @@ static const union acpi_predefined_info predefined_names[] = { | |||
410 | * warning, add the ACPI_RTYPE_REFERENCE type to the 4th element (index 3) | 709 | * warning, add the ACPI_RTYPE_REFERENCE type to the 4th element (index 3) |
411 | * in the statement below. | 710 | * in the statement below. |
412 | */ | 711 | */ |
413 | {{"_PRT", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (4): Int,Int,Int/Ref,Int */ | 712 | {{"_PRT", METHOD_0ARGS, |
414 | {{{ACPI_PTYPE2_FIXED, 4, ACPI_RTYPE_INTEGER,ACPI_RTYPE_INTEGER}, | 713 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (4): Int,Int,Int/Ref,Int */ |
415 | ACPI_RTYPE_INTEGER | ACPI_RTYPE_REFERENCE, | 714 | PACKAGE_INFO(ACPI_PTYPE2_FIXED, 4, ACPI_RTYPE_INTEGER, |
416 | ACPI_RTYPE_INTEGER}}, | 715 | ACPI_RTYPE_INTEGER, |
417 | 716 | ACPI_RTYPE_INTEGER | ACPI_RTYPE_REFERENCE, | |
418 | {{"_PRW", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each: Pkg/Int,Int,[Variable-length Refs] (Pkg is Ref/Int) */ | 717 | ACPI_RTYPE_INTEGER), |
419 | {{{ACPI_PTYPE1_OPTION, 2, ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE, | 718 | |
420 | ACPI_RTYPE_INTEGER}, ACPI_RTYPE_REFERENCE,0}}, | 719 | {{"_PRW", METHOD_0ARGS, |
421 | 720 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: Pkg/Int,Int,[Variable-length Refs] (Pkg is Ref/Int) */ | |
422 | {{"_PS0", 0, 0}}, | 721 | PACKAGE_INFO(ACPI_PTYPE1_OPTION, 2, |
423 | {{"_PS1", 0, 0}}, | 722 | ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE, |
424 | {{"_PS2", 0, 0}}, | 723 | ACPI_RTYPE_INTEGER, ACPI_RTYPE_REFERENCE, 0), |
425 | {{"_PS3", 0, 0}}, | 724 | |
426 | {{"_PSC", 0, ACPI_RTYPE_INTEGER}}, | 725 | {{"_PS0", METHOD_0ARGS, |
427 | {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */ | 726 | METHOD_NO_RETURN_VALUE}}, |
428 | {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}}, | 727 | |
429 | 728 | {{"_PS1", METHOD_0ARGS, | |
430 | {{"_PSE", 1, 0}}, | 729 | METHOD_NO_RETURN_VALUE}}, |
431 | {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 730 | |
432 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 731 | {{"_PS2", METHOD_0ARGS, |
433 | 732 | METHOD_NO_RETURN_VALUE}}, | |
434 | {{"_PSR", 0, ACPI_RTYPE_INTEGER}}, | 733 | |
435 | {{"_PSS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (6 Int) */ | 734 | {{"_PS3", METHOD_0ARGS, |
436 | {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 6,0}, 0,0}}, | 735 | METHOD_NO_RETURN_VALUE}}, |
437 | 736 | ||
438 | {{"_PSV", 0, ACPI_RTYPE_INTEGER}}, | 737 | {{"_PSC", METHOD_0ARGS, |
439 | {{"_PSW", 1, 0}}, | 738 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
440 | {{"_PTC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Buf) */ | 739 | |
441 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0}, 0,0}}, | 740 | {{"_PSD", METHOD_0ARGS, |
442 | 741 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (5 Int) with count */ | |
443 | {{"_PTP", 2, ACPI_RTYPE_INTEGER}}, | 742 | PACKAGE_INFO(ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0, 0, 0, 0), |
444 | {{"_PTS", 1, 0}}, | 743 | |
445 | {{"_PUR", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Int) */ | 744 | {{"_PSE", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
446 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, 0}, 0, 0}}, | 745 | METHOD_NO_RETURN_VALUE}}, |
447 | 746 | ||
448 | {{"_PXM", 0, ACPI_RTYPE_INTEGER}}, | 747 | {{"_PSL", METHOD_0ARGS, |
449 | {{"_REG", 2, 0}}, | 748 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ |
450 | {{"_REV", 0, ACPI_RTYPE_INTEGER}}, | 749 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), |
451 | {{"_RMV", 0, ACPI_RTYPE_INTEGER}}, | 750 | |
452 | {{"_ROM", 2, ACPI_RTYPE_BUFFER}}, | 751 | {{"_PSR", METHOD_0ARGS, |
453 | {{"_RTV", 0, ACPI_RTYPE_INTEGER}}, | 752 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
753 | |||
754 | {{"_PSS", METHOD_0ARGS, | ||
755 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (6 Int) */ | ||
756 | PACKAGE_INFO(ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 6, 0, 0, 0), | ||
757 | |||
758 | {{"_PSV", METHOD_0ARGS, | ||
759 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
760 | |||
761 | {{"_PSW", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
762 | METHOD_NO_RETURN_VALUE}}, | ||
763 | |||
764 | {{"_PTC", METHOD_0ARGS, | ||
765 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Buf) */ | ||
766 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2, 0, 0, 0), | ||
767 | |||
768 | {{"_PTP", METHOD_2ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), | ||
769 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
770 | |||
771 | {{"_PTS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
772 | METHOD_NO_RETURN_VALUE}}, | ||
773 | |||
774 | {{"_PUR", METHOD_0ARGS, | ||
775 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int) */ | ||
776 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, 0, 0, 0), | ||
777 | |||
778 | {{"_PXM", METHOD_0ARGS, | ||
779 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
780 | |||
781 | {{"_REG", METHOD_2ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), | ||
782 | METHOD_NO_RETURN_VALUE}}, | ||
783 | |||
784 | {{"_REV", METHOD_0ARGS, | ||
785 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
786 | |||
787 | {{"_RMV", METHOD_0ARGS, | ||
788 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
789 | |||
790 | {{"_ROM", METHOD_2ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), | ||
791 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
792 | |||
793 | {{"_RTV", METHOD_0ARGS, | ||
794 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
454 | 795 | ||
455 | /* | 796 | /* |
456 | * For _S0_ through _S5_, the ACPI spec defines a return Package | 797 | * For _S0_ through _S5_, the ACPI spec defines a return Package |
@@ -458,111 +799,285 @@ static const union acpi_predefined_info predefined_names[] = { | |||
458 | * Allow this by making the objects "Variable-length length", but all elements | 799 | * Allow this by making the objects "Variable-length length", but all elements |
459 | * must be Integers. | 800 | * must be Integers. |
460 | */ | 801 | */ |
461 | {{"_S0_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */ | 802 | {{"_S0_", METHOD_0ARGS, |
462 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}}, | 803 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ |
463 | 804 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1, 0, 0, 0), | |
464 | {{"_S1_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */ | 805 | |
465 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}}, | 806 | {{"_S1_", METHOD_0ARGS, |
466 | 807 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ | |
467 | {{"_S2_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */ | 808 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1, 0, 0, 0), |
468 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}}, | 809 | |
469 | 810 | {{"_S2_", METHOD_0ARGS, | |
470 | {{"_S3_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */ | 811 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ |
471 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}}, | 812 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1, 0, 0, 0), |
472 | 813 | ||
473 | {{"_S4_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */ | 814 | {{"_S3_", METHOD_0ARGS, |
474 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}}, | 815 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ |
475 | 816 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1, 0, 0, 0), | |
476 | {{"_S5_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */ | 817 | |
477 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}}, | 818 | {{"_S4_", METHOD_0ARGS, |
478 | 819 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ | |
479 | {{"_S1D", 0, ACPI_RTYPE_INTEGER}}, | 820 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1, 0, 0, 0), |
480 | {{"_S2D", 0, ACPI_RTYPE_INTEGER}}, | 821 | |
481 | {{"_S3D", 0, ACPI_RTYPE_INTEGER}}, | 822 | {{"_S5_", METHOD_0ARGS, |
482 | {{"_S4D", 0, ACPI_RTYPE_INTEGER}}, | 823 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ |
483 | {{"_S0W", 0, ACPI_RTYPE_INTEGER}}, | 824 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1, 0, 0, 0), |
484 | {{"_S1W", 0, ACPI_RTYPE_INTEGER}}, | 825 | |
485 | {{"_S2W", 0, ACPI_RTYPE_INTEGER}}, | 826 | {{"_S1D", METHOD_0ARGS, |
486 | {{"_S3W", 0, ACPI_RTYPE_INTEGER}}, | 827 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
487 | {{"_S4W", 0, ACPI_RTYPE_INTEGER}}, | 828 | |
488 | {{"_SBS", 0, ACPI_RTYPE_INTEGER}}, | 829 | {{"_S2D", METHOD_0ARGS, |
489 | {{"_SCP", 0x13, 0}}, /* Acpi 1.0 allowed 1 arg. Acpi 3.0 expanded to 3 args. Allow both. */ | 830 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
490 | /* Note: the 3-arg definition may be removed for ACPI 4.0 */ | 831 | |
491 | {{"_SDD", 1, 0}}, | 832 | {{"_S3D", METHOD_0ARGS, |
492 | {{"_SEG", 0, ACPI_RTYPE_INTEGER}}, | 833 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
493 | {{"_SHL", 1, ACPI_RTYPE_INTEGER}}, | 834 | |
494 | {{"_SLI", 0, ACPI_RTYPE_BUFFER}}, | 835 | {{"_S4D", METHOD_0ARGS, |
495 | {{"_SPD", 1, ACPI_RTYPE_INTEGER}}, | 836 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
496 | {{"_SRS", 1, 0}}, | 837 | |
497 | {{"_SRT", 1, ACPI_RTYPE_INTEGER}}, | 838 | {{"_S0W", METHOD_0ARGS, |
498 | {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */ | 839 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
499 | {{"_SST", 1, 0}}, | 840 | |
500 | {{"_STA", 0, ACPI_RTYPE_INTEGER}}, | 841 | {{"_S1W", METHOD_0ARGS, |
501 | {{"_STM", 3, 0}}, | 842 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
502 | {{"_STP", 2, ACPI_RTYPE_INTEGER}}, | 843 | |
503 | {{"_STR", 0, ACPI_RTYPE_BUFFER}}, | 844 | {{"_S2W", METHOD_0ARGS, |
504 | {{"_STV", 2, ACPI_RTYPE_INTEGER}}, | 845 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
505 | {{"_SUB", 0, ACPI_RTYPE_STRING}}, | 846 | |
506 | {{"_SUN", 0, ACPI_RTYPE_INTEGER}}, | 847 | {{"_S3W", METHOD_0ARGS, |
507 | {{"_SWS", 0, ACPI_RTYPE_INTEGER}}, | 848 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
508 | {{"_TC1", 0, ACPI_RTYPE_INTEGER}}, | 849 | |
509 | {{"_TC2", 0, ACPI_RTYPE_INTEGER}}, | 850 | {{"_S4W", METHOD_0ARGS, |
510 | {{"_TDL", 0, ACPI_RTYPE_INTEGER}}, | 851 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
511 | {{"_TIP", 1, ACPI_RTYPE_INTEGER}}, | 852 | |
512 | {{"_TIV", 1, ACPI_RTYPE_INTEGER}}, | 853 | {{"_SBS", METHOD_0ARGS, |
513 | {{"_TMP", 0, ACPI_RTYPE_INTEGER}}, | 854 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
514 | {{"_TPC", 0, ACPI_RTYPE_INTEGER}}, | 855 | |
515 | {{"_TPT", 1, 0}}, | 856 | {{"_SCP", METHOD_1ARGS(ACPI_TYPE_INTEGER) | ARG_COUNT_IS_MINIMUM, |
516 | {{"_TRT", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 2 Ref/6 Int */ | 857 | METHOD_NO_RETURN_VALUE}}, /* Acpi 1.0 allowed 1 integer arg. Acpi 3.0 expanded to 3 args. Allow both. */ |
517 | {{{ACPI_PTYPE2, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER}, 6, 0}}, | 858 | |
518 | 859 | {{"_SDD", METHOD_1ARGS(ACPI_TYPE_BUFFER), | |
519 | {{"_TSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 5 Int with count */ | 860 | METHOD_NO_RETURN_VALUE}}, |
520 | {{{ACPI_PTYPE2_COUNT,ACPI_RTYPE_INTEGER, 5,0}, 0,0}}, | 861 | |
521 | 862 | {{"_SEG", METHOD_0ARGS, | |
522 | {{"_TSP", 0, ACPI_RTYPE_INTEGER}}, | 863 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
523 | {{"_TSS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 5 Int */ | 864 | |
524 | {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 5,0}, 0,0}}, | 865 | {{"_SHL", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
525 | 866 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | |
526 | {{"_TST", 0, ACPI_RTYPE_INTEGER}}, | 867 | |
527 | {{"_TTS", 1, 0}}, | 868 | {{"_SLI", METHOD_0ARGS, |
528 | {{"_TZD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */ | 869 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, |
529 | {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}}, | 870 | |
530 | 871 | {{"_SPD", METHOD_1ARGS(ACPI_TYPE_INTEGER), | |
531 | {{"_TZM", 0, ACPI_RTYPE_REFERENCE}}, | 872 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
532 | {{"_TZP", 0, ACPI_RTYPE_INTEGER}}, | 873 | |
533 | {{"_UID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}}, | 874 | {{"_SRS", METHOD_1ARGS(ACPI_TYPE_BUFFER), |
534 | {{"_UPC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */ | 875 | METHOD_NO_RETURN_VALUE}}, |
535 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}}, | 876 | |
536 | 877 | {{"_SRT", METHOD_1ARGS(ACPI_TYPE_BUFFER), | |
537 | {{"_UPD", 0, ACPI_RTYPE_INTEGER}}, | 878 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, |
538 | {{"_UPP", 0, ACPI_RTYPE_INTEGER}}, | 879 | |
539 | {{"_VPO", 0, ACPI_RTYPE_INTEGER}}, | 880 | {{"_SRV", METHOD_0ARGS, |
881 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* See IPMI spec */ | ||
882 | |||
883 | {{"_SST", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
884 | METHOD_NO_RETURN_VALUE}}, | ||
885 | |||
886 | {{"_STA", METHOD_0ARGS, | ||
887 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
888 | |||
889 | {{"_STM", | ||
890 | METHOD_3ARGS(ACPI_TYPE_BUFFER, ACPI_TYPE_BUFFER, ACPI_TYPE_BUFFER), | ||
891 | METHOD_NO_RETURN_VALUE}}, | ||
892 | |||
893 | {{"_STP", METHOD_2ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), | ||
894 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
895 | |||
896 | {{"_STR", METHOD_0ARGS, | ||
897 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, | ||
898 | |||
899 | {{"_STV", METHOD_2ARGS(ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), | ||
900 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
901 | |||
902 | {{"_SUB", METHOD_0ARGS, | ||
903 | METHOD_RETURNS(ACPI_RTYPE_STRING)}}, | ||
904 | |||
905 | {{"_SUN", METHOD_0ARGS, | ||
906 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
907 | |||
908 | {{"_SWS", METHOD_0ARGS, | ||
909 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
910 | |||
911 | {{"_TC1", METHOD_0ARGS, | ||
912 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
913 | |||
914 | {{"_TC2", METHOD_0ARGS, | ||
915 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
916 | |||
917 | {{"_TDL", METHOD_0ARGS, | ||
918 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
919 | |||
920 | {{"_TIP", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
921 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
922 | |||
923 | {{"_TIV", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
924 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
925 | |||
926 | {{"_TMP", METHOD_0ARGS, | ||
927 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
928 | |||
929 | {{"_TPC", METHOD_0ARGS, | ||
930 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
931 | |||
932 | {{"_TPT", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
933 | METHOD_NO_RETURN_VALUE}}, | ||
934 | |||
935 | {{"_TRT", METHOD_0ARGS, | ||
936 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 2 Ref/6 Int */ | ||
937 | PACKAGE_INFO(ACPI_PTYPE2, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER, | ||
938 | 6, 0), | ||
939 | |||
940 | {{"_TSD", METHOD_0ARGS, | ||
941 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 5 Int with count */ | ||
942 | PACKAGE_INFO(ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 5, 0, 0, 0), | ||
943 | |||
944 | {{"_TSP", METHOD_0ARGS, | ||
945 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
946 | |||
947 | {{"_TSS", METHOD_0ARGS, | ||
948 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 5 Int */ | ||
949 | PACKAGE_INFO(ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 5, 0, 0, 0), | ||
950 | |||
951 | {{"_TST", METHOD_0ARGS, | ||
952 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
953 | |||
954 | {{"_TTS", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
955 | METHOD_NO_RETURN_VALUE}}, | ||
956 | |||
957 | {{"_TZD", METHOD_0ARGS, | ||
958 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ | ||
959 | PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0, 0, 0), | ||
960 | |||
961 | {{"_TZM", METHOD_0ARGS, | ||
962 | METHOD_RETURNS(ACPI_RTYPE_REFERENCE)}}, | ||
963 | |||
964 | {{"_TZP", METHOD_0ARGS, | ||
965 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
966 | |||
967 | {{"_UID", METHOD_0ARGS, | ||
968 | METHOD_RETURNS(ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING)}}, | ||
969 | |||
970 | {{"_UPC", METHOD_0ARGS, | ||
971 | METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ | ||
972 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0, 0, 0), | ||
973 | |||
974 | {{"_UPD", METHOD_0ARGS, | ||
975 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
976 | |||
977 | {{"_UPP", METHOD_0ARGS, | ||
978 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
979 | |||
980 | {{"_VPO", METHOD_0ARGS, | ||
981 | METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, | ||
540 | 982 | ||
541 | /* Acpi 1.0 defined _WAK with no return value. Later, it was changed to return a package */ | 983 | /* Acpi 1.0 defined _WAK with no return value. Later, it was changed to return a package */ |
542 | 984 | ||
543 | {{"_WAK", 1, | 985 | {{"_WAK", METHOD_1ARGS(ACPI_TYPE_INTEGER), |
544 | ACPI_RTYPE_NONE | ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE}}, | 986 | METHOD_RETURNS(ACPI_RTYPE_NONE | ACPI_RTYPE_INTEGER | |
545 | {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0}, 0,0}}, /* Fixed-length (2 Int), but is optional */ | 987 | ACPI_RTYPE_PACKAGE)}}, |
988 | PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, 0, 0, 0), /* Fixed-length (2 Int), but is optional */ | ||
546 | 989 | ||
547 | /* _WDG/_WED are MS extensions defined by "Windows Instrumentation" */ | 990 | /* _WDG/_WED are MS extensions defined by "Windows Instrumentation" */ |
548 | 991 | ||
549 | {{"_WDG", 0, ACPI_RTYPE_BUFFER}}, | 992 | {{"_WDG", METHOD_0ARGS, |
550 | {{"_WED", 1, | 993 | METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, |
551 | ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER}}, | 994 | |
995 | {{"_WED", METHOD_1ARGS(ACPI_TYPE_INTEGER), | ||
996 | METHOD_RETURNS(ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | | ||
997 | ACPI_RTYPE_BUFFER)}}, | ||
552 | 998 | ||
553 | {{{0, 0, 0, 0}, 0, 0}} /* Table terminator */ | 999 | PACKAGE_INFO(0, 0, 0, 0, 0, 0) /* Table terminator */ |
554 | }; | 1000 | }; |
1001 | #else | ||
1002 | extern const union acpi_predefined_info acpi_gbl_predefined_methods[]; | ||
1003 | #endif | ||
555 | 1004 | ||
556 | #if 0 | 1005 | #if (defined ACPI_CREATE_RESOURCE_TABLE && defined ACPI_APPLICATION) |
1006 | /****************************************************************************** | ||
1007 | * | ||
1008 | * Predefined names for use in Resource Descriptors. These names do not | ||
1009 | * appear in the global Predefined Name table (since these names never | ||
1010 | * appear in actual AML byte code, only in the original ASL) | ||
1011 | * | ||
1012 | * Note: Used by iASL compiler and acpi_help utility only. | ||
1013 | * | ||
1014 | *****************************************************************************/ | ||
557 | 1015 | ||
558 | /* This is an internally implemented control method, no need to check */ | 1016 | const union acpi_predefined_info acpi_gbl_resource_names[] = { |
559 | { { | 1017 | {{"_ADR", WIDTH_16 | WIDTH_64, 0}}, |
560 | "_OSI", 1, ACPI_RTYPE_INTEGER}}, | 1018 | {{"_ALN", WIDTH_8 | WIDTH_16 | WIDTH_32, 0}}, |
1019 | {{"_ASI", WIDTH_8, 0}}, | ||
1020 | {{"_ASZ", WIDTH_8, 0}}, | ||
1021 | {{"_ATT", WIDTH_64, 0}}, | ||
1022 | {{"_BAS", WIDTH_16 | WIDTH_32, 0}}, | ||
1023 | {{"_BM_", WIDTH_1, 0}}, | ||
1024 | {{"_DBT", WIDTH_16, 0}}, /* Acpi 5.0 */ | ||
1025 | {{"_DEC", WIDTH_1, 0}}, | ||
1026 | {{"_DMA", WIDTH_8, 0}}, | ||
1027 | {{"_DPL", WIDTH_1, 0}}, /* Acpi 5.0 */ | ||
1028 | {{"_DRS", WIDTH_16, 0}}, /* Acpi 5.0 */ | ||
1029 | {{"_END", WIDTH_1, 0}}, /* Acpi 5.0 */ | ||
1030 | {{"_FLC", WIDTH_2, 0}}, /* Acpi 5.0 */ | ||
1031 | {{"_GRA", WIDTH_ADDRESS, 0}}, | ||
1032 | {{"_HE_", WIDTH_1, 0}}, | ||
1033 | {{"_INT", WIDTH_16 | WIDTH_32, 0}}, | ||
1034 | {{"_IOR", WIDTH_2, 0}}, /* Acpi 5.0 */ | ||
1035 | {{"_LEN", WIDTH_8 | WIDTH_ADDRESS, 0}}, | ||
1036 | {{"_LIN", WIDTH_8, 0}}, /* Acpi 5.0 */ | ||
1037 | {{"_LL_", WIDTH_1, 0}}, | ||
1038 | {{"_MAF", WIDTH_1, 0}}, | ||
1039 | {{"_MAX", WIDTH_ADDRESS, 0}}, | ||
1040 | {{"_MEM", WIDTH_2, 0}}, | ||
1041 | {{"_MIF", WIDTH_1, 0}}, | ||
1042 | {{"_MIN", WIDTH_ADDRESS, 0}}, | ||
1043 | {{"_MOD", WIDTH_1, 0}}, /* Acpi 5.0 */ | ||
1044 | {{"_MTP", WIDTH_2, 0}}, | ||
1045 | {{"_PAR", WIDTH_8, 0}}, /* Acpi 5.0 */ | ||
1046 | {{"_PHA", WIDTH_1, 0}}, /* Acpi 5.0 */ | ||
1047 | {{"_PIN", WIDTH_16, 0}}, /* Acpi 5.0 */ | ||
1048 | {{"_PPI", WIDTH_8, 0}}, /* Acpi 5.0 */ | ||
1049 | {{"_POL", WIDTH_1 | WIDTH_2, 0}}, /* Acpi 5.0 */ | ||
1050 | {{"_RBO", WIDTH_8, 0}}, | ||
1051 | {{"_RBW", WIDTH_8, 0}}, | ||
1052 | {{"_RNG", WIDTH_1, 0}}, | ||
1053 | {{"_RT_", WIDTH_8, 0}}, /* Acpi 3.0 */ | ||
1054 | {{"_RW_", WIDTH_1, 0}}, | ||
1055 | {{"_RXL", WIDTH_16, 0}}, /* Acpi 5.0 */ | ||
1056 | {{"_SHR", WIDTH_2, 0}}, | ||
1057 | {{"_SIZ", WIDTH_2, 0}}, | ||
1058 | {{"_SLV", WIDTH_1, 0}}, /* Acpi 5.0 */ | ||
1059 | {{"_SPE", WIDTH_32, 0}}, /* Acpi 5.0 */ | ||
1060 | {{"_STB", WIDTH_2, 0}}, /* Acpi 5.0 */ | ||
1061 | {{"_TRA", WIDTH_ADDRESS, 0}}, | ||
1062 | {{"_TRS", WIDTH_1, 0}}, | ||
1063 | {{"_TSF", WIDTH_8, 0}}, /* Acpi 3.0 */ | ||
1064 | {{"_TTP", WIDTH_1, 0}}, | ||
1065 | {{"_TXL", WIDTH_16, 0}}, /* Acpi 5.0 */ | ||
1066 | {{"_TYP", WIDTH_2 | WIDTH_16, 0}}, | ||
1067 | {{"_VEN", VARIABLE_DATA, 0}}, /* Acpi 5.0 */ | ||
1068 | PACKAGE_INFO(0, 0, 0, 0, 0, 0) /* Table terminator */ | ||
1069 | }; | ||
561 | 1070 | ||
562 | /* TBD: */ | 1071 | static const union acpi_predefined_info acpi_gbl_scope_names[] = { |
563 | _PRT - currently ignore reversed entries. attempt to fix here? | 1072 | {{"_GPE", 0, 0}}, |
564 | think about possibly fixing package elements like _BIF, etc. | 1073 | {{"_PR_", 0, 0}}, |
1074 | {{"_SB_", 0, 0}}, | ||
1075 | {{"_SI_", 0, 0}}, | ||
1076 | {{"_TZ_", 0, 0}}, | ||
1077 | PACKAGE_INFO(0, 0, 0, 0, 0, 0) /* Table terminator */ | ||
1078 | }; | ||
1079 | #else | ||
1080 | extern const union acpi_predefined_info acpi_gbl_resource_names[]; | ||
565 | #endif | 1081 | #endif |
566 | 1082 | ||
567 | #endif | 1083 | #endif |
568 | #endif | ||
diff --git a/drivers/acpi/acpica/acutils.h b/drivers/acpi/acpica/acutils.h index c01f1a10a9d7..8c25bb05bb59 100644 --- a/drivers/acpi/acpica/acutils.h +++ b/drivers/acpi/acpica/acutils.h | |||
@@ -432,6 +432,26 @@ struct acpi_interface_info *acpi_ut_get_interface(acpi_string interface_name); | |||
432 | acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state); | 432 | acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state); |
433 | 433 | ||
434 | /* | 434 | /* |
435 | * utpredef - support for predefined names | ||
436 | */ | ||
437 | const union acpi_predefined_info *acpi_ut_get_next_predefined_method(const union | ||
438 | acpi_predefined_info | ||
439 | *this_name); | ||
440 | |||
441 | const union acpi_predefined_info *acpi_ut_match_predefined_method(char *name); | ||
442 | |||
443 | const union acpi_predefined_info *acpi_ut_match_resource_name(char *name); | ||
444 | |||
445 | void | ||
446 | acpi_ut_display_predefined_method(char *buffer, | ||
447 | const union acpi_predefined_info *this_name, | ||
448 | u8 multi_line); | ||
449 | |||
450 | void acpi_ut_get_expected_return_types(char *buffer, u32 expected_btypes); | ||
451 | |||
452 | u32 acpi_ut_get_resource_bit_width(char *buffer, u16 types); | ||
453 | |||
454 | /* | ||
435 | * utstate - Generic state creation/cache routines | 455 | * utstate - Generic state creation/cache routines |
436 | */ | 456 | */ |
437 | void | 457 | void |
diff --git a/drivers/acpi/acpica/nseval.c b/drivers/acpi/acpica/nseval.c index 1538f3eb2a8f..b61db69d5675 100644 --- a/drivers/acpi/acpica/nseval.c +++ b/drivers/acpi/acpica/nseval.c | |||
@@ -98,17 +98,21 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info * info) | |||
98 | info->return_object = NULL; | 98 | info->return_object = NULL; |
99 | info->param_count = 0; | 99 | info->param_count = 0; |
100 | 100 | ||
101 | /* | 101 | if (!info->resolved_node) { |
102 | * Get the actual namespace node for the target object. Handles these cases: | 102 | /* |
103 | * | 103 | * Get the actual namespace node for the target object if we need to. |
104 | * 1) Null node, Pathname (absolute path) | 104 | * Handles these cases: |
105 | * 2) Node, Pathname (path relative to Node) | 105 | * |
106 | * 3) Node, Null Pathname | 106 | * 1) Null node, Pathname (absolute path) |
107 | */ | 107 | * 2) Node, Pathname (path relative to Node) |
108 | status = acpi_ns_get_node(info->prefix_node, info->pathname, | 108 | * 3) Node, Null Pathname |
109 | ACPI_NS_NO_UPSEARCH, &info->resolved_node); | 109 | */ |
110 | if (ACPI_FAILURE(status)) { | 110 | status = acpi_ns_get_node(info->prefix_node, info->pathname, |
111 | return_ACPI_STATUS(status); | 111 | ACPI_NS_NO_UPSEARCH, |
112 | &info->resolved_node); | ||
113 | if (ACPI_FAILURE(status)) { | ||
114 | return_ACPI_STATUS(status); | ||
115 | } | ||
112 | } | 116 | } |
113 | 117 | ||
114 | /* | 118 | /* |
diff --git a/drivers/acpi/acpica/nspredef.c b/drivers/acpi/acpica/nspredef.c index 36f724085dca..8a52916148cb 100644 --- a/drivers/acpi/acpica/nspredef.c +++ b/drivers/acpi/acpica/nspredef.c | |||
@@ -76,22 +76,8 @@ static acpi_status | |||
76 | acpi_ns_check_reference(struct acpi_predefined_data *data, | 76 | acpi_ns_check_reference(struct acpi_predefined_data *data, |
77 | union acpi_operand_object *return_object); | 77 | union acpi_operand_object *return_object); |
78 | 78 | ||
79 | static void acpi_ns_get_expected_types(char *buffer, u32 expected_btypes); | ||
80 | |||
81 | static u32 acpi_ns_get_bitmapped_type(union acpi_operand_object *return_object); | 79 | static u32 acpi_ns_get_bitmapped_type(union acpi_operand_object *return_object); |
82 | 80 | ||
83 | /* | ||
84 | * Names for the types that can be returned by the predefined objects. | ||
85 | * Used for warning messages. Must be in the same order as the ACPI_RTYPEs | ||
86 | */ | ||
87 | static const char *acpi_rtype_names[] = { | ||
88 | "/Integer", | ||
89 | "/String", | ||
90 | "/Buffer", | ||
91 | "/Package", | ||
92 | "/Reference", | ||
93 | }; | ||
94 | |||
95 | /******************************************************************************* | 81 | /******************************************************************************* |
96 | * | 82 | * |
97 | * FUNCTION: acpi_ns_check_predefined_names | 83 | * FUNCTION: acpi_ns_check_predefined_names |
@@ -121,7 +107,7 @@ acpi_ns_check_predefined_names(struct acpi_namespace_node *node, | |||
121 | 107 | ||
122 | /* Match the name for this method/object against the predefined list */ | 108 | /* Match the name for this method/object against the predefined list */ |
123 | 109 | ||
124 | predefined = acpi_ns_check_for_predefined_name(node); | 110 | predefined = acpi_ut_match_predefined_method(node->name.ascii); |
125 | 111 | ||
126 | /* Get the full pathname to the object, for use in warning messages */ | 112 | /* Get the full pathname to the object, for use in warning messages */ |
127 | 113 | ||
@@ -292,8 +278,10 @@ acpi_ns_check_parameter_count(char *pathname, | |||
292 | * Validate the user-supplied parameter count. | 278 | * Validate the user-supplied parameter count. |
293 | * Allow two different legal argument counts (_SCP, etc.) | 279 | * Allow two different legal argument counts (_SCP, etc.) |
294 | */ | 280 | */ |
295 | required_params_current = predefined->info.param_count & 0x0F; | 281 | required_params_current = |
296 | required_params_old = predefined->info.param_count >> 4; | 282 | predefined->info.argument_list & METHOD_ARG_MASK; |
283 | required_params_old = | ||
284 | predefined->info.argument_list >> METHOD_ARG_BIT_WIDTH; | ||
297 | 285 | ||
298 | if (user_param_count != ACPI_UINT32_MAX) { | 286 | if (user_param_count != ACPI_UINT32_MAX) { |
299 | if ((user_param_count != required_params_current) && | 287 | if ((user_param_count != required_params_current) && |
@@ -322,52 +310,6 @@ acpi_ns_check_parameter_count(char *pathname, | |||
322 | 310 | ||
323 | /******************************************************************************* | 311 | /******************************************************************************* |
324 | * | 312 | * |
325 | * FUNCTION: acpi_ns_check_for_predefined_name | ||
326 | * | ||
327 | * PARAMETERS: node - Namespace node for the method/object | ||
328 | * | ||
329 | * RETURN: Pointer to entry in predefined table. NULL indicates not found. | ||
330 | * | ||
331 | * DESCRIPTION: Check an object name against the predefined object list. | ||
332 | * | ||
333 | ******************************************************************************/ | ||
334 | |||
335 | const union acpi_predefined_info *acpi_ns_check_for_predefined_name(struct | ||
336 | acpi_namespace_node | ||
337 | *node) | ||
338 | { | ||
339 | const union acpi_predefined_info *this_name; | ||
340 | |||
341 | /* Quick check for a predefined name, first character must be underscore */ | ||
342 | |||
343 | if (node->name.ascii[0] != '_') { | ||
344 | return (NULL); | ||
345 | } | ||
346 | |||
347 | /* Search info table for a predefined method/object name */ | ||
348 | |||
349 | this_name = predefined_names; | ||
350 | while (this_name->info.name[0]) { | ||
351 | if (ACPI_COMPARE_NAME(node->name.ascii, this_name->info.name)) { | ||
352 | return (this_name); | ||
353 | } | ||
354 | |||
355 | /* | ||
356 | * Skip next entry in the table if this name returns a Package | ||
357 | * (next entry contains the package info) | ||
358 | */ | ||
359 | if (this_name->info.expected_btypes & ACPI_RTYPE_PACKAGE) { | ||
360 | this_name++; | ||
361 | } | ||
362 | |||
363 | this_name++; | ||
364 | } | ||
365 | |||
366 | return (NULL); /* Not found */ | ||
367 | } | ||
368 | |||
369 | /******************************************************************************* | ||
370 | * | ||
371 | * FUNCTION: acpi_ns_check_object_type | 313 | * FUNCTION: acpi_ns_check_object_type |
372 | * | 314 | * |
373 | * PARAMETERS: data - Pointer to validation data structure | 315 | * PARAMETERS: data - Pointer to validation data structure |
@@ -438,7 +380,7 @@ acpi_ns_check_object_type(struct acpi_predefined_data *data, | |||
438 | 380 | ||
439 | /* Create a string with all expected types for this predefined object */ | 381 | /* Create a string with all expected types for this predefined object */ |
440 | 382 | ||
441 | acpi_ns_get_expected_types(type_buffer, expected_btypes); | 383 | acpi_ut_get_expected_return_types(type_buffer, expected_btypes); |
442 | 384 | ||
443 | if (package_index == ACPI_NOT_PACKAGE_ELEMENT) { | 385 | if (package_index == ACPI_NOT_PACKAGE_ELEMENT) { |
444 | ACPI_WARN_PREDEFINED((AE_INFO, data->pathname, data->node_flags, | 386 | ACPI_WARN_PREDEFINED((AE_INFO, data->pathname, data->node_flags, |
@@ -548,39 +490,3 @@ static u32 acpi_ns_get_bitmapped_type(union acpi_operand_object *return_object) | |||
548 | 490 | ||
549 | return (return_btype); | 491 | return (return_btype); |
550 | } | 492 | } |
551 | |||
552 | /******************************************************************************* | ||
553 | * | ||
554 | * FUNCTION: acpi_ns_get_expected_types | ||
555 | * | ||
556 | * PARAMETERS: buffer - Pointer to where the string is returned | ||
557 | * expected_btypes - Bitmap of expected return type(s) | ||
558 | * | ||
559 | * RETURN: Buffer is populated with type names. | ||
560 | * | ||
561 | * DESCRIPTION: Translate the expected types bitmap into a string of ascii | ||
562 | * names of expected types, for use in warning messages. | ||
563 | * | ||
564 | ******************************************************************************/ | ||
565 | |||
566 | static void acpi_ns_get_expected_types(char *buffer, u32 expected_btypes) | ||
567 | { | ||
568 | u32 this_rtype; | ||
569 | u32 i; | ||
570 | u32 j; | ||
571 | |||
572 | j = 1; | ||
573 | buffer[0] = 0; | ||
574 | this_rtype = ACPI_RTYPE_INTEGER; | ||
575 | |||
576 | for (i = 0; i < ACPI_NUM_RTYPES; i++) { | ||
577 | |||
578 | /* If one of the expected types, concatenate the name of this type */ | ||
579 | |||
580 | if (expected_btypes & this_rtype) { | ||
581 | ACPI_STRCAT(buffer, &acpi_rtype_names[i][j]); | ||
582 | j = 0; /* Use name separator from now on */ | ||
583 | } | ||
584 | this_rtype <<= 1; /* Next Rtype */ | ||
585 | } | ||
586 | } | ||
diff --git a/drivers/acpi/acpica/utpredef.c b/drivers/acpi/acpica/utpredef.c new file mode 100644 index 000000000000..29459479148f --- /dev/null +++ b/drivers/acpi/acpica/utpredef.c | |||
@@ -0,0 +1,399 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Module Name: utpredef - support functions for predefined names | ||
4 | * | ||
5 | *****************************************************************************/ | ||
6 | |||
7 | /* | ||
8 | * Copyright (C) 2000 - 2013, 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 | #include <acpi/acpi.h> | ||
45 | #include "accommon.h" | ||
46 | #include "acpredef.h" | ||
47 | |||
48 | #define _COMPONENT ACPI_UTILITIES | ||
49 | ACPI_MODULE_NAME("utpredef") | ||
50 | |||
51 | /* | ||
52 | * Names for the types that can be returned by the predefined objects. | ||
53 | * Used for warning messages. Must be in the same order as the ACPI_RTYPEs | ||
54 | */ | ||
55 | static const char *ut_rtype_names[] = { | ||
56 | "/Integer", | ||
57 | "/String", | ||
58 | "/Buffer", | ||
59 | "/Package", | ||
60 | "/Reference", | ||
61 | }; | ||
62 | |||
63 | /******************************************************************************* | ||
64 | * | ||
65 | * FUNCTION: acpi_ut_get_next_predefined_method | ||
66 | * | ||
67 | * PARAMETERS: this_name - Entry in the predefined method/name table | ||
68 | * | ||
69 | * RETURN: Pointer to next entry in predefined table. | ||
70 | * | ||
71 | * DESCRIPTION: Get the next entry in the predefine method table. Handles the | ||
72 | * cases where a package info entry follows a method name that | ||
73 | * returns a package. | ||
74 | * | ||
75 | ******************************************************************************/ | ||
76 | |||
77 | const union acpi_predefined_info *acpi_ut_get_next_predefined_method(const union | ||
78 | acpi_predefined_info | ||
79 | *this_name) | ||
80 | { | ||
81 | |||
82 | /* | ||
83 | * Skip next entry in the table if this name returns a Package | ||
84 | * (next entry contains the package info) | ||
85 | */ | ||
86 | if ((this_name->info.expected_btypes & ACPI_RTYPE_PACKAGE) && | ||
87 | (this_name->info.expected_btypes != ACPI_RTYPE_ALL)) { | ||
88 | this_name++; | ||
89 | } | ||
90 | |||
91 | this_name++; | ||
92 | return (this_name); | ||
93 | } | ||
94 | |||
95 | /******************************************************************************* | ||
96 | * | ||
97 | * FUNCTION: acpi_ut_match_predefined_method | ||
98 | * | ||
99 | * PARAMETERS: name - Name to find | ||
100 | * | ||
101 | * RETURN: Pointer to entry in predefined table. NULL indicates not found. | ||
102 | * | ||
103 | * DESCRIPTION: Check an object name against the predefined object list. | ||
104 | * | ||
105 | ******************************************************************************/ | ||
106 | |||
107 | const union acpi_predefined_info *acpi_ut_match_predefined_method(char *name) | ||
108 | { | ||
109 | const union acpi_predefined_info *this_name; | ||
110 | |||
111 | /* Quick check for a predefined name, first character must be underscore */ | ||
112 | |||
113 | if (name[0] != '_') { | ||
114 | return (NULL); | ||
115 | } | ||
116 | |||
117 | /* Search info table for a predefined method/object name */ | ||
118 | |||
119 | this_name = acpi_gbl_predefined_methods; | ||
120 | while (this_name->info.name[0]) { | ||
121 | if (ACPI_COMPARE_NAME(name, this_name->info.name)) { | ||
122 | return (this_name); | ||
123 | } | ||
124 | |||
125 | this_name = acpi_ut_get_next_predefined_method(this_name); | ||
126 | } | ||
127 | |||
128 | return (NULL); /* Not found */ | ||
129 | } | ||
130 | |||
131 | /******************************************************************************* | ||
132 | * | ||
133 | * FUNCTION: acpi_ut_get_expected_return_types | ||
134 | * | ||
135 | * PARAMETERS: buffer - Where the formatted string is returned | ||
136 | * expected_Btypes - Bitfield of expected data types | ||
137 | * | ||
138 | * RETURN: Formatted string in Buffer. | ||
139 | * | ||
140 | * DESCRIPTION: Format the expected object types into a printable string. | ||
141 | * | ||
142 | ******************************************************************************/ | ||
143 | |||
144 | void acpi_ut_get_expected_return_types(char *buffer, u32 expected_btypes) | ||
145 | { | ||
146 | u32 this_rtype; | ||
147 | u32 i; | ||
148 | u32 j; | ||
149 | |||
150 | j = 1; | ||
151 | buffer[0] = 0; | ||
152 | this_rtype = ACPI_RTYPE_INTEGER; | ||
153 | |||
154 | for (i = 0; i < ACPI_NUM_RTYPES; i++) { | ||
155 | |||
156 | /* If one of the expected types, concatenate the name of this type */ | ||
157 | |||
158 | if (expected_btypes & this_rtype) { | ||
159 | ACPI_STRCAT(buffer, &ut_rtype_names[i][j]); | ||
160 | j = 0; /* Use name separator from now on */ | ||
161 | } | ||
162 | |||
163 | this_rtype <<= 1; /* Next Rtype */ | ||
164 | } | ||
165 | } | ||
166 | |||
167 | /******************************************************************************* | ||
168 | * | ||
169 | * The remaining functions are used by iASL and acpi_help only | ||
170 | * | ||
171 | ******************************************************************************/ | ||
172 | |||
173 | #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) | ||
174 | #include <stdio.h> | ||
175 | #include <string.h> | ||
176 | |||
177 | /* Local prototypes */ | ||
178 | |||
179 | static u32 acpi_ut_get_argument_types(char *buffer, u16 argument_types); | ||
180 | |||
181 | /* Types that can be returned externally by a predefined name */ | ||
182 | |||
183 | static const char *ut_external_type_names[] = /* Indexed by ACPI_TYPE_* */ | ||
184 | { | ||
185 | ", UNSUPPORTED-TYPE", | ||
186 | ", Integer", | ||
187 | ", String", | ||
188 | ", Buffer", | ||
189 | ", Package" | ||
190 | }; | ||
191 | |||
192 | /* Bit widths for resource descriptor predefined names */ | ||
193 | |||
194 | static const char *ut_resource_type_names[] = { | ||
195 | "/1", | ||
196 | "/2", | ||
197 | "/3", | ||
198 | "/8", | ||
199 | "/16", | ||
200 | "/32", | ||
201 | "/64", | ||
202 | "/variable", | ||
203 | }; | ||
204 | |||
205 | /******************************************************************************* | ||
206 | * | ||
207 | * FUNCTION: acpi_ut_match_resource_name | ||
208 | * | ||
209 | * PARAMETERS: name - Name to find | ||
210 | * | ||
211 | * RETURN: Pointer to entry in the resource table. NULL indicates not | ||
212 | * found. | ||
213 | * | ||
214 | * DESCRIPTION: Check an object name against the predefined resource | ||
215 | * descriptor object list. | ||
216 | * | ||
217 | ******************************************************************************/ | ||
218 | |||
219 | const union acpi_predefined_info *acpi_ut_match_resource_name(char *name) | ||
220 | { | ||
221 | const union acpi_predefined_info *this_name; | ||
222 | |||
223 | /* Quick check for a predefined name, first character must be underscore */ | ||
224 | |||
225 | if (name[0] != '_') { | ||
226 | return (NULL); | ||
227 | } | ||
228 | |||
229 | /* Search info table for a predefined method/object name */ | ||
230 | |||
231 | this_name = acpi_gbl_resource_names; | ||
232 | while (this_name->info.name[0]) { | ||
233 | if (ACPI_COMPARE_NAME(name, this_name->info.name)) { | ||
234 | return (this_name); | ||
235 | } | ||
236 | |||
237 | this_name++; | ||
238 | } | ||
239 | |||
240 | return (NULL); /* Not found */ | ||
241 | } | ||
242 | |||
243 | /******************************************************************************* | ||
244 | * | ||
245 | * FUNCTION: acpi_ut_display_predefined_method | ||
246 | * | ||
247 | * PARAMETERS: buffer - Scratch buffer for this function | ||
248 | * this_name - Entry in the predefined method/name table | ||
249 | * multi_line - TRUE if output should be on >1 line | ||
250 | * | ||
251 | * RETURN: None | ||
252 | * | ||
253 | * DESCRIPTION: Display information about a predefined method. Number and | ||
254 | * type of the input arguments, and expected type(s) for the | ||
255 | * return value, if any. | ||
256 | * | ||
257 | ******************************************************************************/ | ||
258 | |||
259 | void | ||
260 | acpi_ut_display_predefined_method(char *buffer, | ||
261 | const union acpi_predefined_info *this_name, | ||
262 | u8 multi_line) | ||
263 | { | ||
264 | u32 arg_count; | ||
265 | |||
266 | /* | ||
267 | * Get the argument count and the string buffer | ||
268 | * containing all argument types | ||
269 | */ | ||
270 | arg_count = acpi_ut_get_argument_types(buffer, | ||
271 | this_name->info.argument_list); | ||
272 | |||
273 | if (multi_line) { | ||
274 | printf(" "); | ||
275 | } | ||
276 | |||
277 | printf("%4.4s Requires %s%u argument%s", | ||
278 | this_name->info.name, | ||
279 | (this_name->info.argument_list & ARG_COUNT_IS_MINIMUM) ? | ||
280 | "(at least) " : "", arg_count, arg_count != 1 ? "s" : ""); | ||
281 | |||
282 | /* Display the types for any arguments */ | ||
283 | |||
284 | if (arg_count > 0) { | ||
285 | printf(" (%s)", buffer); | ||
286 | } | ||
287 | |||
288 | if (multi_line) { | ||
289 | printf("\n "); | ||
290 | } | ||
291 | |||
292 | /* Get the return value type(s) allowed */ | ||
293 | |||
294 | if (this_name->info.expected_btypes) { | ||
295 | acpi_ut_get_expected_return_types(buffer, | ||
296 | this_name->info. | ||
297 | expected_btypes); | ||
298 | printf(" Return value types: %s\n", buffer); | ||
299 | } else { | ||
300 | printf(" No return value\n"); | ||
301 | } | ||
302 | } | ||
303 | |||
304 | /******************************************************************************* | ||
305 | * | ||
306 | * FUNCTION: acpi_ut_get_argument_types | ||
307 | * | ||
308 | * PARAMETERS: buffer - Where to return the formatted types | ||
309 | * argument_types - Types field for this method | ||
310 | * | ||
311 | * RETURN: count - the number of arguments required for this method | ||
312 | * | ||
313 | * DESCRIPTION: Format the required data types for this method (Integer, | ||
314 | * String, Buffer, or Package) and return the required argument | ||
315 | * count. | ||
316 | * | ||
317 | ******************************************************************************/ | ||
318 | |||
319 | static u32 acpi_ut_get_argument_types(char *buffer, u16 argument_types) | ||
320 | { | ||
321 | u16 this_argument_type; | ||
322 | u16 sub_index; | ||
323 | u16 arg_count; | ||
324 | u32 i; | ||
325 | |||
326 | *buffer = 0; | ||
327 | sub_index = 2; | ||
328 | |||
329 | /* First field in the types list is the count of args to follow */ | ||
330 | |||
331 | arg_count = (argument_types & METHOD_ARG_MASK); | ||
332 | argument_types >>= METHOD_ARG_BIT_WIDTH; | ||
333 | |||
334 | if (arg_count > METHOD_PREDEF_ARGS_MAX) { | ||
335 | printf("**** Invalid argument count (%u) " | ||
336 | "in predefined info structure\n", arg_count); | ||
337 | return (arg_count); | ||
338 | } | ||
339 | |||
340 | /* Get each argument from the list, convert to ascii, store to buffer */ | ||
341 | |||
342 | for (i = 0; i < arg_count; i++) { | ||
343 | this_argument_type = (argument_types & METHOD_ARG_MASK); | ||
344 | if (!this_argument_type | ||
345 | || (this_argument_type > METHOD_MAX_ARG_TYPE)) { | ||
346 | printf("**** Invalid argument type (%u) " | ||
347 | "in predefined info structure\n", | ||
348 | this_argument_type); | ||
349 | return (arg_count); | ||
350 | } | ||
351 | |||
352 | strcat(buffer, | ||
353 | ut_external_type_names[this_argument_type] + sub_index); | ||
354 | |||
355 | /* Shift to next argument type field */ | ||
356 | |||
357 | argument_types >>= METHOD_ARG_BIT_WIDTH; | ||
358 | sub_index = 0; | ||
359 | } | ||
360 | |||
361 | return (arg_count); | ||
362 | } | ||
363 | |||
364 | /******************************************************************************* | ||
365 | * | ||
366 | * FUNCTION: acpi_ut_get_resource_bit_width | ||
367 | * | ||
368 | * PARAMETERS: buffer - Where the formatted string is returned | ||
369 | * types - Bitfield of expected data types | ||
370 | * | ||
371 | * RETURN: Count of return types. Formatted string in Buffer. | ||
372 | * | ||
373 | * DESCRIPTION: Format the resource bit widths into a printable string. | ||
374 | * | ||
375 | ******************************************************************************/ | ||
376 | |||
377 | u32 acpi_ut_get_resource_bit_width(char *buffer, u16 types) | ||
378 | { | ||
379 | u32 i; | ||
380 | u16 sub_index; | ||
381 | u32 found; | ||
382 | |||
383 | *buffer = 0; | ||
384 | sub_index = 1; | ||
385 | found = 0; | ||
386 | |||
387 | for (i = 0; i < NUM_RESOURCE_WIDTHS; i++) { | ||
388 | if (types & 1) { | ||
389 | strcat(buffer, &(ut_resource_type_names[i][sub_index])); | ||
390 | sub_index = 0; | ||
391 | found++; | ||
392 | } | ||
393 | |||
394 | types >>= 1; | ||
395 | } | ||
396 | |||
397 | return (found); | ||
398 | } | ||
399 | #endif | ||