powerpc: Introduce ppc_pci_flags accessors
authorJosh Boyer <jwboyer@linux.vnet.ibm.com>
Thu, 11 Dec 2008 09:46:44 +0000 (09:46 +0000)
committerPaul Mackerras <paulus@samba.org>
Tue, 16 Dec 2008 04:53:16 +0000 (15:53 +1100)
Currently there are a number of platforms that open code access to
the ppc_pci_flags global variable.  However, that variable is not
present if CONFIG_PCI is not set, which can lead to a build break.

This introduces a number of accessor functions that are defined
to be empty in the case of CONFIG_PCI being disabled.  The
various platform files in the kernel are updated to use these.

Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
14 files changed:
arch/powerpc/include/asm/pci-bridge.h
arch/powerpc/include/asm/pci.h
arch/powerpc/platforms/40x/ep405.c
arch/powerpc/platforms/40x/kilauea.c
arch/powerpc/platforms/40x/ppc40x_simple.c
arch/powerpc/platforms/44x/ebony.c
arch/powerpc/platforms/44x/ppc44x_simple.c
arch/powerpc/platforms/44x/sam440ep.c
arch/powerpc/platforms/52xx/mpc52xx_pci.c
arch/powerpc/platforms/82xx/pq2.c
arch/powerpc/platforms/chrp/pci.c
arch/powerpc/platforms/powermac/pci.c
arch/powerpc/sysdev/fsl_pci.c
arch/powerpc/sysdev/grackle.c

index fa8b3b724438bc5451ce46e7bd90592c8691346d..84007afabdb52a307d0f0a34fb7c8877091eb79a 100644 (file)
@@ -13,7 +13,6 @@
 
 struct device_node;
 
-extern unsigned int ppc_pci_flags;
 enum {
        /* Force re-assigning all resources (ignore firmware
         * setup completely)
@@ -36,6 +35,31 @@ enum {
        /* ... except for domain 0 */
        PPC_PCI_COMPAT_DOMAIN_0         = 0x00000020,
 };
+#ifdef CONFIG_PCI
+extern unsigned int ppc_pci_flags;
+
+static inline void ppc_pci_set_flags(int flags)
+{
+       ppc_pci_flags = flags;
+}
+
+static inline void ppc_pci_add_flags(int flags)
+{
+       ppc_pci_flags |= flags;
+}
+
+static inline int ppc_pci_has_flag(int flag)
+{
+       return (ppc_pci_flags & flag);
+}
+#else
+static inline void ppc_pci_set_flags(int flags) { }
+static inline void ppc_pci_add_flags(int flags) { }
+static inline int ppc_pci_has_flag(int flag)
+{
+       return 0;
+}
+#endif
 
 
 /*
index 1c721a632d8e17c9bfd6c7220be175f8f538a816..3548159a1beb98b55ef6c7e39985da655f85920d 100644 (file)
@@ -38,8 +38,8 @@ struct pci_dev;
  * Set this to 1 if you want the kernel to re-assign all PCI
  * bus numbers (don't do that on ppc64 yet !)
  */
-#define pcibios_assign_all_busses()            (ppc_pci_flags & \
-                                        PPC_PCI_REASSIGN_ALL_BUS)
+#define pcibios_assign_all_busses() \
+       (ppc_pci_has_flag(PPC_PCI_REASSIGN_ALL_BUS))
 #define pcibios_scan_all_fns(a, b)     0
 
 static inline void pcibios_set_master(struct pci_dev *dev)
index ae2e7f67c18ecc794af053472fa208000ebed328..4058fd1e7fc7df773cffe2f3a64eb3bfed34d581 100644 (file)
@@ -100,7 +100,7 @@ static void __init ep405_setup_arch(void)
        /* Find & init the BCSR CPLD */
        ep405_init_bcsr();
 
-       ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
+       ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
 }
 
 static int __init ep405_probe(void)
index 1dd24ffc0dc1d07496ac4898f748adc0b6e4ceb6..fd7d934dac8b82b6373634dd30ea4f4b11f2c937 100644 (file)
@@ -44,7 +44,7 @@ static int __init kilauea_probe(void)
        if (!of_flat_dt_is_compatible(root, "amcc,kilauea"))
                return 0;
 
-       ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
+       ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
 
        return 1;
 }
index 4498a86b46c3dfdf61f8ae393200af089487f5fe..f40ac9b8f99f5c9791148b812c5e4bb8f5494b3a 100644 (file)
@@ -61,7 +61,7 @@ static int __init ppc40x_probe(void)
 
        for (i = 0; i < ARRAY_SIZE(board); i++) {
                if (of_flat_dt_is_compatible(root, board[i])) {
-                       ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
+                       ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
                        return 1;
                }
        }
index a0e8fe4662f61246ab02f8d7c668453d5ca2a676..88b9117fa691f6f4908c2eb20428c0942c514d57 100644 (file)
@@ -54,7 +54,7 @@ static int __init ebony_probe(void)
        if (!of_flat_dt_is_compatible(root, "ibm,ebony"))
                return 0;
 
-       ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
+       ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
 
        return 1;
 }
index 29671262801fd818d2cbcaf7b6f94d13c7b85fc7..76fdc51dac8b64091f2a9fcf6d1b51ef1c02efe5 100644 (file)
@@ -69,7 +69,7 @@ static int __init ppc44x_probe(void)
 
        for (i = 0; i < ARRAY_SIZE(board); i++) {
                if (of_flat_dt_is_compatible(root, board[i])) {
-                       ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
+                       ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
                        return 1;
                }
        }
index 47f10e6477350887ae74f4ef5875fc8d4d1c34d8..a78e8eb6da41147170d66105cf210e00982d3870 100644 (file)
@@ -51,7 +51,7 @@ static int __init sam440ep_probe(void)
        if (!of_flat_dt_is_compatible(root, "acube,sam440ep"))
                return 0;
 
-       ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
+       ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
 
        return 1;
 }
index b49a1852766131655a57effc2514439225ba6b9c..c3f2c21024e32d09623fbfde61e68d5420a171a5 100644 (file)
@@ -375,7 +375,7 @@ mpc52xx_add_bridge(struct device_node *node)
 
        pr_debug("Adding MPC52xx PCI host bridge %s\n", node->full_name);
 
-       ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+       ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
 
        if (of_address_to_resource(node, 0, &rsrc) != 0) {
                printk(KERN_ERR "Can't get %s resources\n", node->full_name);
index 1b75902fad64a9a848e0bd4050c3a01345021c80..9761a59f175fa3bf01b616b576310989a7f7bb3f 100644 (file)
@@ -53,7 +53,7 @@ static void __init pq2_pci_add_bridge(struct device_node *np)
        if (of_address_to_resource(np, 0, &r) || r.end - r.start < 0x10b)
                goto err;
 
-       ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+       ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
 
        hose = pcibios_alloc_controller(np);
        if (!hose)
index 5a72ee5767edc5738fcdec63b89c2ece20c0e753..f6b0c519d5a2b76e8d05f0df51600f9b9abba21e 100644 (file)
@@ -199,7 +199,7 @@ static void __init setup_peg2(struct pci_controller *hose, struct device_node *d
                printk ("RTAS supporting Pegasos OF not found, please upgrade"
                        " your firmware\n");
        }
-       ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+       ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
        /* keep the reference to the root node */
 }
 
index bcf50d7056e933a6236e3f192390f8035901923e..54b7b76ed4f090242668a145ac8199afac7c80a5 100644 (file)
@@ -729,7 +729,7 @@ static void __init setup_bandit(struct pci_controller *hose,
 static int __init setup_uninorth(struct pci_controller *hose,
                                 struct resource *addr)
 {
-       ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+       ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
        has_uninorth = 1;
        hose->ops = &macrisc_pci_ops;
        hose->cfg_addr = ioremap(addr->start + 0x800000, 0x1000);
@@ -996,7 +996,7 @@ void __init pmac_pci_init(void)
        struct device_node *np, *root;
        struct device_node *ht = NULL;
 
-       ppc_pci_flags = PPC_PCI_CAN_SKIP_ISA_ALIGN;
+       ppc_pci_set_flags(PPC_PCI_CAN_SKIP_ISA_ALIGN);
 
        root = of_find_node_by_path("/");
        if (root == NULL) {
@@ -1055,7 +1055,7 @@ void __init pmac_pci_init(void)
         * some offset between bus number and domains for now when we
         * assign all busses should help for now
         */
-       if (ppc_pci_flags & PPC_PCI_REASSIGN_ALL_BUS)
+       if (ppc_pci_has_flag(PPC_PCI_REASSIGN_ALL_BUS))
                pcibios_assign_bus_offset = 0x10;
 #endif
 }
index 5b264eb4b1f7f6af12115640ed8c17d139cb9e3b..d5f9ae0f1b75e7c4612a2beee8ff28174ac3be9b 100644 (file)
@@ -187,7 +187,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
                printk(KERN_WARNING "Can't get bus-range for %s, assume"
                        " bus 0\n", dev->full_name);
 
-       ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+       ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
        hose = pcibios_alloc_controller(dev);
        if (!hose)
                return -ENOMEM;
@@ -300,7 +300,7 @@ int __init mpc83xx_add_bridge(struct device_node *dev)
                       " bus 0\n", dev->full_name);
        }
 
-       ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+       ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
        hose = pcibios_alloc_controller(dev);
        if (!hose)
                return -ENOMEM;
index d502927644c68c69a1328c436c2030bed9349f1c..5da37c2f22ee28db96e064aae1172e3b61e4a3c1 100644 (file)
@@ -57,7 +57,7 @@ void __init setup_grackle(struct pci_controller *hose)
 {
        setup_indirect_pci(hose, 0xfec00000, 0xfee00000, 0);
        if (machine_is_compatible("PowerMac1,1"))
-               ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
+               ppc_pci_add_flags(PPC_PCI_REASSIGN_ALL_BUS);
        if (machine_is_compatible("AAPL,PowerBook1998"))
                grackle_set_loop_snoop(hose, 1);
 #if 0  /* Disabled for now, HW problems ??? */