From f6a4344c5b41c30bd918371796962bce29872676 Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Tue, 15 May 2018 14:13:32 +0200 Subject: device: Move dev_find_path() to device_const.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make it available early and use it in dev_find_next_pci_device(). Change-Id: I1d0ad07f37ea79dae2b9a592fcccba5e03fd86d5 Signed-off-by: Nico Huber Reviewed-on: https://review.coreboot.org/26294 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki --- src/device/device_const.c | 37 ++++++++++++++++++++++++++----------- src/device/device_util.c | 27 --------------------------- src/include/device/device.h | 5 +++-- 3 files changed, 29 insertions(+), 40 deletions(-) diff --git a/src/device/device_const.c b/src/device/device_const.c index 2cacb4a9ac..084d2ac385 100644 --- a/src/device/device_const.c +++ b/src/device/device_const.c @@ -51,22 +51,25 @@ DEVTREE_CONST struct device *dev_find_slot(unsigned int bus, } /** - * Given a device pointer, find the next PCI device. + * Given a Device Path Type, find the device structure. * - * @param previous_dev A pointer to a PCI device structure. - * @return Pointer to the next device structure (if found), 0 otherwise. + * @param prev_match The previously matched device instance. + * @param path_type The Device Path Type. + * @return Pointer to the device structure (if found), 0 otherwise. */ -DEVTREE_CONST struct device *dev_find_next_pci_device( - DEVTREE_CONST struct device *previous_dev) +DEVTREE_CONST struct device *dev_find_path( + DEVTREE_CONST struct device *prev_match, + enum device_path_type path_type) { - DEVTREE_CONST struct device *dev, *result; + DEVTREE_CONST struct device *dev, *result = NULL; - if (previous_dev == NULL) - previous_dev = all_devices; + if (prev_match == NULL) + prev_match = all_devices; + else + prev_match = prev_match->next; - result = 0; - for (dev = previous_dev->next; dev; dev = dev->next) { - if (dev->path.type == DEVICE_PATH_PCI) { + for (dev = prev_match; dev; dev = dev->next) { + if (dev->path.type == path_type) { result = dev; break; } @@ -74,6 +77,18 @@ DEVTREE_CONST struct device *dev_find_next_pci_device( return result; } +/** + * Given a device pointer, find the next PCI device. + * + * @param previous_dev A pointer to a PCI device structure. + * @return Pointer to the next device structure (if found), 0 otherwise. + */ +DEVTREE_CONST struct device *dev_find_next_pci_device( + DEVTREE_CONST struct device *previous_dev) +{ + return dev_find_path(previous_dev, DEVICE_PATH_PCI); +} + /** * Given an SMBus bus and a device number, find the device structure. * diff --git a/src/device/device_util.c b/src/device/device_util.c index 3315e480fc..4275d6e256 100644 --- a/src/device/device_util.c +++ b/src/device/device_util.c @@ -64,33 +64,6 @@ struct device *dev_find_lapic(unsigned apic_id) return result; } -/** - * Given a Device Path Type, find the device structure. - * - * @param prev_match The previously matched device instance. - * @param path_type The Device Path Type. - * @return Pointer to the device structure (if found), 0 otherwise. - */ -struct device *dev_find_path(struct device *prev_match, - enum device_path_type path_type) -{ - struct device *dev; - struct device *result = NULL; - - if (prev_match == NULL) - prev_match = all_devices; - else - prev_match = prev_match->next; - - for (dev = prev_match; dev; dev = dev->next) { - if (dev->path.type == path_type) { - result = dev; - break; - } - } - return result; -} - /** * Find a device of a given vendor and type. * diff --git a/src/include/device/device.h b/src/include/device/device.h index f3afd60b2c..e1b4a99cca 100644 --- a/src/include/device/device.h +++ b/src/include/device/device.h @@ -200,8 +200,9 @@ struct device *find_dev_path(struct bus *parent, struct device_path *path); struct device *alloc_find_dev(struct bus *parent, struct device_path *path); struct device *dev_find_device(u16 vendor, u16 device, struct device *from); struct device *dev_find_class(unsigned int class, struct device *from); -struct device *dev_find_path(struct device *prev_match, - enum device_path_type path_type); +DEVTREE_CONST struct device *dev_find_path( + DEVTREE_CONST struct device *prev_match, + enum device_path_type path_type); struct device *dev_find_lapic(unsigned int apic_id); int dev_count_cpu(void); -- cgit v1.2.3