xref: /illumos-gate/usr/src/uts/intel/sys/acpi/acpredef.h (revision fb9b0aa8c76ff829a7069d38161a2cecc656b091)
1 /******************************************************************************
2  *
3  * Name: acpredef - Information table for ACPI predefined methods and objects
4  *
5  *****************************************************************************/
6 
7 /******************************************************************************
8  *
9  * 1. Copyright Notice
10  *
11  * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp.
12  * All rights reserved.
13  *
14  * 2. License
15  *
16  * 2.1. This is your license from Intel Corp. under its intellectual property
17  * rights.  You may have additional license terms from the party that provided
18  * you this software, covering your right to use that party's intellectual
19  * property rights.
20  *
21  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22  * copy of the source code appearing in this file ("Covered Code") an
23  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24  * base code distributed originally by Intel ("Original Intel Code") to copy,
25  * make derivatives, distribute, use and display any portion of the Covered
26  * Code in any form, with the right to sublicense such rights; and
27  *
28  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29  * license (with the right to sublicense), under only those claims of Intel
30  * patents that are infringed by the Original Intel Code, to make, use, sell,
31  * offer to sell, and import the Covered Code and derivative works thereof
32  * solely to the minimum extent necessary to exercise the above copyright
33  * license, and in no event shall the patent license extend to any additions
34  * to or modifications of the Original Intel Code.  No other license or right
35  * is granted directly or by implication, estoppel or otherwise;
36  *
37  * The above copyright and patent license is granted only if the following
38  * conditions are met:
39  *
40  * 3. Conditions
41  *
42  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43  * Redistribution of source code of any substantial portion of the Covered
44  * Code or modification with rights to further distribute source must include
45  * the above Copyright Notice, the above License, this list of Conditions,
46  * and the following Disclaimer and Export Compliance provision.  In addition,
47  * Licensee must cause all Covered Code to which Licensee contributes to
48  * contain a file documenting the changes Licensee made to create that Covered
49  * Code and the date of any change.  Licensee must include in that file the
50  * documentation of any changes made by any predecessor Licensee.  Licensee
51  * must include a prominent statement that the modification is derived,
52  * directly or indirectly, from Original Intel Code.
53  *
54  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55  * Redistribution of source code of any substantial portion of the Covered
56  * Code or modification without rights to further distribute source must
57  * include the following Disclaimer and Export Compliance provision in the
58  * documentation and/or other materials provided with distribution.  In
59  * addition, Licensee may not authorize further sublicense of source of any
60  * portion of the Covered Code, and must include terms to the effect that the
61  * license from Licensee to its licensee is limited to the intellectual
62  * property embodied in the software Licensee provides to its licensee, and
63  * not to intellectual property embodied in modifications its licensee may
64  * make.
65  *
66  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67  * substantial portion of the Covered Code or modification must reproduce the
68  * above Copyright Notice, and the following Disclaimer and Export Compliance
69  * provision in the documentation and/or other materials provided with the
70  * distribution.
71  *
72  * 3.4. Intel retains all right, title, and interest in and to the Original
73  * Intel Code.
74  *
75  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76  * Intel shall be used in advertising or otherwise to promote the sale, use or
77  * other dealings in products derived from or relating to the Covered Code
78  * without prior written authorization from Intel.
79  *
80  * 4. Disclaimer and Export Compliance
81  *
82  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
86  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
87  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88  * PARTICULAR PURPOSE.
89  *
90  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
96  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97  * LIMITED REMEDY.
98  *
99  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100  * software or system incorporating such software without first obtaining any
101  * required license or other approval from the U. S. Department of Commerce or
102  * any other agency or department of the United States Government.  In the
103  * event Licensee exports any such software from the United States or
104  * re-exports any such software from a foreign destination, Licensee shall
105  * ensure that the distribution and export/re-export of the software is in
106  * compliance with all laws, regulations, orders, or other restrictions of the
107  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108  * any of its subsidiaries will export/re-export any technical data, process,
109  * software, or service, directly or indirectly, to any country for which the
110  * United States government or any agency thereof requires an export license,
111  * other governmental approval, or letter of assurance, without first obtaining
112  * such license, approval or letter.
113  *
114  *****************************************************************************/
115 
116 #ifndef __ACPREDEF_H__
117 #define __ACPREDEF_H__
118 
119 
120 /******************************************************************************
121  *
122  * Return Package types
123  *
124  * 1) PTYPE1 packages do not contain sub-packages.
125  *
126  * ACPI_PTYPE1_FIXED: Fixed-length length, 1 or 2 object types:
127  *      object type
128  *      count
129  *      object type
130  *      count
131  *
132  * ACPI_PTYPE1_VAR: Variable-length length:
133  *      object type (Int/Buf/Ref)
134  *
135  * ACPI_PTYPE1_OPTION: Package has some required and some optional elements
136  *      (Used for _PRW)
137  *
138  *
139  * 2) PTYPE2 packages contain a Variable-length number of sub-packages. Each of the
140  *    different types describe the contents of each of the sub-packages.
141  *
142  * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types:
143  *      object type
144  *      count
145  *      object type
146  *      count
147  *      (Used for _ALR,_MLS,_PSS,_TRT,_TSS)
148  *
149  * ACPI_PTYPE2_COUNT: Each subpackage has a count as first element:
150  *      object type
151  *      (Used for _CSD,_PSD,_TSD)
152  *
153  * ACPI_PTYPE2_PKG_COUNT: Count of subpackages at start, 1 or 2 object types:
154  *      object type
155  *      count
156  *      object type
157  *      count
158  *      (Used for _CST)
159  *
160  * ACPI_PTYPE2_Fixed-length: Each subpackage is of Fixed-length length
161  *      (Used for _PRT)
162  *
163  * ACPI_PTYPE2_MIN: Each subpackage has a Variable-length but minimum length
164  *      (Used for _HPX)
165  *
166  *****************************************************************************/
167 
168 enum AcpiReturnPackageTypes
169 {
170     ACPI_PTYPE1_FIXED       = 1,
171     ACPI_PTYPE1_VAR         = 2,
172     ACPI_PTYPE1_OPTION      = 3,
173     ACPI_PTYPE2             = 4,
174     ACPI_PTYPE2_COUNT       = 5,
175     ACPI_PTYPE2_PKG_COUNT   = 6,
176     ACPI_PTYPE2_FIXED       = 7,
177     ACPI_PTYPE2_MIN         = 8
178 };
179 
180 
181 /*
182  * Predefined method/object information table.
183  *
184  * These are the names that can actually be evaluated via AcpiEvaluateObject.
185  * Not present in this table are the following:
186  *
187  *      1) Predefined/Reserved names that are never evaluated via
188  *         AcpiEvaluateObject:
189  *              _Lxx and _Exx GPE methods
190  *              _Qxx EC methods
191  *              _T_x compiler temporary Variable-lengths
192  *
193  *      2) Predefined names that never actually exist within the AML code:
194  *              Predefined resource descriptor field names
195  *
196  *      3) Predefined names that are implemented within ACPICA:
197  *              _OSI
198  *
199  *      4) Some predefined names that are not documented within the ACPI spec.
200  *              _WDG, _WED
201  *
202  * The main entries in the table each contain the following items:
203  *
204  * Name                 - The ACPI reserved name
205  * ParamCount           - Number of arguments to the method
206  * ExpectedBtypes       - Allowed type(s) for the return value.
207  *                        0 means that no return value is expected.
208  *
209  * For methods that return packages, the next entry in the table contains
210  * information about the expected structure of the package. This information
211  * is saved here (rather than in a separate table) in order to minimize the
212  * overall size of the stored data.
213  *
214  * Note: The additional braces are intended to promote portability.
215  */
216 static const ACPI_PREDEFINED_INFO     PredefinedNames[] =
217 {
218     {{"_AC0", 0, ACPI_RTYPE_INTEGER}},
219     {{"_AC1", 0, ACPI_RTYPE_INTEGER}},
220     {{"_AC2", 0, ACPI_RTYPE_INTEGER}},
221     {{"_AC3", 0, ACPI_RTYPE_INTEGER}},
222     {{"_AC4", 0, ACPI_RTYPE_INTEGER}},
223     {{"_AC5", 0, ACPI_RTYPE_INTEGER}},
224     {{"_AC6", 0, ACPI_RTYPE_INTEGER}},
225     {{"_AC7", 0, ACPI_RTYPE_INTEGER}},
226     {{"_AC8", 0, ACPI_RTYPE_INTEGER}},
227     {{"_AC9", 0, ACPI_RTYPE_INTEGER}},
228     {{"_ADR", 0, ACPI_RTYPE_INTEGER}},
229     {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
230                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
231 
232     {{"_AL1", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
233                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
234 
235     {{"_AL2", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
236                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
237 
238     {{"_AL3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
239                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
240 
241     {{"_AL4", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
242                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
243 
244     {{"_AL5", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
245                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
246 
247     {{"_AL6", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
248                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
249 
250     {{"_AL7", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
251                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
252 
253     {{"_AL8", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
254                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
255 
256     {{"_AL9", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
257                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
258 
259     {{"_ALC", 0, ACPI_RTYPE_INTEGER}},
260     {{"_ALI", 0, ACPI_RTYPE_INTEGER}},
261     {{"_ALP", 0, ACPI_RTYPE_INTEGER}},
262     {{"_ALR", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 2 (Ints) */
263                     {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 2,0}, 0,0}},
264 
265     {{"_ALT", 0, ACPI_RTYPE_INTEGER}},
266     {{"_BBN", 0, ACPI_RTYPE_INTEGER}},
267     {{"_BCL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
268                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
269 
270     {{"_BCM", 1, 0}},
271     {{"_BDN", 0, ACPI_RTYPE_INTEGER}},
272     {{"_BFS", 1, 0}},
273     {{"_BIF", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (9 Int),(4 Str) */
274                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9, ACPI_RTYPE_STRING}, 4,0}},
275 
276     {{"_BLT", 3, 0}},
277     {{"_BMC", 1, 0}},
278     {{"_BMD", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (5 Int) */
279                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
280 
281     {{"_BQC", 0, ACPI_RTYPE_INTEGER}},
282     {{"_BST", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
283                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}},
284 
285     {{"_BTM", 1, ACPI_RTYPE_INTEGER}},
286     {{"_BTP", 1, 0}},
287     {{"_CBA", 0, ACPI_RTYPE_INTEGER}}, /* See PCI firmware spec 3.0 */
288     {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
289                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
290 
291     {{"_CRS", 0, ACPI_RTYPE_BUFFER}},
292     {{"_CRT", 0, ACPI_RTYPE_INTEGER}},
293     {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
294                     {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
295 
296     {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
297                     {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
298 
299     {{"_DCK", 1, ACPI_RTYPE_INTEGER}},
300     {{"_DCS", 0, ACPI_RTYPE_INTEGER}},
301     {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
302     {{"_DDN", 0, ACPI_RTYPE_STRING}},
303     {{"_DGS", 0, ACPI_RTYPE_INTEGER}},
304     {{"_DIS", 0, 0}},
305     {{"_DMA", 0, ACPI_RTYPE_BUFFER}},
306     {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
307                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
308 
309     {{"_DOS", 1, 0}},
310     {{"_DSM", 4, ACPI_RTYPE_ALL}},     /* Must return a type, but it can be of any type */
311     {{"_DSS", 1, 0}},
312     {{"_DSW", 3, 0}},
313     {{"_EC_", 0, ACPI_RTYPE_INTEGER}},
314     {{"_EDL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs)*/
315                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
316 
317     {{"_EJ0", 1, 0}},
318     {{"_EJ1", 1, 0}},
319     {{"_EJ2", 1, 0}},
320     {{"_EJ3", 1, 0}},
321     {{"_EJ4", 1, 0}},
322     {{"_EJD", 0, ACPI_RTYPE_STRING}},
323     {{"_FDE", 0, ACPI_RTYPE_BUFFER}},
324     {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
325                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
326 
327     {{"_FDM", 1, 0}},
328     {{"_FIX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
329                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
330 
331     {{"_GLK", 0, ACPI_RTYPE_INTEGER}},
332     {{"_GPD", 0, ACPI_RTYPE_INTEGER}},
333     {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
334     {{"_GSB", 0, ACPI_RTYPE_INTEGER}},
335     {{"_GTF", 0, ACPI_RTYPE_BUFFER}},
336     {{"_GTM", 0, ACPI_RTYPE_BUFFER}},
337     {{"_GTS", 1, 0}},
338     {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
339     {{"_HOT", 0, ACPI_RTYPE_INTEGER}},
340     {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
341                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}},
342 
343     /*
344      * For _HPX, a single package is returned, containing a Variable-length number
345      * of sub-packages. Each sub-package contains a PCI record setting.
346      * There are several different type of record settings, of different
347      * lengths, but all elements of all settings are Integers.
348      */
349     {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
350                     {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
351 
352     {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
353     {{"_INI", 0, 0}},
354     {{"_IRC", 0, 0}},
355     {{"_LCK", 1, 0}},
356     {{"_LID", 0, ACPI_RTYPE_INTEGER}},
357     {{"_MAT", 0, ACPI_RTYPE_BUFFER}},
358     {{"_MLS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (2 Str) */
359                     {{{ACPI_PTYPE2, ACPI_RTYPE_STRING, 2,0}, 0,0}},
360 
361     {{"_MSG", 1, 0}},
362     {{"_OFF", 0, 0}},
363     {{"_ON_", 0, 0}},
364     {{"_OS_", 0, ACPI_RTYPE_STRING}},
365     {{"_OSC", 4, ACPI_RTYPE_BUFFER}},
366     {{"_OST", 3, 0}},
367     {{"_PCL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
368                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
369 
370     {{"_PCT", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Buf) */
371                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0}, 0,0}},
372 
373     {{"_PDC", 1, 0}},
374     {{"_PIC", 1, 0}},
375     {{"_PLD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Bufs) */
376                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0,0}, 0,0}},
377 
378     {{"_PPC", 0, ACPI_RTYPE_INTEGER}},
379     {{"_PPE", 0, ACPI_RTYPE_INTEGER}}, /* See dig64 spec */
380     {{"_PR0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
381                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
382 
383     {{"_PR1", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
384                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
385 
386     {{"_PR2", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
387                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
388 
389     {{"_PRS", 0, ACPI_RTYPE_BUFFER}},
390 
391     /*
392      * For _PRT, many BIOSs reverse the 2nd and 3rd Package elements. This bug is so prevalent that there
393      * is code in the ACPICA Resource Manager to detect this and switch them back. For now, do not allow
394      * and issue a warning. To allow this and eliminate the warning, add the ACPI_RTYPE_REFERENCE
395      * type to the 2nd element (index 1) in the statement below.
396      */
397     {{"_PRT", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (4): Int,Int,Int/Ref,Int */
398                     {{{ACPI_PTYPE2_FIXED, 4, ACPI_RTYPE_INTEGER,ACPI_RTYPE_INTEGER},
399                     ACPI_RTYPE_INTEGER | ACPI_RTYPE_REFERENCE,ACPI_RTYPE_INTEGER}},
400 
401     {{"_PRW", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each: Pkg/Int,Int,[Variable-length Refs] (Pkg is Ref/Int) */
402                     {{{ACPI_PTYPE1_OPTION, 2, ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE,
403                     ACPI_RTYPE_INTEGER}, ACPI_RTYPE_REFERENCE,0}},
404 
405     {{"_PS0", 0, 0}},
406     {{"_PS1", 0, 0}},
407     {{"_PS2", 0, 0}},
408     {{"_PS3", 0, 0}},
409     {{"_PSC", 0, ACPI_RTYPE_INTEGER}},
410     {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
411                     {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
412 
413     {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
414                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
415 
416     {{"_PSR", 0, ACPI_RTYPE_INTEGER}},
417     {{"_PSS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (6 Int) */
418                     {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 6,0}, 0,0}},
419 
420     {{"_PSV", 0, ACPI_RTYPE_INTEGER}},
421     {{"_PSW", 1, 0}},
422     {{"_PTC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (2 Buf) */
423                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0}, 0,0}},
424 
425     {{"_PTS", 1, 0}},
426     {{"_PXM", 0, ACPI_RTYPE_INTEGER}},
427     {{"_REG", 2, 0}},
428     {{"_REV", 0, ACPI_RTYPE_INTEGER}},
429     {{"_RMV", 0, ACPI_RTYPE_INTEGER}},
430     {{"_ROM", 2, ACPI_RTYPE_BUFFER}},
431     {{"_RTV", 0, ACPI_RTYPE_INTEGER}},
432 
433     /*
434      * For _S0_ through _S5_, the ACPI spec defines a return Package
435      * containing 1 Integer, but most DSDTs have it wrong - 2,3, or 4 integers.
436      * Allow this by making the objects "Variable-length length", but all elements
437      * must be Integers.
438      */
439     {{"_S0_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
440                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
441 
442     {{"_S1_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
443                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
444 
445     {{"_S2_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
446                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
447 
448     {{"_S3_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
449                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
450 
451     {{"_S4_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
452                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
453 
454     {{"_S5_", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (1 Int) */
455                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0}, 0,0}},
456 
457     {{"_S1D", 0, ACPI_RTYPE_INTEGER}},
458     {{"_S2D", 0, ACPI_RTYPE_INTEGER}},
459     {{"_S3D", 0, ACPI_RTYPE_INTEGER}},
460     {{"_S4D", 0, ACPI_RTYPE_INTEGER}},
461     {{"_S0W", 0, ACPI_RTYPE_INTEGER}},
462     {{"_S1W", 0, ACPI_RTYPE_INTEGER}},
463     {{"_S2W", 0, ACPI_RTYPE_INTEGER}},
464     {{"_S3W", 0, ACPI_RTYPE_INTEGER}},
465     {{"_S4W", 0, ACPI_RTYPE_INTEGER}},
466     {{"_SBS", 0, ACPI_RTYPE_INTEGER}},
467     {{"_SCP", 0x13, 0}},               /* Acpi 1.0 allowed 1 arg. Acpi 3.0 expanded to 3 args. Allow both. */
468                                        /* Note: the 3-arg definition may be removed for ACPI 4.0 */
469     {{"_SDD", 1, 0}},
470     {{"_SEG", 0, ACPI_RTYPE_INTEGER}},
471     {{"_SLI", 0, ACPI_RTYPE_BUFFER}},
472     {{"_SPD", 1, ACPI_RTYPE_INTEGER}},
473     {{"_SRS", 1, 0}},
474     {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
475     {{"_SST", 1, 0}},
476     {{"_STA", 0, ACPI_RTYPE_INTEGER}},
477     {{"_STM", 3, 0}},
478     {{"_STR", 0, ACPI_RTYPE_BUFFER}},
479     {{"_SUN", 0, ACPI_RTYPE_INTEGER}},
480     {{"_SWS", 0, ACPI_RTYPE_INTEGER}},
481     {{"_TC1", 0, ACPI_RTYPE_INTEGER}},
482     {{"_TC2", 0, ACPI_RTYPE_INTEGER}},
483     {{"_TMP", 0, ACPI_RTYPE_INTEGER}},
484     {{"_TPC", 0, ACPI_RTYPE_INTEGER}},
485     {{"_TPT", 1, 0}},
486     {{"_TRT", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 2Ref/6Int */
487                     {{{ACPI_PTYPE2, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER}, 6, 0}},
488 
489     {{"_TSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 5Int with count */
490                     {{{ACPI_PTYPE2_COUNT,ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
491 
492     {{"_TSP", 0, ACPI_RTYPE_INTEGER}},
493     {{"_TSS", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each 5Int */
494                     {{{ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
495 
496     {{"_TST", 0, ACPI_RTYPE_INTEGER}},
497     {{"_TTS", 1, 0}},
498     {{"_TZD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
499                     {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
500 
501     {{"_TZM", 0, ACPI_RTYPE_REFERENCE}},
502     {{"_TZP", 0, ACPI_RTYPE_INTEGER}},
503     {{"_UID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
504     {{"_UPC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
505                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0}, 0,0}},
506 
507     {{"_UPD", 0, ACPI_RTYPE_INTEGER}},
508     {{"_UPP", 0, ACPI_RTYPE_INTEGER}},
509     {{"_VPO", 0, ACPI_RTYPE_INTEGER}},
510 
511     /* Acpi 1.0 defined _WAK with no return value. Later, it was changed to return a package */
512 
513     {{"_WAK", 1, ACPI_RTYPE_NONE | ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE}},
514                     {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0}, 0,0}}, /* Fixed-length (2 Int), but is optional */
515 
516     {{{0,0,0,0}, 0,0}} /* Table terminator */
517 };
518 
519 #if 0
520     /* Not implemented */
521 
522     {{"_WDG", 0, ACPI_RTYPE_BUFFER}},  /* MS Extension */
523     {{"_WED", 1, ACPI_RTYPE_PACKAGE}}, /* MS Extension */
524 
525     /* This is an internally implemented control method, no need to check */
526     {{"_OSI", 1, ACPI_RTYPE_INTEGER}},
527 
528     /* TBD: */
529 
530     _PRT - currently ignore reversed entries. Attempt to fix here?
531     Think about possibly fixing package elements like _BIF, etc.
532 #endif
533 
534 #endif
535