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

Colin Ian King colin.king at canonical.com
Tue Sep 15 11:02:02 UTC 2015


On 15/09/15 10: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: Colin Ian King <colin.king at canonical.com>



More information about the fwts-devel mailing list