aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-12-09 01:52:13 -0500
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-12-16 21:55:51 -0500
commit2d1c861871d767153538a77c498752b36d4bb4b8 (patch)
tree2ed80140487cd68e539c55876ba361199a4b92c1 /include
parent7e8af37a9a71b479f58d2fd5f0ddaa6780c51f11 (diff)
PCI/cardbus: Add a fixup hook and fix powerpc
The cardbus code creates PCI devices without ever going through the necessary fixup bits and pieces that normal PCI devices go through. There's in fact a commented out call to pcibios_fixup_bus() in there, it's commented because ... it doesn't work. I could make pcibios_fixup_bus() do the right thing on powerpc easily but I felt it cleaner instead to provide a specific hook pci_fixup_cardbus for which a weak empty implementation is provided by the PCI core. This fixes cardbus on powerbooks and probably all other PowerPC platforms which was broken completely for ever on some platforms and since 2.6.31 on others such as PowerBooks when we made the DMA ops mandatory (since those are setup by the fixups). Acked-by: Dominik Brodowski <linux@dominikbrodowski.net> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/pci.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index bf1e67080849..5da0690d9cee 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -566,6 +566,9 @@ void pcibios_align_resource(void *, struct resource *, resource_size_t,
566 resource_size_t); 566 resource_size_t);
567void pcibios_update_irq(struct pci_dev *, int irq); 567void pcibios_update_irq(struct pci_dev *, int irq);
568 568
569/* Weak but can be overriden by arch */
570void pci_fixup_cardbus(struct pci_bus *);
571
569/* Generic PCI functions used internally */ 572/* Generic PCI functions used internally */
570 573
571extern struct pci_bus *pci_find_bus(int domain, int busnr); 574extern struct pci_bus *pci_find_bus(int domain, int busnr);