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>
This commit is contained in:
parent
de271a8f0a
commit
2d2367cd95
|
@ -916,15 +916,15 @@ int reset_bus(struct bus *bus)
|
||||||
* @param max Current bus number.
|
* @param max Current bus number.
|
||||||
* @return The maximum bus number found, after scanning all subordinate buses.
|
* @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;
|
unsigned int new_max;
|
||||||
int do_scan_bus;
|
int do_scan_bus;
|
||||||
|
|
||||||
if (!busdev || !busdev->enabled || !busdev->ops ||
|
if (!busdev->enabled)
|
||||||
!busdev->ops->scan_bus) {
|
|
||||||
return max;
|
return max;
|
||||||
}
|
|
||||||
|
printk(BIOS_SPEW, "%s scanning...\n", dev_path(busdev));
|
||||||
|
|
||||||
post_log_path(busdev);
|
post_log_path(busdev);
|
||||||
|
|
||||||
|
@ -945,6 +945,19 @@ unsigned int scan_bus(struct device *busdev, unsigned int max)
|
||||||
return new_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.
|
* Determine the existence of devices and extend the device tree.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1083,7 +1083,6 @@ void pci_scan_bus(struct bus *bus, unsigned min_devfn,
|
||||||
{
|
{
|
||||||
unsigned int devfn;
|
unsigned int devfn;
|
||||||
struct device *old_devices;
|
struct device *old_devices;
|
||||||
struct device *child;
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "PCI: pci_scan_bus for bus %02x\n", bus->secondary);
|
printk(BIOS_DEBUG, "PCI: pci_scan_bus for bus %02x\n", bus->secondary);
|
||||||
|
|
||||||
|
@ -1144,12 +1143,8 @@ void pci_scan_bus(struct bus *bus, unsigned min_devfn,
|
||||||
* For all children that implement scan_bus() (i.e. bridges)
|
* For all children that implement scan_bus() (i.e. bridges)
|
||||||
* scan the bus behind that child.
|
* scan the bus behind that child.
|
||||||
*/
|
*/
|
||||||
unsigned int max = bus->secondary;
|
|
||||||
|
|
||||||
for (child = bus->children; child; child = child->sibling)
|
scan_bridges(bus);
|
||||||
max = scan_bus(child, max);
|
|
||||||
|
|
||||||
bus->subordinate = max;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We've scanned the bus and so we know all about what's on the other
|
* We've scanned the bus and so we know all about what's on the other
|
||||||
|
|
|
@ -126,22 +126,14 @@ unsigned int scan_smbus(device_t bus, unsigned int passthru)
|
||||||
*/
|
*/
|
||||||
static unsigned int root_dev_scan_bus(device_t bus, unsigned int passthru)
|
static unsigned int root_dev_scan_bus(device_t bus, unsigned int passthru)
|
||||||
{
|
{
|
||||||
device_t child;
|
|
||||||
struct bus *link;
|
struct bus *link;
|
||||||
unsigned int max = 0;
|
|
||||||
|
|
||||||
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
|
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
|
||||||
|
|
||||||
scan_static_bus(bus, 0);
|
scan_static_bus(bus, 0);
|
||||||
|
|
||||||
for (link = bus->link_list; link; link = link->next) {
|
for (link = bus->link_list; link; link = link->next)
|
||||||
for (child = link->children; child; child = child->sibling) {
|
scan_bridges(link);
|
||||||
if (!child->ops || !child->ops->scan_bus)
|
|
||||||
continue;
|
|
||||||
printk(BIOS_SPEW, "%s scanning...\n", dev_path(child));
|
|
||||||
max = scan_bus(child, max);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printk(BIOS_SPEW, "%s for %s done\n", __func__, dev_path(bus));
|
printk(BIOS_SPEW, "%s for %s done\n", __func__, dev_path(bus));
|
||||||
|
|
||||||
|
|
|
@ -172,7 +172,7 @@ void dev_finalize_chips(void);
|
||||||
|
|
||||||
/* Generic device helper functions */
|
/* Generic device helper functions */
|
||||||
int reset_bus(struct bus *bus);
|
int reset_bus(struct bus *bus);
|
||||||
unsigned int scan_bus(struct device *bus, unsigned int _max);
|
void scan_bridges(struct bus *bus);
|
||||||
void assign_resources(struct bus *bus);
|
void assign_resources(struct bus *bus);
|
||||||
const char *dev_name(device_t dev);
|
const char *dev_name(device_t dev);
|
||||||
const char *dev_path(device_t dev);
|
const char *dev_path(device_t dev);
|
||||||
|
|
Loading…
Reference in New Issue