aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-12-01 09:02:48 -0700
committerSimon Glass <sjg@chromium.org>2022-01-25 11:44:36 -0700
commitcc1f8c39882c5100ec07dfa46e32ff395d792b94 (patch)
tree2f5a32f096aec41a5082f8727269fae8688eaaa0 /test
parent6afa63a5a63662fa7e517b29da613f51e9e68429 (diff)
downloadu-boot-cc1f8c39882c5100ec07dfa46e32ff395d792b94.zip
u-boot-cc1f8c39882c5100ec07dfa46e32ff395d792b94.tar.gz
u-boot-cc1f8c39882c5100ec07dfa46e32ff395d792b94.tar.bz2
x86: acpi: Split out context creation from base tables
At present acpi_setup_base_tables() both sets up the ACPI context and writes out the base tables. We want to use an ACPI writer to write the base tables, so split this function into two, with acpi_setup_ctx() doing the context set, and acpi_setup_base_tables() just doing the base tables. Disable the writer's write_acpi_tables() function for now, to avoid build errors. It is enabled in a following patch. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/dm/acpi.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/test/dm/acpi.c b/test/dm/acpi.c
index 804124d..a1d70b5 100644
--- a/test/dm/acpi.c
+++ b/test/dm/acpi.c
@@ -45,6 +45,22 @@ struct testacpi_plat {
bool no_name;
};
+/**
+ * setup_ctx_and_base_tables() - Set up context along with RSDP, RSDT and XSDT
+ *
+ * Set up the context with the given start position. Some basic tables are
+ * always needed, so set them up as well.
+ *
+ * @ctx: Context to set up
+ */
+static int setup_ctx_and_base_tables(struct acpi_ctx *ctx, ulong start)
+{
+ acpi_setup_ctx(ctx, start);
+ acpi_setup_base_tables(ctx);
+
+ return 0;
+}
+
static int testacpi_write_tables(const struct udevice *dev,
struct acpi_ctx *ctx)
{
@@ -240,13 +256,15 @@ static int dm_test_acpi_write_tables(struct unit_test_state *uts)
{
struct acpi_dmar *dmar;
struct acpi_ctx ctx;
+ ulong addr;
void *buf;
int i;
buf = malloc(BUF_SIZE);
ut_assertnonnull(buf);
+ addr = map_to_sysmem(buf);
- acpi_setup_base_tables(&ctx, buf);
+ setup_ctx_and_base_tables(&ctx, addr);
dmar = ctx.current;
ut_assertok(acpi_write_dev_tables(&ctx));
@@ -312,6 +330,7 @@ static int dm_test_acpi_setup_base_tables(struct unit_test_state *uts)
struct acpi_xsdt *xsdt;
struct acpi_ctx ctx;
void *buf, *end;
+ ulong addr;
/*
* Use an unaligned address deliberately, by allocating an aligned
@@ -319,7 +338,8 @@ 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);
+ addr = map_to_sysmem(buf);
+ setup_ctx_and_base_tables(&ctx, addr + 4);
ut_asserteq(map_to_sysmem(PTR_ALIGN(buf + 4, 16)), gd_acpi_start());
rsdp = buf + 16;
@@ -361,13 +381,13 @@ static int dm_test_acpi_cmd_list(struct unit_test_state *uts)
buf = memalign(16, BUF_SIZE);
ut_assertnonnull(buf);
- acpi_setup_base_tables(&ctx, buf);
+ addr = map_to_sysmem(buf);
+ setup_ctx_and_base_tables(&ctx, addr);
ut_assertok(acpi_write_dev_tables(&ctx));
console_record_reset();
run_command("acpi list", 0);
- addr = (ulong)map_to_sysmem(buf);
ut_assert_nextline("ACPI tables start at %lx", addr);
ut_assert_nextline("RSDP %08lx %06zx (v02 U-BOOT)", addr,
sizeof(struct acpi_rsdp));
@@ -403,7 +423,8 @@ static int dm_test_acpi_cmd_dump(struct unit_test_state *uts)
buf = memalign(16, BUF_SIZE);
ut_assertnonnull(buf);
- acpi_setup_base_tables(&ctx, buf);
+ addr = map_to_sysmem(buf);
+ setup_ctx_and_base_tables(&ctx, addr);
ut_assertok(acpi_write_dev_tables(&ctx));