summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-12-01 19:03:03 +0300
committerSimon Glass <sjg@chromium.org>2022-01-25 21:44:36 +0300
commit9d2adca8c3e8d195fa4be5acc8c6dfe14933e826 (patch)
tree6cdf337c127e6ea25d0706ac2ec8b71ebdc76fbd
parenta7e53b93b1ca4de745ab5fbdd3db2bd7888adb0f (diff)
downloadu-boot-9d2adca8c3e8d195fa4be5acc8c6dfe14933e826.tar.xz
x86: Move acpi_get_rsdp_addr() ACPI tables to the writer
Move this over to use a writer file, moving the code from the x86 implementation. There is no need to store a separate variable since we can simply access the ACPI context. With this, the original monolithic x86 function for writing ACPI tables is gone. Note that QEMU has its own implementation. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--arch/x86/lib/acpi_table.c21
-rw-r--r--lib/acpi/acpi_writer.c8
2 files changed, 8 insertions, 21 deletions
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index 8275c36ad3..c0534343f1 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -29,9 +29,6 @@
#include <dm/acpi.h>
#include <linux/err.h>
-/* ACPI RSDP address to be used in boot parameters */
-static ulong acpi_rsdp_addr;
-
static int acpi_create_madt_lapic(struct acpi_madt_lapic *lapic,
u8 cpu, u8 apic)
{
@@ -513,24 +510,6 @@ int acpi_write_mcfg(struct acpi_ctx *ctx, const struct acpi_writer *entry)
}
ACPI_WRITER(5mcfg, "MCFG", acpi_write_mcfg, 0);
-/*
- * QEMU's version of write_acpi_tables is defined in drivers/misc/qfw.c
- */
-int write_acpi_tables_x86(struct acpi_ctx *ctx,
- const struct acpi_writer *entry)
-{
- acpi_rsdp_addr = (unsigned long)ctx->rsdp;
- debug("ACPI: done\n");
-
- return 0;
-}
-ACPI_WRITER(9x86, NULL, write_acpi_tables_x86, 0);
-
-ulong acpi_get_rsdp_addr(void)
-{
- return acpi_rsdp_addr;
-}
-
/**
* acpi_write_hpet() - Write out a HPET table
*
diff --git a/lib/acpi/acpi_writer.c b/lib/acpi/acpi_writer.c
index 59f951cba4..9b0aa23fd7 100644
--- a/lib/acpi/acpi_writer.c
+++ b/lib/acpi/acpi_writer.c
@@ -102,6 +102,14 @@ int write_dev_tables(struct acpi_ctx *ctx, const struct acpi_writer *entry)
return 0;
}
ACPI_WRITER(8dev, NULL, write_dev_tables, 0);
+
+ulong acpi_get_rsdp_addr(void)
+{
+ if (!gd->acpi_ctx)
+ return 0;
+
+ return map_to_sysmem(gd->acpi_ctx->rsdp);
+}
#endif /* QEMU */
void acpi_setup_ctx(struct acpi_ctx *ctx, ulong start)