From ab6bcd2c1a3e47f3bd1ad5c7f1b984a1b38f6da1 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Fri, 19 Jan 2024 08:24:36 +0100 Subject: device/device_util: Add method to retrieve the domain Add a function to return the PCI domain device for the specified device. On multi PCI domain platforms this function allows to determine which domain and thus which socket the PCI device belongs to. Change-Id: I0068b82e139fe7a35e6b1b91b7d386b750c80748 Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/c/coreboot/+/80090 Reviewed-by: Lean Sheng Tan Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- src/device/device_util.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/device') diff --git a/src/device/device_util.c b/src/device/device_util.c index edf053d0dd40..260c9b43eedc 100644 --- a/src/device/device_util.c +++ b/src/device/device_util.c @@ -249,6 +249,19 @@ const char *dev_name(const struct device *dev) return "unknown"; } +/* Returns the PCI domain for the given PCI device */ +struct device *dev_get_pci_domain(struct device *dev) +{ + /* Walk up the tree up to the PCI domain */ + while (dev && dev->bus && !is_root_device(dev)) { + dev = dev->bus->dev; + if (dev->path.type == DEVICE_PATH_DOMAIN) + return dev; + } + + return NULL; +} + /** * Allocate 64 more resources to the free list. * -- cgit v1.2.3