diff options
author | Werner Zeh <werner.zeh@siemens.com> | 2018-12-14 13:09:12 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2019-01-28 13:42:08 +0000 |
commit | d12530cb838c4fa2d503d27c9ea19e8ffb515725 (patch) | |
tree | 67a52e3d19334a5349fd846a262683dc687ff13c | |
parent | 251514d986ea9b978f4608d1994ca3307f1b51aa (diff) |
intelblocks/systemagent: Add ACPI table generation hook
In preparation of generating DMAR tables, provide the hook in SoC scope
for the systemagent to write ACPI tables. The complete functionality is
SoC-specific. Therefore the entry hook is defined as a weak function which
can be overridden by SoC code. If the SoC does not have support for
generating DMAR tables this hook will do no harm.
Change-Id: I1333ae2b79f1a855e6f3bb39bf534da170ddc9e1
Signed-off-by: Werner Zeh <werner.zeh@siemens.com>
Reviewed-on: https://review.coreboot.org/c/30989
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r-- | src/soc/intel/common/block/include/intelblocks/acpi.h | 5 | ||||
-rw-r--r-- | src/soc/intel/common/block/systemagent/systemagent.c | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/include/intelblocks/acpi.h b/src/soc/intel/common/block/include/intelblocks/acpi.h index 029174f1ff..e615ccd213 100644 --- a/src/soc/intel/common/block/include/intelblocks/acpi.h +++ b/src/soc/intel/common/block/include/intelblocks/acpi.h @@ -81,6 +81,11 @@ uint32_t acpi_fill_soc_wake(uint32_t generic_pm1_en, /* Chipset specific settings for filling up fadt table */ void soc_fill_fadt(acpi_fadt_t *fadt); +/* Chipset specific settings for filling up dmar table */ +unsigned long sa_write_acpi_tables(struct device *dev, + unsigned long current, + struct acpi_rsdp *rsdp); + /* Return the polarity flag for SCI IRQ */ int soc_madt_sci_irq_polarity(int sci); diff --git a/src/soc/intel/common/block/systemagent/systemagent.c b/src/soc/intel/common/block/systemagent/systemagent.c index a85bcaba90..299cc5f03a 100644 --- a/src/soc/intel/common/block/systemagent/systemagent.c +++ b/src/soc/intel/common/block/systemagent/systemagent.c @@ -2,6 +2,7 @@ * This file is part of the coreboot project. * * Copyright (C) 2017-2018 Intel Corporation. + * Copyright (C) 2019 Siemens AG * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,6 +19,7 @@ #include <device/device.h> #include <device/pci.h> #include <device/pci_ids.h> +#include <intelblocks/acpi.h> #include <intelblocks/systemagent.h> #include <soc/iomap.h> #include <soc/pci_devs.h> @@ -48,6 +50,13 @@ __weak size_t soc_reserved_mmio_size(void) return 0; } +__weak unsigned long sa_write_acpi_tables(struct device *dev, + unsigned long current, + struct acpi_rsdp *rsdp) +{ + return current; +} + /* * Add all known fixed MMIO ranges that hang off the host bridge/memory * controller device. @@ -283,6 +292,9 @@ static struct device_operations systemagent_ops = { .enable_resources = pci_dev_enable_resources, .init = soc_systemagent_init, .ops_pci = &pci_dev_ops_pci, +#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES) + .write_acpi_tables = sa_write_acpi_tables, +#endif }; static const unsigned short systemagent_ids[] = { |