powerpc/powernv: Fetch PHB bus range from dev-tree
authorGavin Shan <shangw@linux.vnet.ibm.com>
Wed, 31 Jul 2013 08:47:01 +0000 (16:47 +0800)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 14 Aug 2013 04:57:25 +0000 (14:57 +1000)
The patch enables fetching bus range from device-tree for the
specific PHB. If we can't get that from device-tree, the default
range [0 255] will be used.

Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/powernv/pci-ioda.c

index 9cccdc7..f472228 100644 (file)
@@ -1109,6 +1109,7 @@ void __init pnv_pci_init_ioda_phb(struct device_node *np,
        unsigned long size, m32map_off, iomap_off, pemap_off;
        const u64 *prop64;
        const u32 *prop32;
+       int len;
        u64 phb_id;
        void *aux;
        long rc;
@@ -1140,9 +1141,15 @@ void __init pnv_pci_init_ioda_phb(struct device_node *np,
        }
 
        spin_lock_init(&phb->lock);
-       /* XXX Use device-tree */
-       hose->first_busno = 0;
-       hose->last_busno = 0xff;
+       prop32 = of_get_property(np, "bus-range", &len);
+       if (prop32 && len == 8) {
+               hose->first_busno = prop32[0];
+               hose->last_busno = prop32[1];
+       } else {
+               pr_warn("  Broken <bus-range> on %s\n", np->full_name);
+               hose->first_busno = 0;
+               hose->last_busno = 0xff;
+       }
        hose->private_data = phb;
        phb->hub_id = hub_id;
        phb->opal_id = phb_id;