diff options
Diffstat (limited to 'arch/powerpc/platforms/83xx/pci.c')
-rw-r--r-- | arch/powerpc/platforms/83xx/pci.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/powerpc/platforms/83xx/pci.c b/arch/powerpc/platforms/83xx/pci.c index 774457d09e94..c0e2b89154e5 100644 --- a/arch/powerpc/platforms/83xx/pci.c +++ b/arch/powerpc/platforms/83xx/pci.c | |||
@@ -33,19 +33,14 @@ | |||
33 | #define DBG(x...) | 33 | #define DBG(x...) |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | int mpc83xx_pci2_busno; | 36 | int mpc83xx_exclude_device(struct pci_controller *hose, u_char bus, u_char devfn) |
37 | |||
38 | int mpc83xx_exclude_device(u_char bus, u_char devfn) | ||
39 | { | 37 | { |
40 | if (bus == 0 && PCI_SLOT(devfn) == 0) | 38 | if ((bus == hose->first_busno) && PCI_SLOT(devfn) == 0) |
41 | return PCIBIOS_DEVICE_NOT_FOUND; | 39 | return PCIBIOS_DEVICE_NOT_FOUND; |
42 | if (mpc83xx_pci2_busno) | ||
43 | if (bus == (mpc83xx_pci2_busno) && PCI_SLOT(devfn) == 0) | ||
44 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
45 | return PCIBIOS_SUCCESSFUL; | 40 | return PCIBIOS_SUCCESSFUL; |
46 | } | 41 | } |
47 | 42 | ||
48 | int __init add_bridge(struct device_node *dev) | 43 | int __init mpc83xx_add_bridge(struct device_node *dev) |
49 | { | 44 | { |
50 | int len; | 45 | int len; |
51 | struct pci_controller *hose; | 46 | struct pci_controller *hose; |
@@ -66,11 +61,10 @@ int __init add_bridge(struct device_node *dev) | |||
66 | " bus 0\n", dev->full_name); | 61 | " bus 0\n", dev->full_name); |
67 | } | 62 | } |
68 | 63 | ||
69 | hose = pcibios_alloc_controller(); | 64 | pci_assign_all_buses = 1; |
65 | hose = pcibios_alloc_controller(dev); | ||
70 | if (!hose) | 66 | if (!hose) |
71 | return -ENOMEM; | 67 | return -ENOMEM; |
72 | hose->arch_data = dev; | ||
73 | hose->set_cfg_type = 1; | ||
74 | 68 | ||
75 | hose->first_busno = bus_range ? bus_range[0] : 0; | 69 | hose->first_busno = bus_range ? bus_range[0] : 0; |
76 | hose->last_busno = bus_range ? bus_range[1] : 0xff; | 70 | hose->last_busno = bus_range ? bus_range[1] : 0xff; |
@@ -86,8 +80,6 @@ int __init add_bridge(struct device_node *dev) | |||
86 | if ((rsrc.start & 0xfffff) == 0x8600) { | 80 | if ((rsrc.start & 0xfffff) == 0x8600) { |
87 | setup_indirect_pci(hose, immr + 0x8380, immr + 0x8384); | 81 | setup_indirect_pci(hose, immr + 0x8380, immr + 0x8384); |
88 | primary = 0; | 82 | primary = 0; |
89 | hose->bus_offset = hose->first_busno; | ||
90 | mpc83xx_pci2_busno = hose->first_busno; | ||
91 | } | 83 | } |
92 | 84 | ||
93 | printk(KERN_INFO "Found MPC83xx PCI host bridge at 0x%016llx. " | 85 | printk(KERN_INFO "Found MPC83xx PCI host bridge at 0x%016llx. " |