From f6a4344c5b41c30bd918371796962bce29872676 Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Tue, 15 May 2018 14:13:32 +0200 Subject: [PATCH] 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 | 41 +++++++++++++++++++++++++------------ src/device/device_util.c | 27 ------------------------ src/include/device/device.h | 5 +++-- 3 files changed, 31 insertions(+), 42 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 @@ -50,6 +50,33 @@ DEVTREE_CONST struct device *dev_find_slot(unsigned int bus, 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. + */ +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 = 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; +} + /** * Given a device pointer, find the next PCI device. * @@ -59,19 +86,7 @@ DEVTREE_CONST struct device *dev_find_slot(unsigned int bus, DEVTREE_CONST struct device *dev_find_next_pci_device( DEVTREE_CONST struct device *previous_dev) { - DEVTREE_CONST struct device *dev, *result; - - if (previous_dev == NULL) - previous_dev = all_devices; - - result = 0; - for (dev = previous_dev->next; dev; dev = dev->next) { - if (dev->path.type == DEVICE_PATH_PCI) { - result = dev; - break; - } - } - return result; + return dev_find_path(previous_dev, DEVICE_PATH_PCI); } /** 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);