]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
x86: Move the acpi table to generic global_data
authorSimon Glass <sjg@chromium.org>
Wed, 1 Dec 2021 16:02:37 +0000 (09:02 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 25 Jan 2022 18:44:36 +0000 (11:44 -0700)
Allow this to be used on any arch. Also convert to using macros so that
we can check the CONFIG option in C code.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/sandbox/include/asm/global_data.h
arch/x86/include/asm/global_data.h
cmd/acpi.c
include/asm-generic/global_data.h
lib/acpi/acpi_table.c
test/dm/acpi.c

index f95ddb058a22a4c9ff6980f3d658a8186fded478..f4ce72d56602c0b166ccf9a0beaf61852c142c90 100644 (file)
@@ -13,7 +13,6 @@
 struct arch_global_data {
        uint8_t         *ram_buf;       /* emulated RAM buffer */
        void            *text_base;     /* pointer to base of text region */
-       ulong acpi_start;               /* Start address of ACPI tables */
 };
 
 #include <asm-generic/global_data.h>
index 3e4044593c87f011f3d221e6298861c269aec8e5..23693f85a7815f86a153b6eba473992da5a1bfd4 100644 (file)
@@ -122,7 +122,6 @@ struct arch_global_data {
        struct fsp_header *fsp_s_hdr;   /* Pointer to FSP-S header */
 #endif
        void *itss_priv;                /* Private ITSS data pointer */
-       ulong acpi_start;               /* Start address of ACPI tables */
        ulong coreboot_table;           /* Address of coreboot table */
 };
 
index 9c3462b411eb141493abde1e02f3fc29e0aee63c..1d302994b808be8dc4c3fdbf4e93be83b3d82012 100644 (file)
@@ -47,7 +47,7 @@ struct acpi_table_header *find_table(const char *sig)
        struct acpi_rsdt *rsdt;
        int len, i, count;
 
-       rsdp = map_sysmem(gd->arch.acpi_start, 0);
+       rsdp = map_sysmem(gd_acpi_start(), 0);
        if (!rsdp)
                return NULL;
        rsdt = map_sysmem(rsdp->rsdt_address, 0);
@@ -143,12 +143,12 @@ static int do_acpi_list(struct cmd_tbl *cmdtp, int flag, int argc,
 {
        struct acpi_rsdp *rsdp;
 
-       rsdp = map_sysmem(gd->arch.acpi_start, 0);
+       rsdp = map_sysmem(gd_acpi_start(), 0);
        if (!rsdp) {
                printf("No ACPI tables present\n");
                return 0;
        }
-       printf("ACPI tables start at %lx\n", gd->arch.acpi_start);
+       printf("ACPI tables start at %lx\n", gd_acpi_start());
        list_rsdp(rsdp);
 
        return 0;
index 104282bd4791fdf9e7c2b5f3835868efd5aa9759..c2f8fad1cb9280eca3daf2d8b8c71ecb842c92cf 100644 (file)
@@ -456,6 +456,10 @@ struct global_data {
         * @acpi_ctx: ACPI context pointer
         */
        struct acpi_ctx *acpi_ctx;
+       /**
+        * @acpi_start: Start address of ACPI tables
+        */
+       ulong acpi_start;
 #endif
 #if CONFIG_IS_ENABLED(GENERATE_SMBIOS_TABLE)
        /**
@@ -512,8 +516,12 @@ static_assert(sizeof(struct global_data) == GD_SIZE);
 
 #ifdef CONFIG_GENERATE_ACPI_TABLE
 #define gd_acpi_ctx()          gd->acpi_ctx
+#define gd_acpi_start()                gd->acpi_start
+#define gd_set_acpi_start(addr)        gd->acpi_start = addr
 #else
 #define gd_acpi_ctx()          NULL
+#define gd_acpi_start()                0UL
+#define gd_set_acpi_start(addr)
 #endif
 
 #if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
index d1685404c219ba18be2f6c6b756684a5d678d7cd..3a72718df89f9719553a7a2d662ea6831b34bdb8 100644 (file)
@@ -260,7 +260,7 @@ void acpi_setup_base_tables(struct acpi_ctx *ctx, void *start)
 
        /* Align ACPI tables to 16 byte */
        acpi_align(ctx);
-       gd->arch.acpi_start = map_to_sysmem(ctx->current);
+       gd_set_acpi_start(map_to_sysmem(ctx->current));
 
        /* We need at least an RSDP and an RSDT Table */
        ctx->rsdp = ctx->current;
index c51073c9a6c27bc4f5f004e70d7de8150264dca4..804124df9e9f9d56db39f7703ce9d45e7d795d28 100644 (file)
@@ -320,7 +320,7 @@ static int dm_test_acpi_setup_base_tables(struct unit_test_state *uts)
        buf = memalign(64, BUF_SIZE);
        ut_assertnonnull(buf);
        acpi_setup_base_tables(&ctx, buf + 4);
-       ut_asserteq(map_to_sysmem(PTR_ALIGN(buf + 4, 16)), gd->arch.acpi_start);
+       ut_asserteq(map_to_sysmem(PTR_ALIGN(buf + 4, 16)), gd_acpi_start());
 
        rsdp = buf + 16;
        ut_asserteq_ptr(rsdp, ctx.rsdp);