diff options
author | Felix Fietkau <nbd@nbd.name> | 2020-01-30 17:42:55 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2020-02-14 10:06:08 +0100 |
commit | 61c4fa72196845b060147c044af7b25632ff6376 (patch) | |
tree | d8ceb0abad47b1915d0a0d3f2afc1f8550cbd27e /drivers/net/wireless/mediatek/mt76/mt7615/mmio.c | |
parent | f347f81a8ac98b5a2d67777222f0fce7d21685be (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.c | 10 |
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; } |