summaryrefslogtreecommitdiff
path: root/src/vendorcode
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2024-05-08 21:44:46 +0200
committerMartin L Roth <gaumless@gmail.com>2024-05-12 18:54:50 +0000
commit0fc69141e523ef3dba5ce840dea68de40b0ec785 (patch)
tree9e81d4592214fbd61720bca745b81987bee66430 /src/vendorcode
parent444edcba5d648582a98c0ad46605cd0dd7a1f11d (diff)
vc/amd/opensil: introduce common mpio/chip.h header file
The chip drivers in the devicetree use the path where the corresponding chip.h file resides both to include this chip.h file in the static.c generated by util/sconfig from the devicetree and also for the names of the chip config and chip ops struct. To be able to build a SoC using either the MPIO chip driver from the openSIL stub or from the actual openSIL glue code without needing different devicetree files for the different cases, introduce a common MPIO chip.h file that then includes the correct MPIO header file. The chip config and ops structures also need to be renamed to take this change into account. Thanks to Matt for pointing out how to make the path to the actual MPIO chip.h file configurable via a Kconfig setting. This allows overriding this path from site-local without the need to have any reference to site-local in the upstream code. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: Iead97d1727569ec0d23a2b9c4fd96daff4bebcf6 Reviewed-on: https://review.coreboot.org/c/coreboot/+/82262 Reviewed-by: Varshit Pandya <pandyavarshit@gmail.com> Reviewed-by: Martin L Roth <gaumless@gmail.com> Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/vendorcode')
-rw-r--r--src/vendorcode/amd/opensil/Kconfig9
-rw-r--r--src/vendorcode/amd/opensil/chip/mpio/chip.h8
-rw-r--r--src/vendorcode/amd/opensil/genoa_poc/mpio/chip.c6
-rw-r--r--src/vendorcode/amd/opensil/genoa_poc/mpio/chip.h2
-rw-r--r--src/vendorcode/amd/opensil/stub/mpio/chip.c2
-rw-r--r--src/vendorcode/amd/opensil/stub/mpio/chip.h2
6 files changed, 23 insertions, 6 deletions
diff --git a/src/vendorcode/amd/opensil/Kconfig b/src/vendorcode/amd/opensil/Kconfig
index 00f373f142..3daae5071d 100644
--- a/src/vendorcode/amd/opensil/Kconfig
+++ b/src/vendorcode/amd/opensil/Kconfig
@@ -23,4 +23,13 @@ config AMD_OPENSIL_PATH
Set to the path of the openSIL directory containing meson.build.
example
+config AMD_OPENSIL_MPIO_CHIP_H_FILE
+ string "Location of specific MPIO chip.h implementation"
+ default "../../genoa_poc/mpio/chip.h" if SOC_AMD_OPENSIL_GENOA_POC
+ default "../../stub/mpio/chip.h"
+ help
+ Set to the location of the MPIO chip.h in the selected openSIL
+ implementation, so that the common MPIO chip.h file can include the
+ specific one.
+
endif
diff --git a/src/vendorcode/amd/opensil/chip/mpio/chip.h b/src/vendorcode/amd/opensil/chip/mpio/chip.h
new file mode 100644
index 0000000000..812df6b6d4
--- /dev/null
+++ b/src/vendorcode/amd/opensil/chip/mpio/chip.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef OPENSIL_MPIO_CHIP_H
+#define OPENSIL_MPIO_CHIP_H
+
+#include CONFIG_AMD_OPENSIL_MPIO_CHIP_H_FILE
+
+#endif /* OPENSIL_MPIO_CHIP_H */
diff --git a/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.c b/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.c
index 089096f8c4..609ac5516d 100644
--- a/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.c
+++ b/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.c
@@ -9,7 +9,7 @@
#include "chip.h"
#include "../opensil.h"
-struct chip_operations vendorcode_amd_opensil_genoa_poc_mpio_ops = {
+struct chip_operations vendorcode_amd_opensil_chip_mpio_ops = {
.name = "AMD GENOA MPIO",
};
@@ -130,7 +130,7 @@ static void per_device_config(MPIOCLASS_INPUT_BLK *mpio_data, struct device *dev
static uint32_t slot_num;
const uint32_t domain = dev->upstream->dev->path.domain.domain;
const uint32_t devfn = dev->path.pci.devfn;
- const struct vendorcode_amd_opensil_genoa_poc_mpio_config *const config = dev->chip_info;
+ const struct vendorcode_amd_opensil_chip_mpio_config *const config = dev->chip_info;
printk(BIOS_DEBUG, "Setting MPIO port for domain 0x%x, PCI %d:%d\n",
domain, PCI_SLOT(devfn), PCI_FUNC(devfn));
@@ -199,7 +199,7 @@ void configure_mpio(void)
/* Find all devices with this chip that are directly below the chip */
for (struct device *dev = &dev_root; dev; dev = dev->next)
- if (dev->chip_ops == &vendorcode_amd_opensil_genoa_poc_mpio_ops &&
+ if (dev->chip_ops == &vendorcode_amd_opensil_chip_mpio_ops &&
dev->chip_info != dev->upstream->dev->chip_info)
per_device_config(mpio_data, dev);
}
diff --git a/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.h b/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.h
index 36d6bafce8..9b4d226b49 100644
--- a/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.h
+++ b/src/vendorcode/amd/opensil/genoa_poc/mpio/chip.h
@@ -54,7 +54,7 @@ enum pcie_aspm {
L0sL1,
};
-struct vendorcode_amd_opensil_genoa_poc_mpio_config {
+struct vendorcode_amd_opensil_chip_mpio_config {
enum mpio_type type;
uint8_t start_lane;
uint8_t end_lane;
diff --git a/src/vendorcode/amd/opensil/stub/mpio/chip.c b/src/vendorcode/amd/opensil/stub/mpio/chip.c
index 895814ded3..9b515b3257 100644
--- a/src/vendorcode/amd/opensil/stub/mpio/chip.c
+++ b/src/vendorcode/amd/opensil/stub/mpio/chip.c
@@ -3,6 +3,6 @@
#include <device/device.h>
#include "chip.h"
-struct chip_operations vendorcode_amd_opensil_stub_mpio_ops = {
+struct chip_operations vendorcode_amd_opensil_chip_mpio_ops = {
.name = "AMD openSIL stub MPIO",
};
diff --git a/src/vendorcode/amd/opensil/stub/mpio/chip.h b/src/vendorcode/amd/opensil/stub/mpio/chip.h
index 0957ff0213..456463336b 100644
--- a/src/vendorcode/amd/opensil/stub/mpio/chip.h
+++ b/src/vendorcode/amd/opensil/stub/mpio/chip.h
@@ -60,7 +60,7 @@ enum pcie_slot_power_limit_scale {
SLOT_POWER_LIMIT_DIVISOR_1000 = 3, /* Scale factor 0.001 */
};
-struct vendorcode_amd_opensil_stub_mpio_config {
+struct vendorcode_amd_opensil_chip_mpio_config {
enum mpio_engine_type type;
uint8_t start_lane;
uint8_t end_lane;