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