[PATCH v2 17/39] acpi: Add a central location for table version numbers
Simon Glass
sjg at chromium.org
Thu Mar 12 04:22:54 CET 2020
Hi Wolfgang,
On Tue, 10 Mar 2020 at 03:26, Wolfgang Wallner <
wolfgang.wallner at br-automation.com> wrote:
>
> Hi Simon,
>
> -----"Simon Glass" <sjg at 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 at 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
More information about the U-Boot
mailing list