diff options
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/amd/common/block/data_fabric/data_fabric_helper.c | 29 |
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, +}; |