/******************************************************************************
 *
 * Name: acpredef - Information table for ACPI predefined methods and objects
 *
 *****************************************************************************/

/*
 * Copyright (C) 2000 - 2022, Intel Corp.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 *    substantially similar to the "NO WARRANTY" disclaimer below
 *    ("Disclaimer") and any redistribution must be conditioned upon
 *    including a substantially similar Disclaimer requirement for further
 *    binary redistribution.
 * 3. Neither the names of the above-listed copyright holders nor the names
 *    of any contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 */

#ifndef __ACPREDEF_H__
#define __ACPREDEF_H__


/******************************************************************************
 *
 * Return Package types
 *
 * 1) PTYPE1 packages do not contain subpackages.
 *
 * ACPI_PTYPE1_FIXED: Fixed-length length, 1 or 2 object types:
 *      object type
 *      count
 *      object type
 *      count
 *
 * ACPI_PTYPE1_VAR: Variable-length length. Zero-length package is allowed:
 *      object type (Int/Buf/Ref)
 *
 * ACPI_PTYPE1_OPTION: Package has some required and some optional elements
 *      (Used for _PRW)
 *
 *
 * 2) PTYPE2 packages contain a Variable-length number of subpackages. Each
 *    of the different types describe the contents of each of the subpackages.
 *
 * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types. Zero-length
 *      parent package is allowed:
 *      object type
 *      count
 *      object type
 *      count
 *      (Used for _ALR,_MLS,_PSS,_TRT,_TSS)
 *
 * ACPI_PTYPE2_COUNT: Each subpackage has a count as first element.
 *      Zero-length parent package is allowed:
 *      object type
 *      (Used for _CSD,_PSD,_TSD)
 *
 * ACPI_PTYPE2_PKG_COUNT: Count of subpackages at start, 1 or 2 object types:
 *      object type
 *      count
 *      object type
 *      count
 *      (Used for _CST)
 *
 * ACPI_PTYPE2_FIXED: Each subpackage is of Fixed-length. Zero-length
 *      parent package is allowed.
 *      (Used for _PRT)
 *
 * ACPI_PTYPE2_MIN: Each subpackage has a Variable-length but minimum length.
 *      Zero-length parent package is allowed:
 *      (Used for _HPX)
 *
 * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
 *      (Used for _ART, _FPS)
 *
 * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements
 *      followed by an optional element. Zero-length parent package is allowed.
 *      object type
 *      count
 *      object type
 *      count = 0 (optional)
 *      (Used for _DLM)
 *
 * ACPI_PTYPE2_VAR_VAR: Variable number of subpackages, each of either a
 *      constant or variable length. The subpackages are preceded by a
 *      constant number of objects.
 *      (Used for _LPI, _RDI)
 *
 * ACPI_PTYPE2_UUID_PAIR: Each subpackage is preceded by a UUID Buffer. The UUID
 *      defines the format of the package. Zero-length parent package is
 *      allowed.
 *      (Used for _DSD)
 *
 *****************************************************************************/

enum AcpiReturnPackageTypes
{
    ACPI_PTYPE1_FIXED       = 1,
    ACPI_PTYPE1_VAR         = 2,
    ACPI_PTYPE1_OPTION      = 3,
    ACPI_PTYPE2             = 4,
    ACPI_PTYPE2_COUNT       = 5,
    ACPI_PTYPE2_PKG_COUNT   = 6,
    ACPI_PTYPE2_FIXED       = 7,
    ACPI_PTYPE2_MIN         = 8,
    ACPI_PTYPE2_REV_FIXED   = 9,
    ACPI_PTYPE2_FIX_VAR     = 10,
    ACPI_PTYPE2_VAR_VAR     = 11,
    ACPI_PTYPE2_UUID_PAIR   = 12,
    ACPI_PTYPE_CUSTOM       = 13
};


/* Support macros for users of the predefined info table */

#define METHOD_PREDEF_ARGS_MAX          5
#define METHOD_ARG_BIT_WIDTH            3
#define METHOD_ARG_MASK                 0x0007
#define ARG_COUNT_IS_MINIMUM            0x8000
#define METHOD_MAX_ARG_TYPE             ACPI_TYPE_PACKAGE

#define METHOD_GET_ARG_COUNT(ArgList)   ((ArgList) & METHOD_ARG_MASK)
#define METHOD_GET_NEXT_TYPE(ArgList)   (((ArgList) >>= METHOD_ARG_BIT_WIDTH) & METHOD_ARG_MASK)

/* Macros used to build the predefined info table */

#define METHOD_0ARGS                    0
#define METHOD_1ARGS(a1)                (1 | (a1 << 3))
#define METHOD_2ARGS(a1,a2)             (2 | (a1 << 3) | (a2 << 6))
#define METHOD_3ARGS(a1,a2,a3)          (3 | (a1 << 3) | (a2 << 6) | (a3 << 9))
#define METHOD_4ARGS(a1,a2,a3,a4)       (4 | (a1 << 3) | (a2 << 6) | (a3 << 9) | (a4 << 12))
#define METHOD_5ARGS(a1,a2,a3,a4,a5)    (5 | (a1 << 3) | (a2 << 6) | (a3 << 9) | (a4 << 12) | (a5 << 15))

#define METHOD_RETURNS(type)            (type)
#define METHOD_NO_RETURN_VALUE          0

#define PACKAGE_INFO(a,b,c,d,e,f)       {{{(a),(b),(c),(d)}, ((((UINT16)(f)) << 8) | (e)), 0}}


/* Support macros for the resource descriptor info table */

#define WIDTH_1                         0x0001
#define WIDTH_2                         0x0002
#define WIDTH_3                         0x0004
#define WIDTH_8                         0x0008
#define WIDTH_16                        0x0010
#define WIDTH_32                        0x0020
#define WIDTH_64                        0x0040
#define VARIABLE_DATA                   0x0080
#define NUM_RESOURCE_WIDTHS             8

#define WIDTH_ADDRESS                   WIDTH_16 | WIDTH_32 | WIDTH_64


#ifdef ACPI_CREATE_PREDEFINED_TABLE
/******************************************************************************
 *
 * Predefined method/object information table.
 *
 * These are the names that can actually be evaluated via AcpiEvaluateObject.
 * Not present in this table are the following:
 *
 *      1) Predefined/Reserved names that are not usually evaluated via
 *         AcpiEvaluateObject:
 *              _Lxx and _Exx GPE methods
 *              _Qxx EC methods
 *              _T_x compiler temporary variables
 *              _Wxx wake events
 *
 *      2) Predefined names that never actually exist within the AML code:
 *              Predefined resource descriptor field names
 *
 *      3) Predefined names that are implemented within ACPICA:
 *              _OSI
 *
 * The main entries in the table each contain the following items:
 *
 * Name                 - The ACPI reserved name
 * ArgumentList         - Contains (in 16 bits), the number of required
 *                        arguments to the method (3 bits), and a 3-bit type
 *                        field for each argument (up to 4 arguments). The
 *                        METHOD_?ARGS macros generate the correct packed data.
 * ExpectedBtypes       - Allowed type(s) for the return value.
 *                        0 means that no return value is expected.
 *
 * For methods that return packages, the next entry in the table contains
 * information about the expected structure of the package. This information
 * is saved here (rather than in a separate table) in order to minimize the
 * overall size of the stored data.
 *
 * Note: The additional braces are intended to promote portability.
 *
 * Note2: Table is used by the kernel-resident subsystem, the iASL compiler,
 * and the AcpiHelp utility.
 *
 * TBD: _PRT - currently ignore reversed entries. Attempt to fix in nsrepair.
 * Possibly fixing package elements like _BIF, etc.
 *
 *****************************************************************************/

const ACPI_PREDEFINED_INFO          AcpiGbl_PredefinedMethods[] =
{
    {{"_AC0",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC1",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC2",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC3",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC4",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC5",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC6",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC7",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC8",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AC9",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_ADR",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_AEI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_AL0",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL1",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL2",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL3",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL4",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL5",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL6",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL7",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL8",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_AL9",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_ALC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_ALI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_ALP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_ALR",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 2 (Ints) */
                    PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 2,0,0,0),

    {{"_ALT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_ART",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (2 Ref/11 Int) */
                    PACKAGE_INFO (ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER, 11,0),

    {{"_BBN",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BCL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0,0,0),

    {{"_BCM",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_BCT",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BDN",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BFS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_BIF",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (9 Int),(4 Str) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9, ACPI_RTYPE_STRING, 4,0),

    {{"_BIX",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (16 Int),(4 Str) */
                    PACKAGE_INFO (ACPI_PTYPE_CUSTOM, ACPI_RTYPE_INTEGER, 16, ACPI_RTYPE_STRING, 4,0),

    {{"_BLT",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_BMA",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BMC",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_BMD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (5 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0,0,0),

    {{"_BMS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BPC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),

    {{"_BPS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (5 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0,0,0),

    {{"_BPT",   METHOD_1ARGS (ACPI_TYPE_PACKAGE),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BQC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BST",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),

    {{"_BTH",   METHOD_1ARGS (ACPI_TYPE_INTEGER),      /* ACPI 6.0 */
                METHOD_NO_RETURN_VALUE}},

    {{"_BTM",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_BTP",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_CBA",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See PCI firmware spec 3.0 */

    {{"_CBR",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0),

    {{"_CCA",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* ACPI 5.1 */

    {{"_CDM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_CID",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints/Strs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0,0,0),

    {{"_CLS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0),

    {{"_CPC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints/Bufs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0,0,0,0),

    {{"_CR3",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_CRS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_CRT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_CSD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(n), n-1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0,0,0),

    {{"_CST",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
                    PACKAGE_INFO (ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER, 3,0),

    {{"_CWS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_DCK",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_DCS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_DDC",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER)}},

    {{"_DDN",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_STRING)}},

    {{"_DEP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_DGS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_DIS",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_DLM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */
                    PACKAGE_INFO (ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1, ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER, 0,0),

    {{"_DMA",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_DOD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0,0,0),

    {{"_DOS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_DSD",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Buf, 1 Pkg */
                    PACKAGE_INFO (ACPI_PTYPE2_UUID_PAIR, ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_PACKAGE, 1,0),

    {{"_DSM",   METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_PACKAGE),
                METHOD_RETURNS (ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */

    {{"_DSS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_DSW",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_DTI",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_EC_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_EDL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs)*/
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_EJ0",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_EJ1",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_EJ2",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_EJ3",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_EJ4",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_EJD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_STRING)}},

    {{"_ERR",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_STRING, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* Internal use only, used by ACPICA test suites */

    {{"_EVT",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_FDE",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_FDI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (16 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0,0,0),

    {{"_FDM",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_FIF",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),

    {{"_FIT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},  /* ACPI 6.0 */

    {{"_FIX",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0,0,0),

    {{"_FPS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (5 Int) */
                    PACKAGE_INFO (ACPI_PTYPE2_REV_FIXED,ACPI_RTYPE_INTEGER, 5, 0,0,0),

    {{"_FSL",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_FST",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0),

    {{"_GAI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_GCP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_GHL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_GLK",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_GPD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_GPE",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* _GPE method, not _GPE scope */

    {{"_GRT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_GSB",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_GTF",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_GTM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_GTS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_GWS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_HID",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING)}},

    {{"_HMA",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_HOT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_HPP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),

    /*
     * For _HPX, a single package is returned, containing a variable-length number
     * of subpackages. Each subpackage contains a PCI record setting.
     * There are several different type of record settings, of different
     * lengths, but all elements of all settings are Integers.
     */
    {{"_HPX",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (var Ints) */
                    PACKAGE_INFO (ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0,0,0),

    {{"_HRV",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_IFT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See IPMI spec */

    {{"_INI",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_IRC",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_LCK",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_LID",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_LPD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (2 Int) */
                    PACKAGE_INFO (ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_INTEGER, 2,0,0,0),

    {{"_LPI",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (3 Int, n Pkg (10 Int/Buf) */
                    PACKAGE_INFO (ACPI_PTYPE2_VAR_VAR, ACPI_RTYPE_INTEGER, 3,
                    ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER | ACPI_RTYPE_STRING, 10,0),

    {{"_LSI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}},
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0),

    {{"_LSR",   METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}},
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 1, ACPI_RTYPE_BUFFER, 1,0),

    {{"_LSW",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_BUFFER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_MAT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_MBM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (8 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 8,0,0,0),

    {{"_MLS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (1 Str/1 Buf) */
                    PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_STRING, 1, ACPI_RTYPE_BUFFER, 1,0),

    {{"_MSG",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_MSM",   METHOD_4ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_MTL",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_NBS",   METHOD_0ARGS,                          /* ACPI 6.3 */
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_NCH",   METHOD_0ARGS,                          /* ACPI 6.3 */
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_NIC",   METHOD_0ARGS,                          /* ACPI 6.3 */
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_NIG",   METHOD_0ARGS,                          /* ACPI 6.3 */
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_NIH",   METHOD_1ARGS (ACPI_TYPE_BUFFER),       /* ACPI 6.3 */
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_NTT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_OFF",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_ON_",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_OS_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_STRING)}},

    {{"_OSC",   METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_BUFFER),
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_OST",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_BUFFER),
                METHOD_NO_RETURN_VALUE}},

    {{"_PAI",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PCL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PCT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Buf) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0,0,0),

    {{"_PDC",   METHOD_1ARGS (ACPI_TYPE_BUFFER),
                METHOD_NO_RETURN_VALUE}},

    {{"_PDL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PIC",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_PIF",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int),(3 Str) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, ACPI_RTYPE_STRING, 3,0),

    {{"_PLD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Bufs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0,0,0,0),

    {{"_PMC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (11 Int),(3 Str) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 11, ACPI_RTYPE_STRING, 3,0),

    {{"_PMD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PMM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PPC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PPE",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See dig64 spec */

    {{"_PR0",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PR1",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PR2",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PR3",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PRE",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PRL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PRR",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Ref) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_REFERENCE, 1,0,0,0),

    {{"_PRS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    /*
     * For _PRT, many BIOSs reverse the 3rd and 4th Package elements (Source
     * and SourceIndex). This bug is so prevalent that there is code in the
     * ACPICA Resource Manager to detect this and switch them back. For now,
     * do not allow and issue a warning. To allow this and eliminate the
     * warning, add the ACPI_RTYPE_REFERENCE type to the 4th element (index 3)
     * in the statement below.
     */
    {{"_PRT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (4): Int,Int,Int/Ref,Int */
                    PACKAGE_INFO (ACPI_PTYPE2_FIXED, 4, ACPI_RTYPE_INTEGER, ACPI_RTYPE_INTEGER,
                                  ACPI_RTYPE_INTEGER | ACPI_RTYPE_REFERENCE, ACPI_RTYPE_INTEGER),

    {{"_PRW",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: Pkg/Int,Int,[Variable-length Refs] (Pkg is Ref/Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_OPTION, 2, ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE,
                                  ACPI_RTYPE_INTEGER, ACPI_RTYPE_REFERENCE, 0),

    {{"_PS0",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_PS1",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_PS2",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_PS3",   METHOD_0ARGS,
                METHOD_NO_RETURN_VALUE}},

    {{"_PSC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PSD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (5 Int) with count */
                    PACKAGE_INFO (ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0,0,0),

    {{"_PSE",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_PSL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_PSR",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PSS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (6 Int) */
                    PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 6,0,0,0),

    {{"_PSV",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PSW",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_PTC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Buf) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0,0,0),

    {{"_PTP",   METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_PTS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_PUR",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0,0,0),

    {{"_PXM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_RDI",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int, n Pkg (m Ref)) */
                    PACKAGE_INFO (ACPI_PTYPE2_VAR_VAR, ACPI_RTYPE_INTEGER, 1,
                    ACPI_RTYPE_REFERENCE,0,0),

    {{"_REG",   METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_REV",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_RMV",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_ROM",   METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_RST",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_NO_RETURN_VALUE}},

    {{"_RTV",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    /*
     * For _S0_ through _S5_, the ACPI spec defines a return Package
     * containing 1 Integer, but most DSDTs have it wrong - 2,3, or 4 integers.
     * Allow this by making the objects "Variable-length length", but all elements
     * must be Integers.
     */
    {{"_S0_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0),

    {{"_S1_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0),

    {{"_S2_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0),

    {{"_S3_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0),

    {{"_S4_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0),

    {{"_S5_",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0),

    {{"_S1D",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S2D",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S3D",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S4D",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S0W",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S1W",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S2W",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S3W",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_S4W",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SBA",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),

    {{"_SBI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int, 1 Buf) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 1, ACPI_RTYPE_BUFFER,1,0),

    {{"_SBR",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, ACPI_RTYPE_BUFFER | ACPI_RTYPE_INTEGER, 1,0),

    {{"_SBS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SBT",   METHOD_4ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY),
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int, 1 Buf | Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, ACPI_RTYPE_BUFFER | ACPI_RTYPE_INTEGER, 1,0),

    {{"_SBW",   METHOD_5ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY),
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}},
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER | ACPI_RTYPE_INTEGER, 1, 0,0,0),

    {{"_SCP",   METHOD_1ARGS (ACPI_TYPE_INTEGER) | ARG_COUNT_IS_MINIMUM,
                METHOD_NO_RETURN_VALUE}},   /* Acpi 1.0 allowed 1 integer arg. Acpi 3.0 expanded to 3 args. Allow both. */

    {{"_SDD",   METHOD_1ARGS (ACPI_TYPE_BUFFER),
                METHOD_NO_RETURN_VALUE}},

    {{"_SEG",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SHL",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SLI",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_SPD",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SRS",   METHOD_1ARGS (ACPI_TYPE_BUFFER),
                METHOD_NO_RETURN_VALUE}},

    {{"_SRT",   METHOD_1ARGS (ACPI_TYPE_BUFFER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SRV",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See IPMI spec */

    {{"_SST",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_STA",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_STM",   METHOD_3ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_BUFFER, ACPI_TYPE_BUFFER),
                METHOD_NO_RETURN_VALUE}},

    {{"_STP",   METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_STR",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_STV",   METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SUB",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_STRING)}},

    {{"_SUN",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_SWS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TC1",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TC2",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TDL",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TFP",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TIP",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TIV",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TMP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TPC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TPT",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_TRT",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 2 Ref/6 Int */
                    PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER, 6, 0),

    {{"_TSD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 5 Int with count */
                    PACKAGE_INFO (ACPI_PTYPE2_COUNT,ACPI_RTYPE_INTEGER, 5,0,0,0),

    {{"_TSN",   METHOD_0ARGS,                          /* ACPI 6.0 */
                METHOD_RETURNS (ACPI_RTYPE_REFERENCE)}},

    {{"_TSP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TSS",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 5 Int */
                    PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 5,0,0,0),

    {{"_TST",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_TTS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_NO_RETURN_VALUE}},

    {{"_TZD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
                    PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),

    {{"_TZM",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_REFERENCE)}},

    {{"_TZP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_UID",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING)}},

    {{"_UPC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),

    {{"_UPD",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_UPP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    {{"_VPO",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},

    /* Acpi 1.0 defined _WAK with no return value. Later, it was changed to return a package */

    {{"_WAK",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_NONE | ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE)}},
                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0,0,0), /* Fixed-length (2 Int), but is optional */

    /* _WDG/_WED are MS extensions defined by "Windows Instrumentation" */

    {{"_WDG",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},

    {{"_WED",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER)}},

    {{"_WPC",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},  /* ACPI 6.1 */

    {{"_WPP",   METHOD_0ARGS,
                METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},  /* ACPI 6.1 */

    PACKAGE_INFO (0,0,0,0,0,0) /* Table terminator */
};
#else
extern const ACPI_PREDEFINED_INFO       AcpiGbl_PredefinedMethods[];
#endif


#if (defined ACPI_CREATE_RESOURCE_TABLE && defined ACPI_APPLICATION)
/******************************************************************************
 *
 * Predefined names for use in Resource Descriptors. These names do not
 * appear in the global Predefined Name table (since these names never
 * appear in actual AML byte code, only in the original ASL)
 *
 * Note: Used by iASL compiler and AcpiHelp utility only.
 *
 *****************************************************************************/

const ACPI_PREDEFINED_INFO      AcpiGbl_ResourceNames[] =
{
    {{"_ADR",   WIDTH_16 | WIDTH_64,            0}},
    {{"_ALN",   WIDTH_8 | WIDTH_16 | WIDTH_32,  0}},
    {{"_ASI",   WIDTH_8,                        0}},
    {{"_ASZ",   WIDTH_8,                        0}},
    {{"_ATT",   WIDTH_64,                       0}},
    {{"_BAS",   WIDTH_16 | WIDTH_32,            0}},
    {{"_BM_",   WIDTH_1,                        0}},
    {{"_DBT",   WIDTH_16,                       0}},  /* Acpi 5.0 */
    {{"_DEC",   WIDTH_1,                        0}},
    {{"_DMA",   WIDTH_8,                        0}},
    {{"_DPL",   WIDTH_1,                        0}},  /* Acpi 5.0 */
    {{"_DRS",   WIDTH_16,                       0}},  /* Acpi 5.0 */
    {{"_END",   WIDTH_1,                        0}},  /* Acpi 5.0 */
    {{"_FLC",   WIDTH_2,                        0}},  /* Acpi 5.0 */
    {{"_GRA",   WIDTH_ADDRESS,                  0}},
    {{"_HE_",   WIDTH_1,                        0}},
    {{"_INT",   WIDTH_16 | WIDTH_32,            0}},
    {{"_IOR",   WIDTH_2,                        0}},  /* Acpi 5.0 */
    {{"_LEN",   WIDTH_8 | WIDTH_ADDRESS,        0}},
    {{"_LIN",   WIDTH_8,                        0}},  /* Acpi 5.0 */
    {{"_LL_",   WIDTH_1,                        0}},
    {{"_MAF",   WIDTH_1,                        0}},
    {{"_MAX",   WIDTH_ADDRESS,                  0}},
    {{"_MEM",   WIDTH_2,                        0}},
    {{"_MIF",   WIDTH_1,                        0}},
    {{"_MIN",   WIDTH_ADDRESS,                  0}},
    {{"_MOD",   WIDTH_1,                        0}},  /* Acpi 5.0 */
    {{"_MTP",   WIDTH_2,                        0}},
    {{"_PAR",   WIDTH_8,                        0}},  /* Acpi 5.0 */
    {{"_PHA",   WIDTH_1,                        0}},  /* Acpi 5.0 */
    {{"_PIN",   WIDTH_16,                       0}},  /* Acpi 5.0 */
    {{"_PPI",   WIDTH_8,                        0}},  /* Acpi 5.0 */
    {{"_POL",   WIDTH_1 | WIDTH_2,              0}},  /* Acpi 5.0 */
    {{"_RBO",   WIDTH_8,                        0}},
    {{"_RBW",   WIDTH_8,                        0}},
    {{"_RNG",   WIDTH_1,                        0}},
    {{"_RT_",   WIDTH_8,                        0}},  /* Acpi 3.0 */
    {{"_RW_",   WIDTH_1,                        0}},
    {{"_RXL",   WIDTH_16,                       0}},  /* Acpi 5.0 */
    {{"_SHR",   WIDTH_2,                        0}},
    {{"_SIZ",   WIDTH_2,                        0}},
    {{"_SLV",   WIDTH_1,                        0}},  /* Acpi 5.0 */
    {{"_SPE",   WIDTH_32,                       0}},  /* Acpi 5.0 */
    {{"_STB",   WIDTH_2,                        0}},  /* Acpi 5.0 */
    {{"_TRA",   WIDTH_ADDRESS,                  0}},
    {{"_TRS",   WIDTH_1,                        0}},
    {{"_TSF",   WIDTH_8,                        0}},  /* Acpi 3.0 */
    {{"_TTP",   WIDTH_1,                        0}},
    {{"_TXL",   WIDTH_16,                       0}},  /* Acpi 5.0 */
    {{"_TYP",   WIDTH_2 | WIDTH_16,             0}},
    {{"_VEN",   VARIABLE_DATA,                  0}},  /* Acpi 5.0 */
    PACKAGE_INFO (0,0,0,0,0,0) /* Table terminator */
};

const ACPI_PREDEFINED_INFO              AcpiGbl_ScopeNames[] = {
    {{"_GPE",     0,      0}},
    {{"_PR_",     0,      0}},
    {{"_SB_",     0,      0}},
    {{"_SI_",     0,      0}},
    {{"_TZ_",     0,      0}},
    PACKAGE_INFO (0,0,0,0,0,0) /* Table terminator */
};
#else
extern const ACPI_PREDEFINED_INFO       AcpiGbl_ResourceNames[];
#endif

#endif
