
Hi Wolfgang,
On Tue, 10 Mar 2020 at 03:26, Wolfgang Wallner < wolfgang.wallner@br-automation.com> wrote:
Hi Simon,
-----"Simon Glass" sjg@chromium.org schrieb: -----
Each ACPI table has its own version number. Add the version numbers in a single function so we can keep them consistent and easily see what versions are supported.
Start a new acpi_table file in a generic directory to house this
function.
We can move things over to this file from x86 as needed.
Signed-off-by: Simon Glass sjg@chromium.org
Changes in v2:
- Move the sandbox acpi_table.h header file to an earlier patch
- Use #defines for MADT and MCFG version numbers
include/acpi_table.h | 61 +++++++++++++++++++++++++++++++++++++++++++ lib/Makefile | 1 + lib/acpi/Makefile | 4 +++ lib/acpi/acpi_table.c | 60 ++++++++++++++++++++++++++++++++++++++++++ test/dm/acpi.c | 14 ++++++++++ 5 files changed, 140 insertions(+) create mode 100644 lib/acpi/Makefile create mode 100644 lib/acpi/acpi_table.c
diff --git a/include/acpi_table.h b/include/acpi_table.h index dd74895813..ccf6fa04db 100644 --- a/include/acpi_table.h +++ b/include/acpi_table.h @@ -202,6 +202,26 @@ struct __packed acpi_fadt { struct acpi_gen_regaddr x_gpe1_blk; };
+/* FADT TABLE Revision values */ +#define ACPI_FADT_REV_ACPI_1_0 1 +#define ACPI_FADT_REV_ACPI_2_0 3 +#define ACPI_FADT_REV_ACPI_3_0 4 +#define ACPI_FADT_REV_ACPI_4_0 4 +#define ACPI_FADT_REV_ACPI_5_0 5 +#define ACPI_FADT_REV_ACPI_6_0 6
+/* MADT TABLE Revision values */ +#define ACPI_MADT_REV_ACPI_3_0 2 +#define ACPI_MADT_REV_ACPI_4_0 3 +#define ACPI_MADT_REV_ACPI_5_0 3 +#define ACPI_MADT_REV_ACPI_6_0 5
+#define ACPI_MCFG_REV_ACPI_3_0 1
+/* IVRS Revision Field */ +#define IVRS_FORMAT_FIXED 0x01 /* Type 10h & 11h only */ +#define IVRS_FORMAT_MIXED 0x02 /* Type 10h, 11h, & 40h */
/* FACS flags */ #define ACPI_FACS_S4BIOS_F BIT(0) #define ACPI_FACS_64BIT_WAKE_F BIT(1) @@ -391,6 +411,47 @@ struct __packed acpi_spcr { u32 reserved2; };
+/* Tables defined by ACPI and generated by U-Boot */ +enum acpi_tables {
ACPITAB_BERT,
ACPITAB_DBG2,
ACPITAB_DMAR,
ACPITAB_DSDT,
ACPITAB_FACS,
ACPITAB_FADT,
ACPITAB_HEST,
ACPITAB_HPET,
ACPITAB_IVRS,
ACPITAB_MADT,
ACPITAB_MCFG,
ACPITAB_RSDP,
ACPITAB_RSDT,
ACPITAB_SLIT,
ACPITAB_SRAT,
ACPITAB_SSDT,
ACPITAB_TCPA,
ACPITAB_TPM2,
ACPITAB_XSDT,
ACPITAB_ECDT,
/* Additional proprietary tables */
ACPITAB_VFCT,
ACPITAB_NHLT,
ACPITAB_SPMI,
ACPITAB_COUNT,
+};
+/**
- acpi_get_table_revision() - Get the revision number generated for a
table
- This keeps the version-number information in one place
- @table: ACPI table to check
- @return version number that U-Boot generates
- */
+int acpi_get_table_revision(enum acpi_tables table);
#endif /* !__ACPI__*/
#include <asm/acpi_table.h> diff --git a/lib/Makefile b/lib/Makefile index 15259d0473..9df834c2fd 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -5,6 +5,7 @@
ifndef CONFIG_SPL_BUILD
+obj-$(CONFIG_$(SPL_TPL_)ACPIGEN) += acpi/
Is $(SPL_TPL_) needed here? I don't see a CONFIG_SPL_ACPIGEN, and this section of the file is also
covered
by "ifndef CONFIG_SPL_BUILD".
In any case, would it make sense to generate ACPI-related code for SPL
and TPL?
As U-Boot does not use ACPI, but only provides it to the kernel, I would assume we only need to handle ACPI tables in the last U-Boot stage before booting a kernel.
That's right. The point of this is to only include it in U-Boot proper. Actually I should use $SPL here so will fix that.
Regards, Simon