Merge git://git.denx.de/u-boot-marvell
[pandora-u-boot.git] / drivers / pci / pci-uclass.c
index 2cf55cb..824fa11 100644 (file)
@@ -1007,12 +1007,26 @@ static int pci_uclass_post_probe(struct udevice *bus)
        return 0;
 }
 
-static int pci_uclass_child_post_bind(struct udevice *dev)
+int pci_get_devfn(struct udevice *dev)
 {
-       struct pci_child_platdata *pplat;
        struct fdt_pci_addr addr;
        int ret;
 
+       /* Extract the devfn from fdt_pci_addr */
+       ret = ofnode_read_pci_addr(dev_ofnode(dev), FDT_PCI_SPACE_CONFIG,
+                                  "reg", &addr);
+       if (ret) {
+               if (ret != -ENOENT)
+                       return -EINVAL;
+       }
+
+       return addr.phys_hi & 0xff00;
+}
+
+static int pci_uclass_child_post_bind(struct udevice *dev)
+{
+       struct pci_child_platdata *pplat;
+
        if (!dev_of_valid(dev))
                return 0;
 
@@ -1022,14 +1036,7 @@ static int pci_uclass_child_post_bind(struct udevice *dev)
        ofnode_read_pci_vendev(dev_ofnode(dev), &pplat->vendor, &pplat->device);
 
        /* Extract the devfn from fdt_pci_addr */
-       ret = ofnode_read_pci_addr(dev_ofnode(dev), FDT_PCI_SPACE_CONFIG, "reg",
-                                  &addr);
-       if (ret) {
-               if (ret != -ENOENT)
-                       return -EINVAL;
-       } else {
-               pplat->devfn = addr.phys_hi & 0xff00;
-       }
+       pplat->devfn = pci_get_devfn(dev);
 
        return 0;
 }