diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2008-12-23 13:59:04 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2008-12-23 13:59:04 +0000 |
commit | 067e900705377b83a21fd7cb0cebd9f850e8d379 (patch) | |
tree | c678218126007169dc9d861af2b7699e8e09ad43 | |
parent | e90ad86d42827a55c47864744b67f83e3327bda6 (diff) | |
download | upstream-067e900705377b83a21fd7cb0cebd9f850e8d379.tar.gz upstream-067e900705377b83a21fd7cb0cebd9f850e8d379.tar.bz2 upstream-067e900705377b83a21fd7cb0cebd9f850e8d379.zip |
use SoC specific irq dispatch code
SVN-Revision: 13736
3 files changed, 24 insertions, 5 deletions
diff --git a/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h index f5de7c0330..a322929ef0 100644 --- a/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h +++ b/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/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) diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c index eda7474418..0d5af43d7c 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 f5de7c0330..a322929ef0 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) |