aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powermac
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2007-12-19 22:54:46 -0500
committerPaul Mackerras <paulus@samba.org>2007-12-20 00:18:07 -0500
commitfc3fb71c3e1850a6a1099dd1cb7bcd7e69ac7b73 (patch)
treec9885bd47237c6e09b42a3c42496b5865c0caa02 /arch/powerpc/platforms/powermac
parentb9baa20b0a50947f2e86d7775c9dba87c0d946ef (diff)
[POWERPC] pci32: Add flags modifying the PCI code behaviour
This adds to the 32 bits PCI code some flags, replacing the old pci_assign_all_busses global, that allow us to control various aspects of the PCI probing, such as whether to re-assign all resources or not, or to not try to assign anything at all. This also adds the flag x86 already has to avoid ISA alignment on bridges that don't have ISA forwarding enabled (no legacy devices on the top level bus) and sets it for PowerMacs. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/powermac')
-rw-r--r--arch/powerpc/platforms/powermac/pci.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c
index 589c613bcd3c..a2e9b36f61ef 100644
--- a/arch/powerpc/platforms/powermac/pci.c
+++ b/arch/powerpc/platforms/powermac/pci.c
@@ -725,7 +725,7 @@ static void __init setup_bandit(struct pci_controller *hose,
725static int __init setup_uninorth(struct pci_controller *hose, 725static int __init setup_uninorth(struct pci_controller *hose,
726 struct resource *addr) 726 struct resource *addr)
727{ 727{
728 pci_assign_all_buses = 1; 728 ppc_pci_flags |= PPC_PCI_REASSIGN_ALL_BUS;
729 has_uninorth = 1; 729 has_uninorth = 1;
730 hose->ops = &macrisc_pci_ops; 730 hose->ops = &macrisc_pci_ops;
731 hose->cfg_addr = ioremap(addr->start + 0x800000, 0x1000); 731 hose->cfg_addr = ioremap(addr->start + 0x800000, 0x1000);
@@ -994,6 +994,9 @@ void __init pmac_pci_init(void)
994 struct device_node *np, *root; 994 struct device_node *np, *root;
995 struct device_node *ht = NULL; 995 struct device_node *ht = NULL;
996 996
997#ifdef CONFIG_PPC32
998 ppc_pci_flags = PPC_PCI_CAN_SKIP_ISA_ALIGN;
999#endif
997 root = of_find_node_by_path("/"); 1000 root = of_find_node_by_path("/");
998 if (root == NULL) { 1001 if (root == NULL) {
999 printk(KERN_CRIT "pmac_pci_init: can't find root " 1002 printk(KERN_CRIT "pmac_pci_init: can't find root "
@@ -1051,7 +1054,7 @@ void __init pmac_pci_init(void)
1051 * some offset between bus number and domains for now when we 1054 * some offset between bus number and domains for now when we
1052 * assign all busses should help for now 1055 * assign all busses should help for now
1053 */ 1056 */
1054 if (pci_assign_all_buses) 1057 if (ppc_pci_flags & PPC_PCI_REASSIGN_ALL_BUS)
1055 pcibios_assign_bus_offset = 0x10; 1058 pcibios_assign_bus_offset = 0x10;
1056#endif 1059#endif
1057} 1060}