mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-20 08:22:39 +00:00
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:
parent
ab3b37937e
commit
9325a28ce2
@ -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)
|
|||||||
# 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 {
|
|||||||
* 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 @@
|
|||||||
* 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 = {
|
|||||||
.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)
|
|||||||
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)
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user