ACPI 5.0: Add new predefined names
[linux-2.6.git] / drivers / acpi / acpica / acpredef.h
1 /******************************************************************************
2  *
3  * Name: acpredef - Information table for ACPI predefined methods and objects
4  *              $Revision: 1.1 $
5  *
6  *****************************************************************************/
7
8 /*
9  * Copyright (C) 2000 - 2011, Intel Corp.
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions, and the following disclaimer,
17  *    without modification.
18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19  *    substantially similar to the "NO WARRANTY" disclaimer below
20  *    ("Disclaimer") and any redistribution must be conditioned upon
21  *    including a substantially similar Disclaimer requirement for further
22  *    binary redistribution.
23  * 3. Neither the names of the above-listed copyright holders nor the names
24  *    of any contributors may be used to endorse or promote products derived
25  *    from this software without specific prior written permission.
26  *
27  * Alternatively, this software may be distributed under the terms of the
28  * GNU General Public License ("GPL") version 2 as published by the Free
29  * Software Foundation.
30  *
31  * NO WARRANTY
32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42  * POSSIBILITY OF SUCH DAMAGES.
43  */
44
45 #ifndef __ACPREDEF_H__
46 #define __ACPREDEF_H__
47
48 /******************************************************************************
49  *
50  * Return Package types
51  *
52  * 1) PTYPE1 packages do not contain sub-packages.
53  *
54  * ACPI_PTYPE1_FIXED: Fixed length, 1 or 2 object types:
55  *      object type
56  *      count
57  *      object type
58  *      count
59  *
60  * ACPI_PTYPE1_VAR: Variable length:
61  *      object type (Int/Buf/Ref)
62  *
63  * ACPI_PTYPE1_OPTION: Package has some required and some optional elements
64  *      (Used for _PRW)
65  *
66  *
67  * 2) PTYPE2 packages contain a Variable-length number of sub-packages. Each
68  *    of the different types describe the contents of each of the sub-packages.
69  *
70  * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types:
71  *      object type
72  *      count
73  *      object type
74  *      count
75  *      (Used for _ALR,_MLS,_PSS,_TRT,_TSS)
76  *
77  * ACPI_PTYPE2_COUNT: Each subpackage has a count as first element:
78  *      object type
79  *      (Used for _CSD,_PSD,_TSD)
80  *
81  * ACPI_PTYPE2_PKG_COUNT: Count of subpackages at start, 1 or 2 object types:
82  *      object type
83  *      count
84  *      object type
85  *      count
86  *      (Used for _CST)
87  *
88  * ACPI_PTYPE2_FIXED: Each subpackage is of fixed length
89  *      (Used for _PRT)
90  *
91  * ACPI_PTYPE2_MIN: Each subpackage has a variable but minimum length
92  *      (Used for _HPX)
93  *
94  * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
95  *      (Used for _ART, _FPS)
96  *
97  * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements
98  *      followed by an optional element
99  *      object type
100  *      count
101  *      object type
102  *      count = 0 (optional)
103  *      (Used for _DLM)
104  *
105  *****************************************************************************/
106
107 enum acpi_return_package_types {
108         ACPI_PTYPE1_FIXED = 1,
109         ACPI_PTYPE1_VAR = 2,
110         ACPI_PTYPE1_OPTION = 3,
111         ACPI_PTYPE2 = 4,
112         ACPI_PTYPE2_COUNT = 5,
113         ACPI_PTYPE2_PKG_COUNT = 6,
114         ACPI_PTYPE2_FIXED = 7,
115         ACPI_PTYPE2_MIN = 8,
116         ACPI_PTYPE2_REV_FIXED = 9,
117         ACPI_PTYPE2_FIX_VAR = 10
118 };
119
120 #ifdef ACPI_CREATE_PREDEFINED_TABLE
121 /*
122  * Predefined method/object information table.
123  *
124  * These are the names that can actually be evaluated via acpi_evaluate_object.
125  * Not present in this table are the following:
126  *
127  *      1) Predefined/Reserved names that are never evaluated via acpi_evaluate_object:
128  *          _Lxx and _Exx GPE methods
129  *          _Qxx EC methods
130  *          _T_x compiler temporary variables
131  *
132  *      2) Predefined names that never actually exist within the AML code:
133  *          Predefined resource descriptor field names
134  *
135  *      3) Predefined names that are implemented within ACPICA:
136  *          _OSI
137  *
138  *      4) Some predefined names that are not documented within the ACPI spec.
139  *          _WDG, _WED
140  *
141  * The main entries in the table each contain the following items:
142  *
143  * Name                 - The ACPI reserved name
144  * param_count          - Number of arguments to the method
145  * expected_btypes      - Allowed type(s) for the return value.
146  *                        0 means that no return value is expected.
147  *
148  * For methods that return packages, the next entry in the table contains
149  * information about the expected structure of the package. This information
150  * is saved here (rather than in a separate table) in order to minimize the
151  * overall size of the stored data.
152  */
153 static const union acpi_predefined_info predefined_names[] =
154 {
155         {{"_AC0", 0, ACPI_RTYPE_INTEGER}},
156         {{"_AC1", 0, ACPI_RTYPE_INTEGER}},
157         {{"_AC2", 0, ACPI_RTYPE_INTEGER}},
158         {{"_AC3", 0, ACPI_RTYPE_INTEGER}},
159         {{"_AC4", 0, ACPI_RTYPE_INTEGER}},
160         {{"_AC5", 0, ACPI_RTYPE_INTEGER}},
161         {{"_AC6", 0, ACPI_RTYPE_INTEGER}},
162         {{"_AC7", 0, ACPI_RTYPE_INTEGER}},
163         {{"_AC8", 0, ACPI_RTYPE_INTEGER}},
164         {{"_AC9", 0, ACPI_RTYPE_INTEGER}},
165         {{"_ADR", 0, ACPI_RTYPE_INTEGER}},
166         {{"_AEI", 0, ACPI_RTYPE_BUFFER}},
167         {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
168                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
169
170         {{"_AL1", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
171                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
172
173         {{"_AL2", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
174                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
175
176         {{"_AL3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
177                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
178
179         {{"_AL4", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
180                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
181
182         {{"_AL5", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
183                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
184
185         {{"_AL6", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
186                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
187
188         {{"_AL7", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
189                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
190
191         {{"_AL8", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
192                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
193
194         {{"_AL9", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
195                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
196
197         {{"_ALC", 0, ACPI_RTYPE_INTEGER}},
198         {{"_ALI", 0, ACPI_RTYPE_INTEGER}},
199         {{"_ALP", 0, ACPI_RTYPE_INTEGER}},
200         {{"_ALR", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 2 (Ints) */
201                           {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 2,0}, 0,0}},
202
203         {{"_ALT", 0, ACPI_RTYPE_INTEGER}},
204         {{"_ART", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (1 Int(rev), n Pkg (2 Ref/11 Int) */
205         {{{ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER},
206           11, 0}},
207
208         {{"_BBN", 0, ACPI_RTYPE_INTEGER}},
209         {{"_BCL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
210                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
211
212         {{"_BCM", 1, 0}},
213         {{"_BCT", 1, ACPI_RTYPE_INTEGER}},
214         {{"_BDN", 0, ACPI_RTYPE_INTEGER}},
215         {{"_BFS", 1, 0}},
216         {{"_BIF", 0, ACPI_RTYPE_PACKAGE} }, /* Fixed-length (9 Int),(4 Str/Buf) */
217                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9,
218                              ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER}, 4, 0} },
219
220         {{"_BIX", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (16 Int),(4 Str) */
221         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, ACPI_RTYPE_STRING}, 4,
222           0}},
223
224         {{"_BLT", 3, 0}},
225         {{"_BMA", 1, ACPI_RTYPE_INTEGER}},
226         {{"_BMC", 1, 0}},
227         {{"_BMD", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (5 Int) */
228                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
229
230         {{"_BMS", 1, ACPI_RTYPE_INTEGER}},
231         {{"_BQC", 0, ACPI_RTYPE_INTEGER}},
232         {{"_BST", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
233                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}},
234
235         {{"_BTM", 1, ACPI_RTYPE_INTEGER}},
236         {{"_BTP", 1, 0}},
237         {{"_CBA", 0, ACPI_RTYPE_INTEGER}}, /* See PCI firmware spec 3.0 */
238         {{"_CDM", 0, ACPI_RTYPE_INTEGER}},
239         {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
240                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
241
242         {{"_CLS", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (3 Int) */
243         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
244
245         {{"_CPC", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Ints/Bufs) */
246         {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0, 0}, 0,
247           0}},
248
249         {{"_CRS", 0, ACPI_RTYPE_BUFFER}},
250         {{"_CRT", 0, ACPI_RTYPE_INTEGER}},
251         {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
252                           {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
253
254         {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
255                           {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
256
257         {{"_CWS", 1, ACPI_RTYPE_INTEGER}},
258         {{"_DCK", 1, ACPI_RTYPE_INTEGER}},
259         {{"_DCS", 0, ACPI_RTYPE_INTEGER}},
260         {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
261         {{"_DDN", 0, ACPI_RTYPE_STRING}},
262         {{"_DEP", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Refs) */
263         {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
264
265         {{"_DGS", 0, ACPI_RTYPE_INTEGER}},
266         {{"_DIS", 0, 0}},
267
268         {{"_DLM", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */
269         {{{ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1,
270            ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER}, 0, 0}},
271
272         {{"_DMA", 0, ACPI_RTYPE_BUFFER}},
273         {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
274                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
275
276         {{"_DOS", 1, 0}},
277         {{"_DSM", 4, ACPI_RTYPE_ALL}},     /* Must return a type, but it can be of any type */
278         {{"_DSS", 1, 0}},
279         {{"_DSW", 3, 0}},
280         {{"_DTI", 1, 0}},
281         {{"_EC_", 0, ACPI_RTYPE_INTEGER}},
282         {{"_EDL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs)*/
283                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
284
285         {{"_EJ0", 1, 0}},
286         {{"_EJ1", 1, 0}},
287         {{"_EJ2", 1, 0}},
288         {{"_EJ3", 1, 0}},
289         {{"_EJ4", 1, 0}},
290         {{"_EJD", 0, ACPI_RTYPE_STRING}},
291         {{"_EVT", 1, 0}},
292         {{"_FDE", 0, ACPI_RTYPE_BUFFER}},
293         {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
294                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
295
296         {{"_FDM", 1, 0}},
297         {{"_FIF", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (4 Int) */
298                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0}, 0, 0}},
299
300         {{"_FIX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
301                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
302
303         {{"_FPS", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (1 Int(rev), n Pkg (5 Int) */
304         {{{ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_INTEGER, 5, 0}, 0, 0}},
305
306         {{"_FSL", 1, 0}},
307         {{"_FST", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (3 Int) */
308         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
309
310         {{"_GAI", 0, ACPI_RTYPE_INTEGER}},
311         {{"_GCP", 0, ACPI_RTYPE_INTEGER}},
312         {{"_GHL", 0, ACPI_RTYPE_INTEGER}},
313         {{"_GLK", 0, ACPI_RTYPE_INTEGER}},
314         {{"_GPD", 0, ACPI_RTYPE_INTEGER}},
315         {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
316         {{"_GRT", 0, ACPI_RTYPE_BUFFER}},
317         {{"_GSB", 0, ACPI_RTYPE_INTEGER}},
318         {{"_GTF", 0, ACPI_RTYPE_BUFFER}},
319         {{"_GTM", 0, ACPI_RTYPE_BUFFER}},
320         {{"_GTS", 1, 0}},
321         {{"_GWS", 1, ACPI_RTYPE_INTEGER}},
322         {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
323         {{"_HOT", 0, ACPI_RTYPE_INTEGER}},
324         {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
325                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}},
326
327         /*
328          * For _HPX, a single package is returned, containing a Variable-length number
329          * of sub-packages. Each sub-package contains a PCI record setting.
330          * There are several different type of record settings, of different
331          * lengths, but all elements of all settings are Integers.
332          */
333         {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
334                           {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
335
336         {{"_HRV", 0, ACPI_RTYPE_INTEGER}},
337         {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
338         {{"_INI", 0, 0}},
339         {{"_IRC", 0, 0}},
340         {{"_LCK", 1, 0}},
341         {{"_LID", 0, ACPI_RTYPE_INTEGER}},
342         {{"_MAT", 0, ACPI_RTYPE_BUFFER}},
343         {{"_MBM", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (8 Int) */
344         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 8, 0}, 0, 0}},
345
346         {{"_MLS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (2 Str) */
347                           {{{ACPI_PTYPE2, ACPI_RTYPE_STRING, 2,0}, 0,0}},
348
349         {{"_MSG", 1, 0}},
350         {{"_MSM", 4, ACPI_RTYPE_INTEGER}},
351         {{"_NTT", 0, ACPI_RTYPE_INTEGER}},
352         {{"_OFF", 0, 0}},
353         {{"_ON_", 0, 0}},
354         {{"_OS_", 0, ACPI_RTYPE_STRING}},
355         {{"_OSC", 4, ACPI_RTYPE_BUFFER}},
356         {{"_OST", 3, 0}},
357         {{"_PAI", 1, ACPI_RTYPE_INTEGER}},
358         {{"_PCL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
359                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
360
361         {{"_PCT", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Buf) */
362                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0}, 0,0}},
363
364         {{"_PDC", 1, 0}},
365         {{"_PDL", 0, ACPI_RTYPE_INTEGER}},
366         {{"_PIC", 1, 0}},
367         {{"_PIF", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (3 Int),(3 Str) */
368         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, ACPI_RTYPE_STRING}, 3, 0}},
369
370         {{"_PLD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Bufs) */
371                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0,0}, 0,0}},
372
373         {{"_PMC", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (11 Int),(3 Str) */
374         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 11, ACPI_RTYPE_STRING}, 3,
375           0}},
376
377         {{"_PMD", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Refs) */
378         {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
379
380         {{"_PMM", 0, ACPI_RTYPE_INTEGER}},
381         {{"_PPC", 0, ACPI_RTYPE_INTEGER}},
382         {{"_PPE", 0, ACPI_RTYPE_INTEGER}}, /* See dig64 spec */
383         {{"_PR0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
384                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
385
386         {{"_PR1", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
387                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
388
389         {{"_PR2", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
390                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
391
392         {{"_PR3", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Refs) */
393         {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
394
395         {{"_PRE", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Refs) */
396         {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
397
398         {{"_PRL", 0, ACPI_RTYPE_PACKAGE}},      /* Variable-length (Refs) */
399         {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
400
401         {{"_PRS", 0, ACPI_RTYPE_BUFFER}},
402
403         /*
404          * For _PRT, many BIOSs reverse the 3rd and 4th Package elements (Source
405          * and source_index). This bug is so prevalent that there is code in the
406          * ACPICA Resource Manager to detect this and switch them back. For now,
407          * do not allow and issue a warning. To allow this and eliminate the
408          * warning, add the ACPI_RTYPE_REFERENCE type to the 4th element (index 3)
409          * in the statement below.
410          */
411         {{"_PRT", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (4): Int,Int,Int/Ref,Int */
412                           {{{ACPI_PTYPE2_FIXED, 4, ACPI_RTYPE_INTEGER,ACPI_RTYPE_INTEGER},
413                           ACPI_RTYPE_INTEGER | ACPI_RTYPE_REFERENCE,
414                           ACPI_RTYPE_INTEGER}},
415
416         {{"_PRW", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each: Pkg/Int,Int,[Variable-length Refs] (Pkg is Ref/Int) */
417                           {{{ACPI_PTYPE1_OPTION, 2, ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE,
418                           ACPI_RTYPE_INTEGER}, ACPI_RTYPE_REFERENCE,0}},
419
420         {{"_PS0", 0, 0}},
421         {{"_PS1", 0, 0}},
422         {{"_PS2", 0, 0}},
423         {{"_PS3", 0, 0}},
424         {{"_PSC", 0, ACPI_RTYPE_INTEGER}},
425         {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
426                           {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
427
428         {{"_PSE", 1, 0}},
429         {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
430                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
431
432         {{"_PSR", 0, ACPI_RTYPE_INTEGER}},
433         {{"_PSS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (6 Int) */
434                           {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 6,0}, 0,0}},
435
436         {{"_PSV", 0, ACPI_RTYPE_INTEGER}},
437         {{"_PSW", 1, 0}},
438         {{"_PTC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Buf) */
439                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0}, 0,0}},
440
441         {{"_PTP", 2, ACPI_RTYPE_INTEGER}},
442         {{"_PTS", 1, 0}},
443         {{"_PUR", 0, ACPI_RTYPE_PACKAGE}},      /* Fixed-length (2 Int) */
444         {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, 0}, 0, 0}},
445
446         {{"_PXM", 0, ACPI_RTYPE_INTEGER}},
447         {{"_REG", 2, 0}},
448         {{"_REV", 0, ACPI_RTYPE_INTEGER}},
449         {{"_RMV", 0, ACPI_RTYPE_INTEGER}},
450         {{"_ROM", 2, ACPI_RTYPE_BUFFER}},
451         {{"_RTV", 0, ACPI_RTYPE_INTEGER}},
452
453         /*
454          * For _S0_ through _S5_, the ACPI spec defines a return Package
455          * containing 1 Integer, but most DSDTs have it wrong - 2,3, or 4 integers.
456          * Allow this by making the objects "Variable-length length", but all elements
457          * must be Integers.
458          */
459         {{"_S0_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
460                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
461
462         {{"_S1_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
463                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
464
465         {{"_S2_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
466                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
467
468         {{"_S3_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
469                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
470
471         {{"_S4_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
472                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
473
474         {{"_S5_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
475                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
476
477         {{"_S1D", 0, ACPI_RTYPE_INTEGER}},
478         {{"_S2D", 0, ACPI_RTYPE_INTEGER}},
479         {{"_S3D", 0, ACPI_RTYPE_INTEGER}},
480         {{"_S4D", 0, ACPI_RTYPE_INTEGER}},
481         {{"_S0W", 0, ACPI_RTYPE_INTEGER}},
482         {{"_S1W", 0, ACPI_RTYPE_INTEGER}},
483         {{"_S2W", 0, ACPI_RTYPE_INTEGER}},
484         {{"_S3W", 0, ACPI_RTYPE_INTEGER}},
485         {{"_S4W", 0, ACPI_RTYPE_INTEGER}},
486         {{"_SBS", 0, ACPI_RTYPE_INTEGER}},
487         {{"_SCP", 0x13, 0}},               /* Acpi 1.0 allowed 1 arg. Acpi 3.0 expanded to 3 args. Allow both. */
488                            /* Note: the 3-arg definition may be removed for ACPI 4.0 */
489         {{"_SDD", 1, 0}},
490         {{"_SEG", 0, ACPI_RTYPE_INTEGER}},
491         {{"_SHL", 1, ACPI_RTYPE_INTEGER}},
492         {{"_SLI", 0, ACPI_RTYPE_BUFFER}},
493         {{"_SPD", 1, ACPI_RTYPE_INTEGER}},
494         {{"_SRS", 1, 0}},
495         {{"_SRT", 1, ACPI_RTYPE_INTEGER}},
496         {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
497         {{"_SST", 1, 0}},
498         {{"_STA", 0, ACPI_RTYPE_INTEGER}},
499         {{"_STM", 3, 0}},
500         {{"_STP", 2, ACPI_RTYPE_INTEGER}},
501         {{"_STR", 0, ACPI_RTYPE_BUFFER}},
502         {{"_STV", 2, ACPI_RTYPE_INTEGER}},
503         {{"_SUB", 0, ACPI_RTYPE_STRING}},
504         {{"_SUN", 0, ACPI_RTYPE_INTEGER}},
505         {{"_SWS", 0, ACPI_RTYPE_INTEGER}},
506         {{"_TC1", 0, ACPI_RTYPE_INTEGER}},
507         {{"_TC2", 0, ACPI_RTYPE_INTEGER}},
508         {{"_TDL", 0, ACPI_RTYPE_INTEGER}},
509         {{"_TIP", 1, ACPI_RTYPE_INTEGER}},
510         {{"_TIV", 1, ACPI_RTYPE_INTEGER}},
511         {{"_TMP", 0, ACPI_RTYPE_INTEGER}},
512         {{"_TPC", 0, ACPI_RTYPE_INTEGER}},
513         {{"_TPT", 1, 0}},
514         {{"_TRT", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 2_ref/6_int */
515                           {{{ACPI_PTYPE2, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER}, 6, 0}},
516
517         {{"_TSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 5_int with count */
518                           {{{ACPI_PTYPE2_COUNT,ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
519
520         {{"_TSP", 0, ACPI_RTYPE_INTEGER}},
521         {{"_TSS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 5_int */
522                           {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
523
524         {{"_TST", 0, ACPI_RTYPE_INTEGER}},
525         {{"_TTS", 1, 0}},
526         {{"_TZD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
527                           {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
528
529         {{"_TZM", 0, ACPI_RTYPE_REFERENCE}},
530         {{"_TZP", 0, ACPI_RTYPE_INTEGER}},
531         {{"_UID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
532         {{"_UPC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
533                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}},
534
535         {{"_UPD", 0, ACPI_RTYPE_INTEGER}},
536         {{"_UPP", 0, ACPI_RTYPE_INTEGER}},
537         {{"_VPO", 0, ACPI_RTYPE_INTEGER}},
538
539         /* Acpi 1.0 defined _WAK with no return value. Later, it was changed to return a package */
540
541         {{"_WAK", 1, ACPI_RTYPE_NONE | ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE}},
542                           {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0}, 0,0}}, /* Fixed-length (2 Int), but is optional */
543
544         /* _WDG/_WED are MS extensions defined by "Windows Instrumentation" */
545
546         {{"_WDG", 0, ACPI_RTYPE_BUFFER}},
547         {{"_WED", 1,
548           ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER}},
549
550         {{{0, 0, 0, 0}, 0, 0}}  /* Table terminator */
551 };
552
553 #if 0
554         /* This is an internally implemented control method, no need to check */
555         {{"_OSI", 1, ACPI_RTYPE_INTEGER}},
556
557         /* TBD: */
558
559         _PRT - currently ignore reversed entries. attempt to fix here?
560         think about possibly fixing package elements like _BIF, etc.
561 #endif
562
563 #endif
564 #endif