ACK: [PATCH 2/3] acpi: method: add _GPE test

ivanhu ivan.hu at canonical.com
Mon Sep 21 06:57:00 UTC 2015



On 2015年09月15日 17:25, Alex Hung wrote:
> Signed-off-by: Alex Hung <alex.hung at canonical.com>
> ---
>   src/acpi/method/method.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++--
>   1 file changed, 56 insertions(+), 2 deletions(-)
>
> diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
> index b3df7e5..8172336 100644
> --- a/src/acpi/method/method.c
> +++ b/src/acpi/method/method.c
> @@ -109,7 +109,7 @@
>    * _GL   5.7.1		n/a
>    * _GLK  6.5.7		Y
>    * _GPD  B.4.4		Y
> - * _GPE  5.3.1, 12.11	N
> + * _GPE  12.11		Y
>    * _GRT  9.18.3		Y
>    * _GSB  6.2.6		Y
>    * _GTF  9.8.1.1	Y
> @@ -5779,6 +5779,58 @@ static int method_test_TZP(fwts_framework *fw)
>   		"_TZP", NULL, 0, method_test_polling_return, "_TZP");
>   }
>   
> +static void method_test_GPE_return(
> +	fwts_framework *fw,
> +	char *name,
> +	ACPI_BUFFER *buf,
> +	ACPI_OBJECT *obj,
> +	void *private)
> +{
> +	FWTS_UNUSED(private);
> +	FWTS_UNUSED(buf);
> +	bool failed = false;
> +
> +	switch (obj->Type) {
> +	case ACPI_TYPE_INTEGER:
> +		if (obj->Integer.Value <= 255)
> +			fwts_passed(fw, "%s returned an integer 0x%8.8" PRIx64,
> +				name, (uint64_t)obj->Integer.Value);
> +		else
> +			fwts_failed(fw, LOG_LEVEL_HIGH,
> +				"MethodGPEInvalidInteger",
> +				"%s returned an invalid integer 0x%8.8" PRIx64,
> +				name, (uint64_t)obj->Integer.Value);
> +		break;
> +	case ACPI_TYPE_PACKAGE:
> +		if (obj->Package.Elements[0].Type != ACPI_TYPE_LOCAL_REFERENCE) {
> +			failed = true;
> +			fwts_failed(fw, LOG_LEVEL_HIGH, "Method_GPEBadSubPackageReturnType",
> +			"%s sub-package element 0 is not a reference.",	name);
> +		}
> +
> +		if (obj->Package.Elements[1].Type != ACPI_TYPE_INTEGER) {
> +			failed = true;
> +			fwts_failed(fw, LOG_LEVEL_HIGH, "Method_GPEBadSubPackageReturnType",
> +			"%s sub-package element 1 is not an integer.", name);
> +		}
> +
> +		if (!failed)
> +			method_passed_sane(fw, name, "package");
> +
> +		break;
> +	default:
> +		fwts_failed(fw, LOG_LEVEL_HIGH, "Method_GPEBadSubReturnType",
> +			"%s did not return an integer or a package.", name);
> +		break;
> +	}
> +}
> +
> +static int method_test_GPE(fwts_framework *fw)
> +{
> +	return method_evaluate_method(fw, METHOD_OPTIONAL,
> +		"_GPE", NULL, 0, method_test_GPE_return, "_GPE");
> +}
> +
>   /*
>    * Section 16 Waking and Sleeping
>    */
> @@ -6323,7 +6375,6 @@ static fwts_framework_minor_test method_tests[] = {
>   	{ method_name_check, "Test Method Names." },
>   
>   	/* Section 5.3 */
> -	/* { method_test_GPE, "Test _GPE (General Purpose Events)." }, */
>   	/* { method_test_PR , "Test _PR  (Processor)." }, */
>   
>   	/* Section 5.6 ACPI Event Programming Model */
> @@ -6587,6 +6638,9 @@ static fwts_framework_minor_test method_tests[] = {
>   	{ method_test_TZM, "Test _TZM (Thermal Zone member)." },
>   	{ method_test_TZP, "Test _TZP (Thermal Zone Polling)." },
>   
> +	/* Section 12 Embedded Controller Interface */
> +	{ method_test_GPE, "Test _GPE (General Purpose Events)." },
> +
>   	/* Section 16 Waking and Sleeping */
>   
>   	{ method_test_PTS, "Test _PTS (Prepare to Sleep)." },

Acked-by: Ivan Hu <ivan.hu at canonical.com>



More information about the fwts-devel mailing list