提交 9325a28c 编写于 作者: T Thomas Gleixner 提交者: H. Peter Anvin

x86: Add pcibios_fixup_irqs to x86_init

Platforms like Moorestown want to override the pcibios_fixup_irqs
default function. Add it to x86_init.pci.
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
LKML-Reference: <43F901BD926A4E43B106BF17856F07559FB80D00@orsmsx508.amr.corp.intel.com>
Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: NJacob Pan <jacob.jun.pan@intel.com>
Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
上级 ab3b3793
...@@ -113,6 +113,7 @@ extern int __init pci_acpi_init(void); ...@@ -113,6 +113,7 @@ extern int __init pci_acpi_init(void);
extern void __init pcibios_irq_init(void); extern void __init pcibios_irq_init(void);
extern int __init pcibios_init(void); extern int __init pcibios_init(void);
extern int pci_legacy_init(void); extern int pci_legacy_init(void);
extern void pcibios_fixup_irqs(void);
/* pci-mmconfig.c */ /* pci-mmconfig.c */
...@@ -188,7 +189,9 @@ static inline void mmio_config_writel(void __iomem *pos, u32 val) ...@@ -188,7 +189,9 @@ static inline void mmio_config_writel(void __iomem *pos, u32 val)
# define x86_default_pci_init pci_legacy_init # define x86_default_pci_init pci_legacy_init
# endif # endif
# define x86_default_pci_init_irq pcibios_irq_init # define x86_default_pci_init_irq pcibios_irq_init
# define x86_default_pci_fixup_irqs pcibios_fixup_irqs
#else #else
# define x86_default_pci_init NULL # define x86_default_pci_init NULL
# define x86_default_pci_init_irq NULL # define x86_default_pci_init_irq NULL
# define x86_default_pci_fixup_irqs NULL
#endif #endif
...@@ -102,10 +102,12 @@ struct x86_init_iommu { ...@@ -102,10 +102,12 @@ struct x86_init_iommu {
* struct x86_init_pci - platform specific pci init functions * struct x86_init_pci - platform specific pci init functions
* @init: platform specific pci init * @init: platform specific pci init
* @init_irq: platform specific pci irq init * @init_irq: platform specific pci irq init
* @fixup_irqs: platform specific pci irq fixup
*/ */
struct x86_init_pci { struct x86_init_pci {
int (*init)(void); int (*init)(void);
void (*init_irq)(void); void (*init_irq)(void);
void (*fixup_irqs)(void);
}; };
/** /**
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
* For licencing details see kernel-base/COPYING * For licencing details see kernel-base/COPYING
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/ioport.h>
#include <asm/bios_ebda.h> #include <asm/bios_ebda.h>
#include <asm/paravirt.h> #include <asm/paravirt.h>
...@@ -75,6 +76,7 @@ struct x86_init_ops x86_init __initdata = { ...@@ -75,6 +76,7 @@ struct x86_init_ops x86_init __initdata = {
.pci = { .pci = {
.init = x86_default_pci_init, .init = x86_default_pci_init,
.init_irq = x86_default_pci_init_irq, .init_irq = x86_default_pci_init_irq,
.fixup_irqs = x86_default_pci_fixup_irqs,
}, },
}; };
......
...@@ -1016,7 +1016,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign) ...@@ -1016,7 +1016,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
return 1; return 1;
} }
static void __init pcibios_fixup_irqs(void) void __init pcibios_fixup_irqs(void)
{ {
struct pci_dev *dev = NULL; struct pci_dev *dev = NULL;
u8 pin; u8 pin;
...@@ -1142,7 +1142,7 @@ void __init pcibios_irq_init(void) ...@@ -1142,7 +1142,7 @@ void __init pcibios_irq_init(void)
pirq_table = NULL; pirq_table = NULL;
} }
pcibios_fixup_irqs(); x86_init.pci.fixup_irqs();
if (io_apic_assign_pci_irqs && pci_routeirq) { if (io_apic_assign_pci_irqs && pci_routeirq) {
struct pci_dev *dev = NULL; struct pci_dev *dev = NULL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册