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

Reply via email to