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>
This commit is contained in:
committed by
Patrick Georgi
parent
251514d986
commit
d12530cb83
@ -81,6 +81,11 @@ uint32_t acpi_fill_soc_wake(uint32_t generic_pm1_en,
|
|||||||
/* Chipset specific settings for filling up fadt table */
|
/* Chipset specific settings for filling up fadt table */
|
||||||
void soc_fill_fadt(acpi_fadt_t *fadt);
|
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 */
|
/* Return the polarity flag for SCI IRQ */
|
||||||
int soc_madt_sci_irq_polarity(int sci);
|
int soc_madt_sci_irq_polarity(int sci);
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
* This file is part of the coreboot project.
|
* This file is part of the coreboot project.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2018 Intel Corporation.
|
* Copyright (C) 2017-2018 Intel Corporation.
|
||||||
|
* Copyright (C) 2019 Siemens AG
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -18,6 +19,7 @@
|
|||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
|
#include <intelblocks/acpi.h>
|
||||||
#include <intelblocks/systemagent.h>
|
#include <intelblocks/systemagent.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
#include <soc/pci_devs.h>
|
#include <soc/pci_devs.h>
|
||||||
@ -48,6 +50,13 @@ __weak size_t soc_reserved_mmio_size(void)
|
|||||||
return 0;
|
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
|
* Add all known fixed MMIO ranges that hang off the host bridge/memory
|
||||||
* controller device.
|
* controller device.
|
||||||
@ -283,6 +292,9 @@ static struct device_operations systemagent_ops = {
|
|||||||
.enable_resources = pci_dev_enable_resources,
|
.enable_resources = pci_dev_enable_resources,
|
||||||
.init = soc_systemagent_init,
|
.init = soc_systemagent_init,
|
||||||
.ops_pci = &pci_dev_ops_pci,
|
.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[] = {
|
static const unsigned short systemagent_ids[] = {
|
||||||
|
Reference in New Issue
Block a user