diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2011-11-14 11:49:53 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2011-11-14 11:49:53 +0000 |
commit | e52269364a5014ff734e20aae606f6a89dce66a5 (patch) | |
tree | 22df13b7d90aac3c9d8e790af849cf523be30a3a /target/linux/ar71xx/files | |
parent | 3104d705528c4bffa9ae6b6cff5b3fe0a5e45abe (diff) | |
download | master-31e0f0ae-e52269364a5014ff734e20aae606f6a89dce66a5.tar.gz master-31e0f0ae-e52269364a5014ff734e20aae606f6a89dce66a5.tar.bz2 master-31e0f0ae-e52269364a5014ff734e20aae606f6a89dce66a5.zip |
ar71xx: flush DDR writeback buffers for WMAC and PCIe on AR934X
SVN-Revision: 29108
Diffstat (limited to 'target/linux/ar71xx/files')
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/irq.c | 12 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h | 1 |
2 files changed, 7 insertions, 6 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c index 7165ca97db..c4297d399a 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c @@ -239,14 +239,15 @@ static void ar934x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc) status = ar71xx_reset_rr(AR934X_RESET_REG_PCIE_WMAC_INT_STATUS); - if (status & AR934X_PCIE_WMAC_INT_PCIE_ALL) + if (status & AR934X_PCIE_WMAC_INT_PCIE_ALL) { + ar71xx_ddr_flush(AR934X_DDR_REG_FLUSH_PCIE); generic_handle_irq(AR934X_IP2_IRQ_PCIE); - - else if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) + } else if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) { + ar71xx_ddr_flush(AR934X_DDR_REG_FLUSH_WMAC); generic_handle_irq(AR934X_IP2_IRQ_WMAC); - - else + } else { spurious_interrupt(); + } enable_irq(irq); } @@ -297,7 +298,6 @@ static void ar933x_ip2_handler(void) static void ar934x_ip2_handler(void) { - ar71xx_ddr_flush(AR934X_DDR_REG_FLUSH_PCIE); do_IRQ(AR71XX_CPU_IRQ_IP2); } diff --git a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h index fe2d9a32bc..4068e91105 100644 --- a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h +++ b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h @@ -533,6 +533,7 @@ void ar71xx_gpio_function_setup(u32 set, u32 clear); #define AR934X_DDR_REG_FLUSH_GE1 0xa0 #define AR934X_DDR_REG_FLUSH_USB 0xa4 #define AR934X_DDR_REG_FLUSH_PCIE 0xa8 +#define AR934X_DDR_REG_FLUSH_WMAC 0xac #define PCI_WIN0_OFFS 0x10000000 |