[PATCH 7/8] acpi: method: Add PRx, SxD, SxW checks

Colin King colin.king at canonical.com
Wed Sep 19 17:53:56 UTC 2012


From: Colin Ian King <colin.king at canonical.com>

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/acpi/method/method.c |  100 ++++++++++++++++++++++++++++++----------------
 1 file changed, 66 insertions(+), 34 deletions(-)

diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
index 0e82801..86b92ea 100644
--- a/src/acpi/method/method.c
+++ b/src/acpi/method/method.c
@@ -150,10 +150,10 @@
  * _PPC  8.4.4.3	N
  * _PPE  8.4.6		N
  * _PR   5.3.1		N
- * _PR0  7.2.8		N
- * _PR1	 7.2.9		N
- * _PR2  7.2.10		N
- * _PR3  7.2.11		N
+ * _PR0  7.2.8		Y
+ * _PR1	 7.2.9		Y
+ * _PR2  7.2.10		Y
+ * _PR3  7.2.11		Y
  * _PRE  7.2.12		Y
  * _PRL  10.3.4		N
  * _PRS  6.2.11		N
@@ -187,15 +187,15 @@
  * _S3_  7.3.4.4	N
  * _S4_  7.3.4.5	N
  * _S5_  7.3.4.6	N
- * _S1D  7.2.16		N
- * _S2D  7.2.17		N
- * _S3D  7.2.18		N
- * _S4D  7.2.19		N
- * _S0W  7.2.20		N
- * _S1W  7.2.21		N
- * _S2W	 7.2.22		N
- * _S3W  7.2.23		N
- * _S4W  7.2.24		N
+ * _S1D  7.2.16		Y
+ * _S2D  7.2.17		Y
+ * _S3D  7.2.18		Y
+ * _S4D  7.2.19		Y
+ * _S0W  7.2.20		Y
+ * _S1W  7.2.21		Y
+ * _S2W	 7.2.22		Y
+ * _S3W  7.2.23		Y
+ * _S4W  7.2.24		Y
  * _SB_  5.3.1		n/a
  * _SBS  10.1.3		Y
  * _SCP  11.4.11	Y
@@ -1195,7 +1195,7 @@ static int method_test_PSE(fwts_framework *fw)
 		"_PSE", arg, 1, method_test_NULL_return, NULL);
 }
 
-static void method_test_PRE_return(
+static void method_test_power_resources_return(
 	fwts_framework *fw,
 	char *name,
 	ACPI_BUFFER *buf,
@@ -1211,20 +1211,27 @@ static void method_test_PRE_return(
 	for (i = 0; i < obj->Package.Count; i++) {
 		if (obj->Package.Elements[i].Type != ACPI_TYPE_LOCAL_REFERENCE) {
 			fwts_failed(fw, LOG_LEVEL_MEDIUM,
-				"Method_PREElementType",
-				"_PRE package element %d was not a reference.",
-				i);
+				"Method_PowerResourceElementType",
+				"%s package element %d was not a reference.",
+				name, i);
 			fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
 		}
 	}
 }
 
-static int method_test_PRE(fwts_framework *fw)
-{
-	return method_evaluate_method(fw, METHOD_OPTIONAL,
-		"_PRE", NULL, 0, method_test_PRE_return, NULL);
+#define method_test_POWER(name)						\
+static int method_test ## name(fwts_framework *fw)			\
+{									\
+	return method_evaluate_method(fw, METHOD_OPTIONAL,		\
+		# name, NULL, 0, method_test_power_resources_return, # name);\
 }
 
+method_test_POWER(_PR0)
+method_test_POWER(_PR1)
+method_test_POWER(_PR2)
+method_test_POWER(_PR3)
+method_test_POWER(_PRE)
+
 static int method_test_PSW(fwts_framework *fw)
 {
 	ACPI_OBJECT arg[1];
@@ -1236,6 +1243,31 @@ static int method_test_PSW(fwts_framework *fw)
 		"_PSW", arg, 1, method_test_NULL_return, NULL);
 }
 
+#define method_test_SxD(name)						\
+static int method_test ## name(fwts_framework *fw)			\
+{									\
+	return method_evaluate_method(fw, METHOD_OPTIONAL,		\
+		# name, NULL, 0, method_test_integer_return, # name);	\
+}
+
+method_test_SxD(_S1D)
+method_test_SxD(_S2D)
+method_test_SxD(_S3D)
+method_test_SxD(_S4D)
+
+#define method_test_SxW(name)						\
+static int method_test ## name(fwts_framework *fw)			\
+{									\
+	return method_evaluate_method(fw, METHOD_OPTIONAL,		\
+		# name, NULL, 0, method_test_integer_return, # name);	\
+}
+
+method_test_SxW(_S0W)
+method_test_SxW(_S1W)
+method_test_SxW(_S2W)
+method_test_SxW(_S3W)
+method_test_SxW(_S4W)
+
 static int method_test_IRC(fwts_framework *fw)
 {
 	return method_evaluate_method(fw, METHOD_OPTIONAL,
@@ -3164,10 +3196,10 @@ static fwts_framework_minor_test method_tests[] = {
 	{ method_test_DSW, "Check _DSW (Device Sleep Wake)." },
 	{ method_test_IRC, "Check _IRC (In Rush Current)." },
 	{ method_test_PRE, "Check _PRE (Power Resources for Enumeration)." },
-	/* { method_test_PR0, "Check _PR0 (Power Resources for D0)." }, */
-	/* { method_test_PR1, "Check _PR1 (Power Resources for D1)." }, */
-	/* { method_test_PR2, "Check _PR2 (Power Resources for D2)." }, */
-	/* { method_test_PR3, "Check _PR3 (Power Resources for D3)." }, */
+	{ method_test_PR0, "Check _PR0 (Power Resources for D0)." },
+	{ method_test_PR1, "Check _PR1 (Power Resources for D1)." },
+	{ method_test_PR2, "Check _PR2 (Power Resources for D2)." },
+	{ method_test_PR3, "Check _PR3 (Power Resources for D3)." },
 	/* { method_test_PRW, "Check _PRW (Power Resources for Wake)." }, */
 	{ method_test_PS0, "Check _PS0 (Power State 0)." },
 	{ method_test_PS1, "Check _PS1 (Power State 1)." },
@@ -3176,15 +3208,15 @@ static fwts_framework_minor_test method_tests[] = {
 	{ method_test_PSC, "Check _PSC (Power State Current)." },
 	{ method_test_PSE, "Check _PSE (Power State for Enumeration)." },
 	{ method_test_PSW, "Check _PSW (Power State Wake)." },
-	/* { method_test_S1D, "Check _S1D (S1 Device State)." }, */
-	/* { method_test_S2D, "Check _S2D (S2 Device State)." }, */
-	/* { method_test_S3D, "Check _S3D (S3 Device State)." }, */
-	/* { method_test_S4D, "Check _S4D (S4 Device StSystem Statusate)." }, */
-	/* { method_test_S0W, "Check _S0W (S0 Device Wake State)." }, */
-	/* { method_test_S1W, "Check _S1W (S1 Device Wake State)." }, */
-	/* { method_test_S2W, "Check _S2W (S2 Device Wake State)." }, */
-	/* { method_test_S3W, "Check _S3W (S3 Device Wake State)." }, */
-	/* { method_test_S4W, "Check _S4W (S4 Device Wake State)." }, */
+	{ method_test_S1D, "Check _S1D (S1 Device State)." },
+	{ method_test_S2D, "Check _S2D (S2 Device State)." },
+	{ method_test_S3D, "Check _S3D (S3 Device State)." },
+	{ method_test_S4D, "Check _S4D (S4 Device State)." },
+	{ method_test_S0W, "Check _S0W (S0 Device Wake State)." },
+	{ method_test_S1W, "Check _S1W (S1 Device Wake State)." },
+	{ method_test_S2W, "Check _S2W (S2 Device Wake State)." },
+	{ method_test_S3W, "Check _S3W (S3 Device Wake State)." },
+	{ method_test_S4W, "Check _S4W (S4 Device Wake State)." },
 
 	/* Section 7.3 OEM-Supplied System-Level Control Methods */
 	/* { method_test_S0_, "Check _S0_ (S0 System State)." }, */
-- 
1.7.10.4




More information about the fwts-devel mailing list