During pci_bind_bus_devices() before finding a proper driver to bind the device, pci_bus_find_devfn() is called to find if this device already exists. However since device is even not bound, this call always returns -ENODEV. It is really unnecessary hence remove it.
Signed-off-by: Bin Meng <bmeng...@gmail.com> --- Changes in v2: None drivers/pci/pci-uclass.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index c90e7ac..63e85b9 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -551,6 +551,8 @@ int pci_bind_bus_devices(struct udevice *bus) ulong header_type; pci_dev_t bdf, end; bool found_multi; + struct pci_device_id find_id; + ulong val; int ret; found_multi = false; @@ -585,30 +587,21 @@ int pci_bind_bus_devices(struct udevice *bus) PCI_SIZE_32); class >>= 8; - /* Find this device in the device tree */ - ret = pci_bus_find_devfn(bus, PCI_MASK_BUS(bdf), &dev); - /* Search for a driver */ - /* If nothing in the device tree, bind a generic device */ - if (ret == -ENODEV) { - struct pci_device_id find_id; - ulong val; - - memset(&find_id, '\0', sizeof(find_id)); - find_id.vendor = vendor; - find_id.device = device; - find_id.class = class; - if ((header_type & 0x7f) == PCI_HEADER_TYPE_NORMAL) { - pci_bus_read_config(bus, bdf, - PCI_SUBSYSTEM_VENDOR_ID, - &val, PCI_SIZE_32); - find_id.subvendor = val & 0xffff; - find_id.subdevice = val >> 16; - } - ret = pci_find_and_bind_driver(bus, &find_id, bdf, - &dev); + memset(&find_id, '\0', sizeof(find_id)); + find_id.vendor = vendor; + find_id.device = device; + find_id.class = class; + if ((header_type & 0x7f) == PCI_HEADER_TYPE_NORMAL) { + pci_bus_read_config(bus, bdf, + PCI_SUBSYSTEM_VENDOR_ID, + &val, PCI_SIZE_32); + find_id.subvendor = val & 0xffff; + find_id.subdevice = val >> 16; } + ret = pci_find_and_bind_driver(bus, &find_id, bdf, + &dev); if (ret) return ret; -- 1.8.2.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot