diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2015-02-20 21:28:31 +0200 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2015-06-04 11:22:09 +0200 |
commit | 2d2367cd95dc6ab2dd51b1005675e42bab417769 (patch) | |
tree | 6f947cec24aa97e89b833c42297f010e740afd4c /src/device/device.c | |
parent | de271a8f0a9b5d910ee98eeea25f71d4e1536f73 (diff) |
devicetree: Single scan_bridges()
Change-Id: Ifd277992a69a4182e2fac92aaf746abe4fec2a1b
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/8540
Tested-by: build bot (Jenkins)
Reviewed-by: Timothy Pearson <tpearson@raptorengineeringinc.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/device/device.c')
-rw-r--r-- | src/device/device.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/device/device.c b/src/device/device.c index 35bb6e2cf2..a8900a69c6 100644 --- a/src/device/device.c +++ b/src/device/device.c @@ -916,15 +916,15 @@ int reset_bus(struct bus *bus) * @param max Current bus number. * @return The maximum bus number found, after scanning all subordinate buses. */ -unsigned int scan_bus(struct device *busdev, unsigned int max) +static unsigned int scan_bus(struct device *busdev, unsigned int max) { unsigned int new_max; int do_scan_bus; - if (!busdev || !busdev->enabled || !busdev->ops || - !busdev->ops->scan_bus) { + if (!busdev->enabled) return max; - } + + printk(BIOS_SPEW, "%s scanning...\n", dev_path(busdev)); post_log_path(busdev); @@ -945,6 +945,19 @@ unsigned int scan_bus(struct device *busdev, unsigned int max) return new_max; } +void scan_bridges(struct bus *bus) +{ + struct device *child; + unsigned int max = bus->secondary; + + for (child = bus->children; child; child = child->sibling) { + if (!child->ops || !child->ops->scan_bus) + continue; + max = scan_bus(child, max); + } + bus->subordinate = max; +} + /** * Determine the existence of devices and extend the device tree. * |