diff options
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 f5de7c033..a322929ef 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 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) | 
