ACPI 5.0: Add new predefined names
Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Родитель
0e24317804
Коммит
7fce7a4b0d
|
@ -319,7 +319,8 @@ struct acpi_name_info {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
|
* Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
|
||||||
* ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT
|
* ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT,
|
||||||
|
* ACPI_PTYPE2_FIX_VAR
|
||||||
*/
|
*/
|
||||||
struct acpi_package_info {
|
struct acpi_package_info {
|
||||||
u8 type;
|
u8 type;
|
||||||
|
|
|
@ -94,6 +94,14 @@
|
||||||
* ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
|
* ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
|
||||||
* (Used for _ART, _FPS)
|
* (Used for _ART, _FPS)
|
||||||
*
|
*
|
||||||
|
* ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements
|
||||||
|
* followed by an optional element
|
||||||
|
* object type
|
||||||
|
* count
|
||||||
|
* object type
|
||||||
|
* count = 0 (optional)
|
||||||
|
* (Used for _DLM)
|
||||||
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
enum acpi_return_package_types {
|
enum acpi_return_package_types {
|
||||||
|
@ -105,7 +113,8 @@ enum acpi_return_package_types {
|
||||||
ACPI_PTYPE2_PKG_COUNT = 6,
|
ACPI_PTYPE2_PKG_COUNT = 6,
|
||||||
ACPI_PTYPE2_FIXED = 7,
|
ACPI_PTYPE2_FIXED = 7,
|
||||||
ACPI_PTYPE2_MIN = 8,
|
ACPI_PTYPE2_MIN = 8,
|
||||||
ACPI_PTYPE2_REV_FIXED = 9
|
ACPI_PTYPE2_REV_FIXED = 9,
|
||||||
|
ACPI_PTYPE2_FIX_VAR = 10
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ACPI_CREATE_PREDEFINED_TABLE
|
#ifdef ACPI_CREATE_PREDEFINED_TABLE
|
||||||
|
@ -154,6 +163,7 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_AC8", 0, ACPI_RTYPE_INTEGER}},
|
{{"_AC8", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_AC9", 0, ACPI_RTYPE_INTEGER}},
|
{{"_AC9", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_ADR", 0, ACPI_RTYPE_INTEGER}},
|
{{"_ADR", 0, ACPI_RTYPE_INTEGER}},
|
||||||
|
{{"_AEI", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
{{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
||||||
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
|
||||||
|
|
||||||
|
@ -229,6 +239,13 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
|
{{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
|
||||||
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
|
||||||
|
|
||||||
|
{{"_CLS", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int) */
|
||||||
|
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
|
||||||
|
|
||||||
|
{{"_CPC", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Bufs) */
|
||||||
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0, 0}, 0,
|
||||||
|
0}},
|
||||||
|
|
||||||
{{"_CRS", 0, ACPI_RTYPE_BUFFER}},
|
{{"_CRS", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_CRT", 0, ACPI_RTYPE_INTEGER}},
|
{{"_CRT", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
|
{{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
|
||||||
|
@ -237,12 +254,21 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
|
{{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
|
||||||
{{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
|
{{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
|
||||||
|
|
||||||
|
{{"_CWS", 1, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_DCK", 1, ACPI_RTYPE_INTEGER}},
|
{{"_DCK", 1, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_DCS", 0, ACPI_RTYPE_INTEGER}},
|
{{"_DCS", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
|
{{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
|
||||||
{{"_DDN", 0, ACPI_RTYPE_STRING}},
|
{{"_DDN", 0, ACPI_RTYPE_STRING}},
|
||||||
|
{{"_DEP", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
||||||
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
|
||||||
|
|
||||||
{{"_DGS", 0, ACPI_RTYPE_INTEGER}},
|
{{"_DGS", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_DIS", 0, 0}},
|
{{"_DIS", 0, 0}},
|
||||||
|
|
||||||
|
{{"_DLM", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */
|
||||||
|
{{{ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1,
|
||||||
|
ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER}, 0, 0}},
|
||||||
|
|
||||||
{{"_DMA", 0, ACPI_RTYPE_BUFFER}},
|
{{"_DMA", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
|
{{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
|
||||||
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
|
||||||
|
@ -262,6 +288,7 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_EJ3", 1, 0}},
|
{{"_EJ3", 1, 0}},
|
||||||
{{"_EJ4", 1, 0}},
|
{{"_EJ4", 1, 0}},
|
||||||
{{"_EJD", 0, ACPI_RTYPE_STRING}},
|
{{"_EJD", 0, ACPI_RTYPE_STRING}},
|
||||||
|
{{"_EVT", 1, 0}},
|
||||||
{{"_FDE", 0, ACPI_RTYPE_BUFFER}},
|
{{"_FDE", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
|
{{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
|
||||||
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
|
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
|
||||||
|
@ -281,14 +308,17 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
|
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
|
||||||
|
|
||||||
{{"_GAI", 0, ACPI_RTYPE_INTEGER}},
|
{{"_GAI", 0, ACPI_RTYPE_INTEGER}},
|
||||||
|
{{"_GCP", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_GHL", 0, ACPI_RTYPE_INTEGER}},
|
{{"_GHL", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_GLK", 0, ACPI_RTYPE_INTEGER}},
|
{{"_GLK", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_GPD", 0, ACPI_RTYPE_INTEGER}},
|
{{"_GPD", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
|
{{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
|
||||||
|
{{"_GRT", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_GSB", 0, ACPI_RTYPE_INTEGER}},
|
{{"_GSB", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_GTF", 0, ACPI_RTYPE_BUFFER}},
|
{{"_GTF", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_GTM", 0, ACPI_RTYPE_BUFFER}},
|
{{"_GTM", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_GTS", 1, 0}},
|
{{"_GTS", 1, 0}},
|
||||||
|
{{"_GWS", 1, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
|
{{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
|
||||||
{{"_HOT", 0, ACPI_RTYPE_INTEGER}},
|
{{"_HOT", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
|
{{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
|
||||||
|
@ -303,6 +333,7 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
|
{{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
|
||||||
{{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
|
{{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
|
||||||
|
|
||||||
|
{{"_HRV", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
|
{{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
|
||||||
{{"_INI", 0, 0}},
|
{{"_INI", 0, 0}},
|
||||||
{{"_IRC", 0, 0}},
|
{{"_IRC", 0, 0}},
|
||||||
|
@ -361,6 +392,9 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
{{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
||||||
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
|
||||||
|
|
||||||
|
{{"_PRE", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
||||||
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
|
||||||
|
|
||||||
{{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
{{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
||||||
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
|
||||||
|
|
||||||
|
@ -391,6 +425,7 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
|
{{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
|
||||||
{{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
|
{{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
|
||||||
|
|
||||||
|
{{"_PSE", 1, 0}},
|
||||||
{{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
{{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
|
||||||
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
|
{{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
|
||||||
|
|
||||||
|
@ -457,6 +492,7 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_SLI", 0, ACPI_RTYPE_BUFFER}},
|
{{"_SLI", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_SPD", 1, ACPI_RTYPE_INTEGER}},
|
{{"_SPD", 1, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_SRS", 1, 0}},
|
{{"_SRS", 1, 0}},
|
||||||
|
{{"_SRT", 1, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
|
{{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
|
||||||
{{"_SST", 1, 0}},
|
{{"_SST", 1, 0}},
|
||||||
{{"_STA", 0, ACPI_RTYPE_INTEGER}},
|
{{"_STA", 0, ACPI_RTYPE_INTEGER}},
|
||||||
|
@ -464,6 +500,7 @@ static const union acpi_predefined_info predefined_names[] =
|
||||||
{{"_STP", 2, ACPI_RTYPE_INTEGER}},
|
{{"_STP", 2, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_STR", 0, ACPI_RTYPE_BUFFER}},
|
{{"_STR", 0, ACPI_RTYPE_BUFFER}},
|
||||||
{{"_STV", 2, ACPI_RTYPE_INTEGER}},
|
{{"_STV", 2, ACPI_RTYPE_INTEGER}},
|
||||||
|
{{"_SUB", 0, ACPI_RTYPE_STRING}},
|
||||||
{{"_SUN", 0, ACPI_RTYPE_INTEGER}},
|
{{"_SUN", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_SWS", 0, ACPI_RTYPE_INTEGER}},
|
{{"_SWS", 0, ACPI_RTYPE_INTEGER}},
|
||||||
{{"_TC1", 0, ACPI_RTYPE_INTEGER}},
|
{{"_TC1", 0, ACPI_RTYPE_INTEGER}},
|
||||||
|
|
|
@ -620,6 +620,7 @@ acpi_ns_check_package(struct acpi_predefined_data *data,
|
||||||
case ACPI_PTYPE2_FIXED:
|
case ACPI_PTYPE2_FIXED:
|
||||||
case ACPI_PTYPE2_MIN:
|
case ACPI_PTYPE2_MIN:
|
||||||
case ACPI_PTYPE2_COUNT:
|
case ACPI_PTYPE2_COUNT:
|
||||||
|
case ACPI_PTYPE2_FIX_VAR:
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These types all return a single Package that consists of a
|
* These types all return a single Package that consists of a
|
||||||
|
@ -759,6 +760,34 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ACPI_PTYPE2_FIX_VAR:
|
||||||
|
/*
|
||||||
|
* Each subpackage has a fixed number of elements and an
|
||||||
|
* optional element
|
||||||
|
*/
|
||||||
|
expected_count =
|
||||||
|
package->ret_info.count1 + package->ret_info.count2;
|
||||||
|
if (sub_package->package.count < expected_count) {
|
||||||
|
goto package_too_small;
|
||||||
|
}
|
||||||
|
|
||||||
|
status =
|
||||||
|
acpi_ns_check_package_elements(data, sub_elements,
|
||||||
|
package->ret_info.
|
||||||
|
object_type1,
|
||||||
|
package->ret_info.
|
||||||
|
count1,
|
||||||
|
package->ret_info.
|
||||||
|
object_type2,
|
||||||
|
sub_package->package.
|
||||||
|
count -
|
||||||
|
package->ret_info.
|
||||||
|
count1, 0);
|
||||||
|
if (ACPI_FAILURE(status)) {
|
||||||
|
return (status);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case ACPI_PTYPE2_FIXED:
|
case ACPI_PTYPE2_FIXED:
|
||||||
|
|
||||||
/* Each sub-package has a fixed length */
|
/* Each sub-package has a fixed length */
|
||||||
|
|
|
@ -634,6 +634,7 @@ acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
|
||||||
case ACPI_PTYPE2_FIXED:
|
case ACPI_PTYPE2_FIXED:
|
||||||
case ACPI_PTYPE2_MIN:
|
case ACPI_PTYPE2_MIN:
|
||||||
case ACPI_PTYPE2_REV_FIXED:
|
case ACPI_PTYPE2_REV_FIXED:
|
||||||
|
case ACPI_PTYPE2_FIX_VAR:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -467,11 +467,12 @@ acpi_ns_repair_HID(struct acpi_predefined_data *data,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy and uppercase the string. From the ACPI specification:
|
* Copy and uppercase the string. From the ACPI 5.0 specification:
|
||||||
*
|
*
|
||||||
* A valid PNP ID must be of the form "AAA####" where A is an uppercase
|
* A valid PNP ID must be of the form "AAA####" where A is an uppercase
|
||||||
* letter and # is a hex digit. A valid ACPI ID must be of the form
|
* letter and # is a hex digit. A valid ACPI ID must be of the form
|
||||||
* "ACPI####" where # is a hex digit.
|
* "NNNN####" where N is an uppercase letter or decimal digit, and
|
||||||
|
* # is a hex digit.
|
||||||
*/
|
*/
|
||||||
for (dest = new_string->string.pointer; *source; dest++, source++) {
|
for (dest = new_string->string.pointer; *source; dest++, source++) {
|
||||||
*dest = (char)ACPI_TOUPPER(*source);
|
*dest = (char)ACPI_TOUPPER(*source);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче