diff options
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/pci_32.c | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci_64.c | 8 |
2 files changed, 16 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 0d9ff72e2852..853ecef81780 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/errno.h> | 12 | #include <linux/errno.h> |
13 | #include <linux/bootmem.h> | 13 | #include <linux/bootmem.h> |
14 | #include <linux/irq.h> | 14 | #include <linux/irq.h> |
15 | #include <linux/list.h> | ||
15 | 16 | ||
16 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
17 | #include <asm/io.h> | 18 | #include <asm/io.h> |
@@ -1338,6 +1339,7 @@ void __init pcibios_fixup_bus(struct pci_bus *bus) | |||
1338 | struct pci_controller *hose = (struct pci_controller *) bus->sysdata; | 1339 | struct pci_controller *hose = (struct pci_controller *) bus->sysdata; |
1339 | unsigned long io_offset; | 1340 | unsigned long io_offset; |
1340 | struct resource *res; | 1341 | struct resource *res; |
1342 | struct pci_dev *dev; | ||
1341 | int i; | 1343 | int i; |
1342 | 1344 | ||
1343 | io_offset = (unsigned long)hose->io_base_virt - isa_io_base; | 1345 | io_offset = (unsigned long)hose->io_base_virt - isa_io_base; |
@@ -1390,8 +1392,16 @@ void __init pcibios_fixup_bus(struct pci_bus *bus) | |||
1390 | } | 1392 | } |
1391 | } | 1393 | } |
1392 | 1394 | ||
1395 | /* Platform specific bus fixups */ | ||
1393 | if (ppc_md.pcibios_fixup_bus) | 1396 | if (ppc_md.pcibios_fixup_bus) |
1394 | ppc_md.pcibios_fixup_bus(bus); | 1397 | ppc_md.pcibios_fixup_bus(bus); |
1398 | |||
1399 | /* Read default IRQs and fixup if necessary */ | ||
1400 | list_for_each_entry(dev, &bus->devices, bus_list) { | ||
1401 | pci_read_irq_line(dev); | ||
1402 | if (ppc_md.pci_irq_fixup) | ||
1403 | ppc_md.pci_irq_fixup(dev); | ||
1404 | } | ||
1395 | } | 1405 | } |
1396 | 1406 | ||
1397 | char __init *pcibios_setup(char *str) | 1407 | char __init *pcibios_setup(char *str) |
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index 80ae9ea15cdc..9a6bb80a8cd4 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -1215,8 +1215,12 @@ static void __devinit do_bus_setup(struct pci_bus *bus) | |||
1215 | list_for_each_entry(dev, &bus->devices, bus_list) | 1215 | list_for_each_entry(dev, &bus->devices, bus_list) |
1216 | ppc_md.iommu_dev_setup(dev); | 1216 | ppc_md.iommu_dev_setup(dev); |
1217 | 1217 | ||
1218 | if (ppc_md.irq_bus_setup) | 1218 | /* Read default IRQs and fixup if necessary */ |
1219 | ppc_md.irq_bus_setup(bus); | 1219 | list_for_each_entry(dev, &bus->devices, bus_list) { |
1220 | pci_read_irq_line(dev); | ||
1221 | if (ppc_md.pci_irq_fixup) | ||
1222 | ppc_md.pci_irq_fixup(dev); | ||
1223 | } | ||
1220 | } | 1224 | } |
1221 | 1225 | ||
1222 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 1226 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) |