diff options
Diffstat (limited to 'target/linux/ar71xx/files/arch')
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/irq.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c index eda747441..0d5af43d7 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c @@ -84,7 +84,6 @@ static void __init ar71xx_pci_irq_init(void) setup_irq(AR71XX_CPU_IRQ_PCI, &ar71xx_pci_irqaction); } - #endif /* CONFIG_PCI */ static void ar71xx_gpio_irq_dispatch(void) @@ -241,6 +240,13 @@ static void __init ar71xx_misc_irq_init(void) setup_irq(AR71XX_CPU_IRQ_MISC, &ar71xx_misc_irqaction); } +static void ar913x_wmac_irq_dispatch(void) +{ + do_IRQ(AR71XX_CPU_IRQ_WMAC); +} + +static void (* ar71xx_ip2_irq_handler)(void) = spurious_interrupt; + asmlinkage void plat_irq_dispatch(void) { unsigned long pending; @@ -250,10 +256,8 @@ asmlinkage void plat_irq_dispatch(void) if (pending & STATUSF_IP7) do_IRQ(AR71XX_CPU_IRQ_TIMER); -#ifdef CONFIG_PCI else if (pending & STATUSF_IP2) - ar71xx_pci_irq_dispatch(); -#endif + ar71xx_ip2_irq_handler(); else if (pending & STATUSF_IP4) do_IRQ(AR71XX_CPU_IRQ_GE0); @@ -277,9 +281,22 @@ void __init arch_init_irq(void) ar71xx_misc_irq_init(); + switch (ar71xx_soc) { + case AR71XX_SOC_AR7130: + case AR71XX_SOC_AR7141: + case AR71XX_SOC_AR7161: #ifdef CONFIG_PCI - ar71xx_pci_irq_init(); + ar71xx_pci_irq_init(); + ar71xx_ip2_irq_handler = ar71xx_pci_irq_dispatch; #endif + break; + case AR71XX_SOC_AR9130: + case AR71XX_SOC_AR9132: + ar71xx_ip2_irq_handler = ar913x_wmac_irq_dispatch; + break; + default: + BUG(); + } ar71xx_gpio_irq_init(); } |