diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2007-12-19 22:54:46 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-12-20 00:18:07 -0500 |
commit | fc3fb71c3e1850a6a1099dd1cb7bcd7e69ac7b73 (patch) | |
tree | c9885bd47237c6e09b42a3c42496b5865c0caa02 /arch/powerpc/platforms/powermac | |
parent | b9baa20b0a50947f2e86d7775c9dba87c0d946ef (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.c | 7 |
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, | |||
725 | static int __init setup_uninorth(struct pci_controller *hose, | 725 | static 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 = ¯isc_pci_ops; | 730 | hose->ops = ¯isc_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 | } |