[PATCH 2/7] acpi: method: merge _PCT & _PTC method tests
Alex Hung
alex.hung at canonical.com
Sat Jan 23 02:12:26 UTC 2021
Both methods have the same definition.
Signed-off-by: Alex Hung <alex.hung at canonical.com>
---
src/acpi/method/method.c | 87 +++++++++++++++-------------------------
1 file changed, 33 insertions(+), 54 deletions(-)
diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
index 8ee03b1e..2f59ac41 100644
--- a/src/acpi/method/method.c
+++ b/src/acpi/method/method.c
@@ -2100,13 +2100,18 @@ static int method_test_CST(fwts_framework *fw)
"_CST", NULL, 0, method_test_CST_return, NULL);
}
-static void method_test_PCT_return(
+static void method_test_PCT_PTC_return(
fwts_framework *fw,
char *name,
ACPI_BUFFER *buf,
ACPI_OBJECT *obj,
void *private)
{
+ uint32_t i;
+ bool failed = false;
+ char *objname = (char*) private;
+ char tmp[128];
+
static const fwts_package_element elements[] = {
{ ACPI_TYPE_BUFFER, "ControlRegister" },
{ ACPI_TYPE_BUFFER, "StatusRegister" },
@@ -2120,13 +2125,36 @@ static void method_test_PCT_return(
if (fwts_method_package_elements_type(fw, name, obj, elements) != FWTS_OK)
return;
- fwts_method_passed_sane(fw, name, "package");
+ snprintf(tmp, sizeof(tmp), "Method%sBadElement", objname);
+ for (i = 0; i < obj->Package.Count; i++) {
+ ACPI_RESOURCE *resource = NULL;
+ ACPI_STATUS status;
+ ACPI_OBJECT *element_buf = &obj->Package.Elements[i];
+
+ status = AcpiBufferToResource(element_buf->Buffer.Pointer, element_buf->Buffer.Length, &resource);
+ if (ACPI_FAILURE(status) || !resource) {
+ failed = true;
+ fwts_failed(fw, LOG_LEVEL_HIGH, tmp,
+ "%s should contain only Resource Descriptors", name);
+ continue;
+ }
+
+ if (resource->Type != ACPI_RESOURCE_TYPE_GENERIC_REGISTER) {
+ failed = true;
+ fwts_failed(fw, LOG_LEVEL_HIGH, tmp,
+ "%s should contain only Resource Type 16, got %" PRIu32 "\n",
+ name, resource->Type);
+ }
+ }
+
+ if (!failed)
+ fwts_method_passed_sane(fw, name, "package");
}
static int method_test_PCT(fwts_framework *fw)
{
- return method_evaluate_method(fw, METHOD_OPTIONAL, "_PCT", NULL,
- 0, method_test_PCT_return, NULL);
+ return method_evaluate_method(fw, METHOD_OPTIONAL,
+ "_PCT", NULL, 0, method_test_PCT_PTC_return, "_PCT");
}
static void method_test_PSS_return(
@@ -2303,59 +2331,10 @@ static int method_test_PDL(fwts_framework *fw)
"_PDL", NULL, 0, fwts_method_test_integer_return, NULL);
}
-
-static void method_test_PTC_return(
- fwts_framework *fw,
- char *name,
- ACPI_BUFFER *buf,
- ACPI_OBJECT *obj,
- void *private)
-{
- uint32_t i;
- bool failed = false;
-
- FWTS_UNUSED(private);
-
- if (fwts_method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK)
- return;
-
- if (fwts_method_package_elements_all_type(fw, name, obj, ACPI_TYPE_BUFFER) != FWTS_OK)
- return;
-
- if (fwts_method_package_count_equal(fw, name, obj, 2) != FWTS_OK)
- return;
-
- for (i = 0; i < obj->Package.Count; i++) {
- ACPI_RESOURCE *resource = NULL;
- ACPI_STATUS status;
- ACPI_OBJECT *element_buf = &obj->Package.Elements[i];
-
- status = AcpiBufferToResource(element_buf->Buffer.Pointer, element_buf->Buffer.Length, &resource);
- if (ACPI_FAILURE(status) || !resource) {
- failed = true;
- fwts_failed(fw, LOG_LEVEL_HIGH,
- "Method_PTCBadElement",
- "%s should contain only Resource Descriptors", name);
- continue;
- }
-
- if (resource->Type != ACPI_RESOURCE_TYPE_GENERIC_REGISTER) {
- failed = true;
- fwts_failed(fw, LOG_LEVEL_HIGH,
- "Method_PTCBadElement",
- "%s should contain only Resource Type 16, got %" PRIu32 "\n",
- name, resource->Type);
- }
- }
-
- if (!failed)
- fwts_method_passed_sane(fw, name, "package");
-}
-
static int method_test_PTC(fwts_framework *fw)
{
return method_evaluate_method(fw, METHOD_OPTIONAL,
- "_PTC", NULL, 0, method_test_PTC_return, NULL);
+ "_PTC", NULL, 0, method_test_PCT_PTC_return, "_PTC");
}
static int method_test_TDL(fwts_framework *fw)
--
2.25.1
More information about the fwts-devel
mailing list