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: Thomas Gleixner <tglx@linutronix.de> LKML-Reference: <43F901BD926A4E43B106BF17856F07559FB80D00@orsmsx508.amr.corp.intel.com> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Jacob Pan <jacob.jun.pan@intel.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
Родитель
ab3b37937e
Коммит
9325a28ce2
|
@ -113,6 +113,7 @@ extern int __init pci_acpi_init(void);
|
|||
extern void __init pcibios_irq_init(void);
|
||||
extern int __init pcibios_init(void);
|
||||
extern int pci_legacy_init(void);
|
||||
extern void pcibios_fixup_irqs(void);
|
||||
|
||||
/* pci-mmconfig.c */
|
||||
|
||||
|
@ -188,7 +189,9 @@ static inline void mmio_config_writel(void __iomem *pos, u32 val)
|
|||
# define x86_default_pci_init pci_legacy_init
|
||||
# endif
|
||||
# define x86_default_pci_init_irq pcibios_irq_init
|
||||
# define x86_default_pci_fixup_irqs pcibios_fixup_irqs
|
||||
#else
|
||||
# define x86_default_pci_init NULL
|
||||
# define x86_default_pci_init_irq NULL
|
||||
# define x86_default_pci_fixup_irqs NULL
|
||||
#endif
|
||||
|
|
|
@ -102,10 +102,12 @@ struct x86_init_iommu {
|
|||
* struct x86_init_pci - platform specific pci init functions
|
||||
* @init: platform specific pci init
|
||||
* @init_irq: platform specific pci irq init
|
||||
* @fixup_irqs: platform specific pci irq fixup
|
||||
*/
|
||||
struct x86_init_pci {
|
||||
int (*init)(void);
|
||||
void (*init_irq)(void);
|
||||
void (*fixup_irqs)(void);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
* For licencing details see kernel-base/COPYING
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/ioport.h>
|
||||
|
||||
#include <asm/bios_ebda.h>
|
||||
#include <asm/paravirt.h>
|
||||
|
@ -75,6 +76,7 @@ struct x86_init_ops x86_init __initdata = {
|
|||
.pci = {
|
||||
.init = x86_default_pci_init,
|
||||
.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)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static void __init pcibios_fixup_irqs(void)
|
||||
void __init pcibios_fixup_irqs(void)
|
||||
{
|
||||
struct pci_dev *dev = NULL;
|
||||
u8 pin;
|
||||
|
@ -1142,7 +1142,7 @@ void __init pcibios_irq_init(void)
|
|||
pirq_table = NULL;
|
||||
}
|
||||
|
||||
pcibios_fixup_irqs();
|
||||
x86_init.pci.fixup_irqs();
|
||||
|
||||
if (io_apic_assign_pci_irqs && pci_routeirq) {
|
||||
struct pci_dev *dev = NULL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче