blob: 251acc6c3111da02c1d37f22b793bc47affeaa0e [file] [log] [blame]
Martin Roth1a3de8e2022-10-06 15:57:21 -06001/* SPDX-License-Identifier: GPL-2.0-only */
2
3/* TODO: Make common? */
4
5#include <acpi/acpi.h>
6#include <amdblocks/acpi.h>
Elyes Haouas898176a2022-10-14 10:01:05 +02007#include <commonlib/bsd/helpers.h>
Martin Roth1a3de8e2022-10-06 15:57:21 -06008#include <device/device.h>
9#include <FspGuids.h>
10#include <soc/acpi.h>
11#include <types.h>
12
13uintptr_t agesa_write_acpi_tables(const struct device *device, uintptr_t current,
14 acpi_rsdp_t *rsdp)
15{
16 acpi_ivrs_t *ivrs;
17
Felix Held5c56b162023-01-17 02:52:03 +010018 /* TODO: look into adding CRAT */
19
Martin Roth1a3de8e2022-10-06 15:57:21 -060020 /* add ALIB SSDT from HOB */
Felix Held192945e2023-01-17 02:50:06 +010021 current = acpi_align_current(current);
Martin Roth1a3de8e2022-10-06 15:57:21 -060022 current = add_agesa_fsp_acpi_table(AMD_FSP_ACPI_ALIB_HOB_GUID, "ALIB", rsdp, current);
23
24 /* IVRS */
Felix Held192945e2023-01-17 02:50:06 +010025 current = acpi_align_current(current);
Martin Roth1a3de8e2022-10-06 15:57:21 -060026 ivrs = (acpi_ivrs_t *)current;
27 acpi_create_ivrs(ivrs, acpi_fill_ivrs);
28 current += ivrs->header.length;
29 acpi_add_table(rsdp, ivrs);
30
31 return current;
32}