summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2020-01-30 17:42:55 +0100
committerFelix Fietkau <nbd@nbd.name>2020-02-14 10:06:08 +0100
commit61c4fa72196845b060147c044af7b25632ff6376 (patch)
treed8ceb0abad47b1915d0a0d3f2afc1f8550cbd27e /drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
parentf347f81a8ac98b5a2d67777222f0fce7d21685be (diff)
mt76: mt7615: implement hardware reset support
When the firmware detects a problem, it needs the host to stop/reset DMA and resume it again when the hardware state has been reset. Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt7615/mmio.c')
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt7615/mmio.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c b/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
index fcd8a8b4e816..0b445471b6e8 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
@@ -53,6 +53,16 @@ static irqreturn_t mt7615_irq_handler(int irq, void *dev_instance)
napi_schedule(&dev->mt76.napi[1]);
}
+ if (intr & MT_INT_MCU_CMD) {
+ u32 val = mt76_rr(dev, MT_MCU_CMD);
+
+ if (val & MT_MCU_CMD_ERROR_MASK) {
+ dev->reset_state = val;
+ ieee80211_queue_work(mt76_hw(dev), &dev->reset_work);
+ wake_up(&dev->reset_wait);
+ }
+ }
+
return IRQ_HANDLED;
}