From patchwork Tue Dec 2 17:31:21 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fu Wei X-Patchwork-Id: 416937 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id A095514017A; Wed, 3 Dec 2014 04:31:36 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1XvrIU-0000eo-RT; Tue, 02 Dec 2014 17:31:34 +0000 Received: from mail-pd0-f179.google.com ([209.85.192.179]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1XvrIM-0000eX-9h for fwts-devel@lists.ubuntu.com; Tue, 02 Dec 2014 17:31:26 +0000 Received: by mail-pd0-f179.google.com with SMTP id w10so13629223pde.38 for ; Tue, 02 Dec 2014 09:31:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:reply-to:organization :user-agent:mime-version:to:cc:subject:content-type :content-transfer-encoding; bh=5KG0lM1YoM2x7r1GIU6FWfzSNgDxsXP7dGeHWv2hH9M=; b=NOKpYCUt4TtXdjaiYjO+w938xLkFBiENORPosArSL19Rr/fM/mLaiC3tZw2L0o/HuW LHk8LysAfdUuDaX8KTaTi3UNlcxE8+VzJNl7t4kKDeIuGeAqmu0u37p87pdo4EnBqxhG botJX4GKykfNVo6imXYbAwqlhwyUviZznzdovSEwm6GZryNokxfPdaXTNt2KR2AJggTx ktXHDcKKM1XPQHFriHLgX/OmWCp5PL87Zys1nESfaI8ejkAPIo7awgNL4vkdoPpUXuyJ Bl19UyJfAs5Rmf27AZbwgfKrF9CbVkgZMYqSkdQGHjG1HEmwdwCdyTexOyg74wZqkPXS jAzg== X-Gm-Message-State: ALoCoQmVclB7KCwpQeGuagyYsXioGg3EsRjcWL+dnRmIJSeiByR0Wop1UaBsDtYaB2QuVbJbpJOY X-Received: by 10.70.54.37 with SMTP id g5mr411478pdp.71.1417541485061; Tue, 02 Dec 2014 09:31:25 -0800 (PST) Received: from [192.168.1.11] ([59.58.227.241]) by mx.google.com with ESMTPSA id q3sm20914892pdn.23.2014.12.02.09.31.22 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 02 Dec 2014 09:31:24 -0800 (PST) Message-ID: <547DF769.2030500@linaro.org> Date: Wed, 03 Dec 2014 01:31:21 +0800 From: Fu Wei Organization: Linaro User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0 MIME-Version: 1.0 To: fwts-devel Subject: [PATCH v2 2/3] ACPI: add the hardware reduced mode check function in src/lib/src/fwts_acpi_tables.c. Cc: Al Stone , Graeme Gregory , Hanjun Guo , Andrea Gallo , Ilias Biris X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Fu Wei List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: fwts-devel-bounces@lists.ubuntu.com It is a prerequisite for ignoring a missing FACS table in hardware-reduced mode. Signed-off-by: Fu Wei Acked-by: Hanjun Guo Reviewed-by: Al Stone Acked-by: Alex Hung --- src/lib/include/fwts_acpi.h | 1 + src/lib/include/fwts_acpi_tables.h | 2 ++ src/lib/src/fwts_acpi_tables.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h index 24ebc84..73a3461 100644 --- a/src/lib/include/fwts_acpi.h +++ b/src/lib/include/fwts_acpi.h @@ -46,6 +46,7 @@ extern const char *fwts_acpi_fadt_preferred_pm_profile[]; #define FWTS_ACPI_FADT_PREFERRED_PM_PROFILE(x) \ ((x) > 8) ? "Reserved" : fwts_acpi_fadt_preferred_pm_profile[x] +#define FWTS_ACPI_FADT_FLAGS_HW_REDUCED_ACPI (1<<20) /* 5.2.3.1 Generic Address Structure */ typedef struct { diff --git a/src/lib/include/fwts_acpi_tables.h b/src/lib/include/fwts_acpi_tables.h index 6977e87..798dfc5 100644 --- a/src/lib/include/fwts_acpi_tables.h +++ b/src/lib/include/fwts_acpi_tables.h @@ -45,4 +45,6 @@ int fwts_acpi_find_table_by_addr(fwts_framework *fw, const uint64_t addr, fwts_a int fwts_acpi_get_table(fwts_framework *fw, const int index, fwts_acpi_table_info **info); uint8_t fwts_acpi_checksum(const uint8_t *data, const int length); +fwts_bool fwts_acpi_is_reduced_hardware(const fwts_acpi_table_fadt *fadt); + #endif diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c index 397c0ce..ee592d6 100644 --- a/src/lib/src/fwts_acpi_tables.c +++ b/src/lib/src/fwts_acpi_tables.c @@ -275,6 +275,20 @@ int fwts_acpi_free_tables(void) } /* + * fwts_acpi_is_reduced_hardware() + * Check the ACPI tables for HW_REDUCED_ACPI bit in flag field. + */ +fwts_bool fwts_acpi_is_reduced_hardware(const fwts_acpi_table_fadt *fadt) +{ + if ((fadt->header.revision >= 5) && + (fadt->header.length >= 116)&& + (fadt->flags && FWTS_ACPI_FADT_FLAGS_HW_REDUCED_ACPI)) { + return FWTS_TRUE; + } + return FWTS_FALSE; +} + +/* * fwts_acpi_handle_fadt_tables() * depending on whether 32 or 64 bit address is usable, get the table * address and load it. This handles the DSDT and FACS as pointed to