summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/amd/common/block/data_fabric/data_fabric_helper.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/soc/amd/common/block/data_fabric/data_fabric_helper.c b/src/soc/amd/common/block/data_fabric/data_fabric_helper.c
index 181c71e57f..412daaee64 100644
--- a/src/soc/amd/common/block/data_fabric/data_fabric_helper.c
+++ b/src/soc/amd/common/block/data_fabric/data_fabric_helper.c
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
+#include <acpi/acpi_device.h>
#include <amdblocks/data_fabric.h>
#include <amdblocks/pci_devs.h>
#include <arch/hpet.h>
@@ -169,3 +170,31 @@ void data_fabric_set_mmio_np(void)
data_fabric_print_mmio_conf();
}
+
+static const char *data_fabric_acpi_name(const struct device *dev)
+{
+ const char *df_acpi_names[8] = {
+ "DFD0",
+ "DFD1",
+ "DFD2",
+ "DFD3",
+ "DFD4",
+ "DFD5",
+ "DFD6",
+ "DFD7"
+ };
+
+ if (dev->path.type == DEVICE_PATH_PCI &&
+ PCI_SLOT(dev->path.pci.devfn) == DF_DEV)
+ return df_acpi_names[PCI_FUNC(dev->path.pci.devfn)];
+
+ printk(BIOS_ERR, "%s: Unhandled device id 0x%x\n", __func__, dev->device);
+ return NULL;
+}
+
+struct device_operations amd_data_fabric_ops = {
+ .read_resources = noop_read_resources,
+ .set_resources = noop_set_resources,
+ .acpi_name = data_fabric_acpi_name,
+ .acpi_fill_ssdt = acpi_device_write_pci_dev,
+};