From 2b020ab72106f0529f63a2c9c27ff4933f65494e Mon Sep 17 00:00:00 2001 From: juhosg Date: Tue, 23 Dec 2008 13:59:04 +0000 Subject: [ar71xx] use SoC specific irq dispatch code git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13736 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ar71xx/files/arch/mips/ar71xx/irq.c | 27 ++++++++++++++++++---- .../files/include/asm-mips/mach-ar71xx/ar71xx.h | 1 + 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'target/linux/ar71xx/files') 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(); } diff --git a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h index f5de7c033..a322929ef 100644 --- a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h +++ b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h @@ -66,6 +66,7 @@ #define AR71XX_PCI_IRQ_COUNT 4 #define AR71XX_CPU_IRQ_PCI (AR71XX_CPU_IRQ_BASE + 2) +#define AR71XX_CPU_IRQ_WMAC (AR71XX_CPU_IRQ_BASE + 2) #define AR71XX_CPU_IRQ_USB (AR71XX_CPU_IRQ_BASE + 3) #define AR71XX_CPU_IRQ_GE0 (AR71XX_CPU_IRQ_BASE + 4) #define AR71XX_CPU_IRQ_GE1 (AR71XX_CPU_IRQ_BASE + 5) -- cgit v1.2.3