These are similar to machine_initcalls, but works for the PCI fixups.
We need this to apply machine specific fixups for the same PCI devices.

Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
 include/asm-powerpc/pci.h |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/include/asm-powerpc/pci.h b/include/asm-powerpc/pci.h
index a05a942..03fdc58 100644
--- a/include/asm-powerpc/pci.h
+++ b/include/asm-powerpc/pci.h
@@ -224,5 +224,21 @@ extern void pci_resource_to_user(const struct pci_dev 
*dev, int bar,
 extern void pcibios_do_bus_setup(struct pci_bus *bus);
 extern void pcibios_fixup_of_probed_bus(struct pci_bus *bus);
 
+#define DEFINE_MACHINE_PCIFIXUP(type, mach, vendor, device, hook)        \
+       static void __devinit                                            \
+       __machine_pcifixup_##mach##_##hook(struct pci_dev *dev) {        \
+               if (machine_is(mach))                                    \
+                       hook(dev);                                       \
+       }                                                                \
+       DECLARE_PCI_FIXUP_##type(vendor, device,                         \
+                                __machine_pcifixup_##mach##_##hook)
+
+#define MACH_PCI_FIXUP_EARLY(mach, vendor, device, hook) \
+       DEFINE_MACHINE_PCIFIXUP(EARLY, mach, vendor, device, hook)
+#define MACH_PCI_FIXUP_FINAL(mach, vendor, device, hook) \
+       DEFINE_MACHINE_PCIFIXUP(FINAL, mach, vendor, device, hook)
+#define MACH_PCI_FIXUP_HEADER(mach, vendor, device, hook) \
+       DEFINE_MACHINE_PCIFIXUP(HEADER, mach, vendor, device, hook)
+
 #endif /* __KERNEL__ */
 #endif /* __ASM_POWERPC_PCI_H */
-- 
1.5.5.1

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to