28 lines
681 B
Diff
28 lines
681 B
Diff
|
--- 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();
|
||
|
}
|
||
|
}
|
||
|
|