|
@@ -0,0 +1,27 @@
|
|
|
+--- a/arch/mips/ath79/irq.c
|
|
|
++++ b/arch/mips/ath79/irq.c
|
|
|
+@@ -69,15 +69,21 @@ static void qca953x_ip2_irq_dispatch(str
|
|
|
+ u32 status;
|
|
|
+
|
|
|
+ status = ath79_reset_rr(QCA953X_RESET_REG_PCIE_WMAC_INT_STATUS);
|
|
|
++ status &= QCA953X_PCIE_WMAC_INT_PCIE_ALL | QCA953X_PCIE_WMAC_INT_WMAC_ALL;
|
|
|
++
|
|
|
++ if (status == 0) {
|
|
|
++ spurious_interrupt();
|
|
|
++ return;
|
|
|
++ }
|
|
|
+
|
|
|
+ if (status & QCA953X_PCIE_WMAC_INT_PCIE_ALL) {
|
|
|
+ ath79_ddr_wb_flush(3);
|
|
|
+ generic_handle_irq(ATH79_IP2_IRQ(0));
|
|
|
+- } else if (status & QCA953X_PCIE_WMAC_INT_WMAC_ALL) {
|
|
|
++ }
|
|
|
++
|
|
|
++ if (status & QCA953X_PCIE_WMAC_INT_WMAC_ALL) {
|
|
|
+ ath79_ddr_wb_flush(4);
|
|
|
+ generic_handle_irq(ATH79_IP2_IRQ(1));
|
|
|
+- } else {
|
|
|
+- spurious_interrupt();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|