Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fce7a4b authored by Bob Moore's avatar Bob Moore Committed by Len Brown
Browse files

ACPI 5.0: Add new predefined names



Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 0e243178
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -319,7 +319,8 @@ struct acpi_name_info {

/*
 * 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 {
	u8 type;
+38 −1
Original line number Diff line number Diff line
@@ -94,6 +94,14 @@
 * 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
 *      object type
 *      count
 *      object type
 *      count = 0 (optional)
 *      (Used for _DLM)
 *
 *****************************************************************************/

enum acpi_return_package_types {
@@ -105,7 +113,8 @@ enum acpi_return_package_types {
	ACPI_PTYPE2_PKG_COUNT = 6,
	ACPI_PTYPE2_FIXED = 7,
	ACPI_PTYPE2_MIN = 8,
	ACPI_PTYPE2_REV_FIXED = 9
	ACPI_PTYPE2_REV_FIXED = 9,
	ACPI_PTYPE2_FIX_VAR = 10
};

#ifdef ACPI_CREATE_PREDEFINED_TABLE
@@ -154,6 +163,7 @@ static const union acpi_predefined_info predefined_names[] =
	{{"_AC8", 0, ACPI_RTYPE_INTEGER}},
	{{"_AC9", 0, ACPI_RTYPE_INTEGER}},
	{{"_ADR", 0, ACPI_RTYPE_INTEGER}},
	{{"_AEI", 0, ACPI_RTYPE_BUFFER}},
	{{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
			  {{{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) */
			  {{{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}},
	{{"_CRT", 0, ACPI_RTYPE_INTEGER}},
	{{"_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) */
			  {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},

	{{"_CWS", 1, ACPI_RTYPE_INTEGER}},
	{{"_DCK", 1, ACPI_RTYPE_INTEGER}},
	{{"_DCS", 0, ACPI_RTYPE_INTEGER}},
	{{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
	{{"_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}},
	{{"_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}},
	{{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
			  {{{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}},
	{{"_EJ4", 1, 0}},
	{{"_EJD", 0, ACPI_RTYPE_STRING}},
	{{"_EVT", 1, 0}},
	{{"_FDE", 0, ACPI_RTYPE_BUFFER}},
	{{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
			  {{{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}},

	{{"_GAI", 0, ACPI_RTYPE_INTEGER}},
	{{"_GCP", 0, ACPI_RTYPE_INTEGER}},
	{{"_GHL", 0, ACPI_RTYPE_INTEGER}},
	{{"_GLK", 0, ACPI_RTYPE_INTEGER}},
	{{"_GPD", 0, ACPI_RTYPE_INTEGER}},
	{{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
	{{"_GRT", 0, ACPI_RTYPE_BUFFER}},
	{{"_GSB", 0, ACPI_RTYPE_INTEGER}},
	{{"_GTF", 0, ACPI_RTYPE_BUFFER}},
	{{"_GTM", 0, ACPI_RTYPE_BUFFER}},
	{{"_GTS", 1, 0}},
	{{"_GWS", 1, ACPI_RTYPE_INTEGER}},
	{{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
	{{"_HOT", 0, ACPI_RTYPE_INTEGER}},
	{{"_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) */
			  {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},

	{{"_HRV", 0, ACPI_RTYPE_INTEGER}},
	{{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
	{{"_INI", 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) */
	{{{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) */
	{{{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 */
			  {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},

	{{"_PSE", 1, 0}},
	{{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
			  {{{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}},
	{{"_SPD", 1, ACPI_RTYPE_INTEGER}},
	{{"_SRS", 1, 0}},
	{{"_SRT", 1, ACPI_RTYPE_INTEGER}},
	{{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
	{{"_SST", 1, 0}},
	{{"_STA", 0, ACPI_RTYPE_INTEGER}},
@@ -464,6 +500,7 @@ static const union acpi_predefined_info predefined_names[] =
	{{"_STP", 2, ACPI_RTYPE_INTEGER}},
	{{"_STR", 0, ACPI_RTYPE_BUFFER}},
	{{"_STV", 2, ACPI_RTYPE_INTEGER}},
	{{"_SUB", 0, ACPI_RTYPE_STRING}},
	{{"_SUN", 0, ACPI_RTYPE_INTEGER}},
	{{"_SWS", 0, ACPI_RTYPE_INTEGER}},
	{{"_TC1", 0, ACPI_RTYPE_INTEGER}},
+29 −0
Original line number Diff line number Diff line
@@ -620,6 +620,7 @@ acpi_ns_check_package(struct acpi_predefined_data *data,
	case ACPI_PTYPE2_FIXED:
	case ACPI_PTYPE2_MIN:
	case ACPI_PTYPE2_COUNT:
	case ACPI_PTYPE2_FIX_VAR:

		/*
		 * 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;

		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:

			/* Each sub-package has a fixed length */
+1 −0
Original line number Diff line number Diff line
@@ -634,6 +634,7 @@ acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
	case ACPI_PTYPE2_FIXED:
	case ACPI_PTYPE2_MIN:
	case ACPI_PTYPE2_REV_FIXED:
	case ACPI_PTYPE2_FIX_VAR:
		break;

	default:
+3 −2
Original line number Diff line number Diff line
@@ -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
	 * 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++) {
		*dest = (char)ACPI_TOUPPER(*source);