提交 069155cb 编写于 作者: B Bin Meng 提交者: Simon Glass

dm: pci: Fix pci_last_busno() to return the real last bus no

Currently pci_last_busno() only checks the last bridge device
under the first UCLASS_PCI device. This is not the case when
there are multiple bridge devices.
Signed-off-by: NBin Meng <bmeng.cn@gmail.com>
Acked-by: NSimon Glass <sjg@chromium.org>
上级 af67e7ce
......@@ -85,30 +85,7 @@ static int pci_get_bus_max(void)
int pci_last_busno(void)
{
struct pci_controller *hose;
struct udevice *bus;
struct uclass *uc;
int ret;
debug("pci_last_busno\n");
ret = uclass_get(UCLASS_PCI, &uc);
if (ret || list_empty(&uc->dev_head))
return -1;
/* Probe the last bus */
bus = list_entry(uc->dev_head.prev, struct udevice, uclass_node);
debug("bus = %p, %s\n", bus, bus->name);
assert(bus);
ret = device_probe(bus);
if (ret)
return ret;
/* If that bus has bridges, we may have new buses now. Get the last */
bus = list_entry(uc->dev_head.prev, struct udevice, uclass_node);
hose = dev_get_uclass_priv(bus);
debug("bus = %s, hose = %p\n", bus->name, hose);
return hose->last_busno;
return pci_get_bus_max();
}
int pci_get_ff(enum pci_size_t size)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册